Programing in ATMEGA izmantojot AVR Studio 4

N

nXn

Guest
Hi ... Es esmu jauns, lai avr programing.I bija devusies doma dažu datu lapas un ir veikti daži mēģina proraming.Starting off ar pamata programmu lasījumā, ja pin ir iestatīts uz augstu un tad, ja augsts, noteikt citu pin augstu. Kad es izmantot zemāk kodu un mēģiniet tas doesn't sniegt output.The labāko daļu ir tā, ka kompilators nav redzams kļūdas. ja PINC.0 == 1 PORTB = 0xff;. Es neesmu pārliecināts, vai PINC.0 paziņojums ir tiesības plz help ...
 
hi ... uu, var izmantot šādu kodu ... if (bit_is_set (PINC, 0)), lai nolasītu pin vērtību ..
 
pārliecinieties, ka jūs liktu datu virziens reģistru ..
 
turpinot nxn jautājums: man bija to pašu jautājumu sakthisa teica risinājums, bet to, kas ir noteikums, kāpēc nav tas strādā kā nxn kodu un kas notiks, ja es gribēju pretējo, piemēram, es gribēju to zemā nav liela? paldies
 
Jūs nevarat izmantot mazliet portu, izmantojot kodu, piemēram, PINA.0 vai PORTA.2, to var izdarīt tikai codevisionAVR jo kompilators tiek veikta to atzīt, jo AVRstudio tas nav sastādīt. Ja vēlaties izmantot kodu, piemēram, tas var rakstīt [sintakses = c] / / struktūru, kas ļautu bitu lauks operācijas, nosaukums reklāmguvumi: PORTA.0 -> PORT_A.b0 PORTB.7 -> PORT_B.b7 typedef struktūrai {uint8_t b0: 1; uint8_t b1: 1; uint8_t b2: 1; uint8_t b3: 1; uint8_t b4: 1; uint8_t B5: 1; uint8_t B6: 1; uint8_t B7: 1;} biti, / / ​​define visas ostas jūsu mikrokontrolleru # define PORT_A (* (gaistošo biti *) & PORTA) # define PIN_A (* (gaistošo biti *) & Pina) # define DDR_A (* (gaistošo biti *) & DDRA) # define PORT_B (* (gaistošo biti *) & PORTB) # define PIN_B (* (gaistošo biti *) & PINB) # define DDR_B (* (gaistošo biti *) & DDRB) / / tad jūs varat izmantot īpašās biti kā šis, lai rakstīt vai lasīt īpašu biti PORT_A.b0 = 1; / / rakstīt vērtību PORTA bit 0 PIN_B.b4 = 0; / / rakstīt vērtību PINB bit 4 [/sintakse] labāk un ātrāk ir izmantot šo [sintakse = c] / / pievienotu šo definē # define SETBIT (adrese, BIT) (ADDRESS | = (1
 
es mēģināju pirmo kodu, taču tas nelīdzēja .... I wrote to kā šī: int galvenais (spēkā neesošs) {typedef struktūrai {uint8_t b0: 1; uint8_t b1: 1; uint8_t b2: 1; uint8_t b3: 1; uint8_t b4: 1; uint8_t B5: 1; uint8_t B6: 1; uint8_t B7: 1;} biti, / / ​​define visiem jūsu mikrokontrolleru ostās # define PORT_A (* (gaistošo biti *) & PORTA) # define PIN_A (* (gaistošo biti *) & Pina) # define DDR_A (* (gaistošo biti * ) & DDRA) # define PORT_B (* (gaistošo biti *) & PORTB) # define PIN_B (* (gaistošo biti *) & PINB) # define DDR_B (* (gaistošo biti *) & DDRB) / / tad jūs varat izmantot īpašās biti, piemēram, šo / / PORTA.b0 = 1; / / PINB.b4 = 0; DDRA = 0xFF; DDRD = 0xFF; DDRC = 0x00; tajā pašā laikā (1) {if (PINB.b4 = 0) PORTD = 0xFF, ja (bit_is_clear (PINC, 0)) PORTA = 0xFF;} atgriezties 0;} arī bit_is_clear (PINC, 0) nestrādāja, bet anyway do u zināt, labākais veids, kā iepazīt un izprast c valodu avr studio, piemēram, ebooks, ņemiet vērā, ka es zinu Programmēšana C + + par consle pieteikumu .... paldies ....
 
Jā, tas bija mana kļūda, jums ir izmantot PORT_B.b0 vai PORT_A.b1 , vai izmantot savu pielāgoto nosaukumu, bet tiem jābūt undefined (piemēram PORTA jau tiek izmantots un aprunāt izmantot) tādēļ, ja maināt līnijas [sintakses = c] typedef struktūrai {uint8_t b0: 1; uint8_t bit1: 1; uint8_t bit2: 1; uint8_t bit3: 1; uint8_t bit4: 1; uint8_t bit5: 1; uint8_t bit6: 1; uint8_t bit7: 1;} biti, / / ​​define visas ostas jūsu mikrokontrolleru # define APORT (* (gaistošo biti *) & PORTA) # define APIN (* (gaistošo biti *) & Pina) # define adr (* (gaistošo biti *) & DDRA) [/sintakse], pēc tam jūs varat izmantot APORT.bit0 = 1; Jūs arī vēlaties, lai definētu šiem pirmajās rindās kodu pēc # include, lai tie būtu pieejami jebkurā funkciju pirms main. kaut ko līdzīgu , ja bit_is_clear (PORTB, 1) {}; darbojas naudas sodu par mani. Par tutorials varat apskatīt AVRfreaks forumā Alex
 
i mēģināja kodu vēlreiz bez kļūdām, taču tas joprojām ir does't darbs ....: # ietvert int galvenais (spēkā neesošs) {typedef struktūrai {uint8_t b0: 1; uint8_t b1: 1; uint8_t b2: 1; uint8_t B3: 1; uint8_t b4: 1; uint8_t B5: 1; uint8_t B6: 1; uint8_t B7: 1;} biti, / / ​​define visas ostas jūsu mikrokontrolleru # define PORT_A (* (gaistošo biti *) & PORTA) # define PIN_A ( * (gaistošo biti *) & Pina) # define DDR_A (* (gaistošo biti *) & DDRA) # define PORT_B (* (gaistošo biti *) & PORTB) # define PIN_B (* (gaistošo biti *) & PINB) # define DDR_B (* ( gaistošo biti *) & DDRB) / / tad jūs varat izmantot īpašās biti, piemēram, šo / / PORTA.b0 = 1; / / PINB.b4 = 0; DDRA = 0xFF; DDRD = 0xFF; DDRC = 0x00; tajā pašā laikā (1) {if (PIN_B.b4 == 0) PORTD = 0xFF, ja bit_is_clear (PORTC, 0) {}; PORTA = 0xFF;} atgriezties 0;} tai vajadzētu ieslēgt visas gaismas diodes uz ostas D off, kad es savienot pin B4 līdz zemes un tā kļūst visas diodes uz porta, kad es savienot pin C0 ..... bet tas, kas notiek ir tas, ka visi LED r apgaismojums, jo es ieslēdziet ..... foxbrain
 
[Sintakses = c] if (PIN_B.b4 == 0) PORTD = 0xFF; / / darbojas naudas sodu AVRstudio debbuger ja bit_is_clear (PORTC, 0) {} / / Jums nav pievienoti kodu neizpilda, ja šī Ir taisnība, PORTA = 0xFF, / / ​​tas ir vienmēr veic, / / ​​Jums, iespējams, vēlētos darīt, ja bit_is_clear (PORTC, 0) {PORTA = 0xFF;} / / vai, ja bit_is_clear (PORTC, 0) PORTA = 0xFF; [/ sintakse ]
Kad es izmantot zemāk kodu un mēģiniet tas doesn't sniegt output.The labāko daļu ir tā, ka kompilators nav redzams kļūdas. ja PINC.0 == 1 PORTB = 0xff;. Es neesmu pārliecināts, vai PINC.0 paziņojums ir tiesības plz help ...
Kā jau es teicu iepriekšējā amatā jūs nevarat izmantot šo ceļu ar AVRstudio, un tas nav apkopotu manā AVRstudio4, man kļūda [COLOR = "red "]../ test3.c: 36 : kļūda: sauc objekts 1 "nav funkcija [/color] Alex
 
Kā pareizi lasīt pin ir, kad jūs apsūdzēt signālu. Ja pin ir savienots ar slēdzi vai ierīci, parasti ir tapas uz reālām signāliem. Lai pārliecinātos, ka jums lasīt vēlamo līmeni, Jums ir lasīt pin uz laiku. Loģika vērtību iegūst ar balsu vairākumu paraugu denonsēt periodā. Tādā veidā jūs izvairītos no netīšas tapas.
 
Man žēl, jo es esmu vēlu, lai atbildētu ..... alexan_e: ceļam (kods) strādāja thanks a lot, bet kad es izmantoti: ja bit_is_clear (PORTC, 1) {PORTA = 0xFF;} else {PIN_A.b7 == 0;} tas nav darbs, rezultātā ir vienmēr ieslēgts gada.! Tātad, kas ir nepareizi ar to? blind_man: kas ur runā par ir pieņemt skaidru signālu, bez jebkādiem traucējumiem, bet man tas nav nepieciešams, par manu circuit, jo es esmu, ar mērķi, izmantojot slēdzi, kad tā ir connnected uz zemes (0V) anyway, paldies u all. .....
 
Pina lasījuši ievadi stāvokli ostu, jums nāksies izmantot PORTA kontrolēt produkciju. Vēl viena piezīme ir, ka jūs izmantojat [B ]==[/B], nevis = . Lai iestatītu vērtību, jums vajadzēs izmantot = Alex

<span style="color: grey;"><span style="font-size: 10px">---------- Post added at 21:14 ----- ----- Iepriekšējā sūtījums bija pulksten 20:56 ----------</span></span>
Mans ieteikums būtu izmantot SETBIT, CLEARBIT utt tāpat esmu ievietojis iepriekš, tie ir ļoti viegli izmantot. [Sintakses = c] # define SETBIT (adrese, BIT) (ADDRESS | = (1
 
paldies, ka bija labi alex bet tāda, lai izmantotu "!" pirms CHECKBIT lai pārbaudītu, vai tas ir 0 nestrādāja
 
! CHECKBIT darbojas naudas sodu. Es domāju, ka Jums nav izmantot iekavas, ja paziņojums ir jāpievieno iekavās (), CHECKBIT makro jau ir definēts kā kods, kas ir iekavās, bet, ja jūs pievienojat! priekšā, tad jums ir pievienot iekavās, piemēram, tas if (! CHECKBIT (PINC, 1)) Alex
 
ja {SETBIT (PORTD, 4);} (CHECKBIT (PINC, 1)!) else {CLEARBIT (PORTD, 4);}}, kas izskatās tas ir par darbu, bet to, kas notiek ir tas, ka rezultātā vienmēr ir apgaismojums, bet kad es, bet C1 0 tas iedegas augstāk.
 
Vai jūs noteikti PORTD bit 4, kā izejas? (Izmantojot SETBIT (DDRD, 4) ) Ja jums nav, tad pin joprojām ievadi un viss, kas Jums jādara, ir ieslēgt / izslēgt iekšējo pullup rezistors par ostas D. Alex 4 bit
 
Nu es noteikti visās ostās D kā produkciju, izmantojot: DDRD = 0xFF, ja to norādījis pin?
 
Nē, tas ir tas pats. Jūs varat post shematisks noveda savienojumu ar MCU? Alex
 
Kā es domāju, jums nav izmantot rezistors, lai ierobežotu strāvu vada un tas ir kaut kas jums jādara, lai jebkuru ķēdes, kam rezultātā. Pieņemot, ka jūsu Vcc ir 5V, un rezultātā ir aptuveni 2v priekšu sprieguma kritums tad rezistors var aprēķināt, izmantojot R = (Vcc-Vf_led) / Es parasti izmantotās pašreizējās ir par 10-15mA, lai par 10mA mums ir (5V-2V) / 0,01 = 300 ohm (tipisks rezultātā rezistoru, 5v ir aptuveni 220-300 ohm atkarībā LED krāsa un strāva) Jums vienmēr ir ierobežot izejas strāvu ostu, lai nenodarītu kaitējumu MCU. Alex
 

Welcome to EDABoard.com

Sponsor

Back
Top