Satura rādītājs:

AVR mikrokontrollera drošinātāju bitu konfigurācija. LED mirgošanas programmas izveide un augšupielāde mikrokontrollera zibatmiņā: 5 soļi
AVR mikrokontrollera drošinātāju bitu konfigurācija. LED mirgošanas programmas izveide un augšupielāde mikrokontrollera zibatmiņā: 5 soļi

Video: AVR mikrokontrollera drošinātāju bitu konfigurācija. LED mirgošanas programmas izveide un augšupielāde mikrokontrollera zibatmiņā: 5 soļi

Video: AVR mikrokontrollera drošinātāju bitu konfigurācija. LED mirgošanas programmas izveide un augšupielāde mikrokontrollera zibatmiņā: 5 soļi
Video: LDmicro 12: платы Arduino без IDE (лестничное программирование ПЛК микроконтроллера с помощью LDmicro) 2024, Jūnijs
Anonim
Image
Image

Šajā gadījumā mēs izveidosim vienkāršu programmu C kodā un ierakstīsim to mikrokontrollera atmiņā. Mēs uzrakstīsim savu programmu un apkoposim hex failu, izmantojot integrēto izstrādes platformu Atmel Studio. Mēs konfigurēsim drošinātāju bitus un augšupielādēsim hex failu AVR ATMega328P mikrokontrollera atmiņā, izmantojot mūsu pašu programmētāju un programmatūru AVRDUDE.

AVRDUDE - ir programma, lai lejupielādētu un augšupielādētu Atmel AVR mikrokontrolleru mikroshēmas atmiņas. Tas var ieprogrammēt Flash un EEPROM, un, ja to atbalsta sērijas programmēšanas protokols, tas var ieprogrammēt drošinātājus un bloķēt bitus.

1. darbība: rakstīšanas programma un kompilējiet hex failu, izmantojot Atmel Studio

Rakstīšanas programma un kompilējiet hex failu, izmantojot Atmel Studio
Rakstīšanas programma un kompilējiet hex failu, izmantojot Atmel Studio
Rakstīšanas programma un kompilējiet hex failu, izmantojot Atmel Studio
Rakstīšanas programma un kompilējiet hex failu, izmantojot Atmel Studio

Ja jums nav Atmel Studio, lejupielādējiet un instalējiet to:

Šis projekts izmantos C, tāpēc veidņu sarakstā atlasiet GCC C izpildāmā projekta opciju, lai ģenerētu izpildāmu projektu bez kauliem.

Tālāk ir jānorāda, kurai ierīcei projekts tiks izstrādāts. Šis projekts tiks izstrādāts mikrokontrolleram AVR ATMega328P.

Ierakstiet programmas kodu Atmel Studio galvenā avota redaktora apgabalā. Galvenais avota redaktors - šis logs ir pašreizējā projekta avota failu galvenais redaktors. Redaktoram ir pareizrakstības pārbaude un automātiskās pabeigšanas funkcijas.

1. Mums jāpaziņo kompilatoram, ar kādu ātrumu mūsu mikroshēma darbojas, lai tas varētu pareizi aprēķināt kavēšanos.

#ifndef F_CPU

#define F_CPU 16000000UL // stāsta kontroliera kristāla frekvence (16 MHz AVR ATMega328P) #endif

2. Mēs iekļaujam preambulu, kur mēs ievietojam iekļaušanas informāciju no citiem failiem, kas nosaka globālos mainīgos un funkcijas.

#include // galvene, lai iespējotu datu plūsmas kontroli pār tapām. Nosaka tapas, ostas utt.

#include // galvene, lai iespējotu kavēšanās funkciju programmā

3. Pēc preambulas nāk galvenā () funkcija.

int main (void) {

Galvenā () funkcija ir unikāla un atdalīta no visām citām funkcijām. Katrai C programmai ir jābūt tieši vienai galvenajai () funkcijai. Main () ir vieta, kur AVR sāk izpildīt jūsu kodu, kad barošana pirmo reizi tiek ieslēgta, tāpēc tas ir programmas ieejas punkts.

4. Iestatiet PORTB tapu 0 kā izeju.

DDRB = 0b00000001; // Iestatiet PORTB1 kā izvadi

Mēs to darām, ierakstot bināro skaitli datu virzienu reģistram B. Datu virziena reģistrs B ļauj mums ievadīt vai izvadīt reģistra B bitus. Rakstot 1, tie tiek izvadīti, bet 0 - ievadīs. Tā kā mēs pievienojam LED, lai darbotos kā izeja, mēs ierakstām bināru skaitli, padarot PORT B tapu 0 par izvadi.

5. Cilpa.

kamēr (1) {

Šis paziņojums ir cilpa, ko bieži dēvē par galveno cilpu vai notikumu cilpu. Šis kods vienmēr ir patiess; tāpēc tas tiek izpildīts atkal un atkal bezgalīgā ciklā. Tas nekad nebeidzas. Tāpēc gaismas diode mirgos bezgalīgi, ja vien netiks izslēgta barošana no mikrokontrollera vai kods netiks izdzēsts no programmas atmiņas.

6. Ieslēdziet LED, kas piestiprināta pie porta PB0

PORTB = 0b00000001; // ieslēdz LED, kas piestiprināta pie porta PB0

Šī līnija dod 1 PortB PB0. PORTB ir aparatūras reģistrs AVR mikroshēmā, kurā ir 8 tapas PB7-PB0, kas iet no kreisās uz labo pusi. Ievietojot 1 beigās, 1 iegūst PB0; tas nosaka PB0 augstu, kas to ieslēdz. Tāpēc gaismas diode, kas piestiprināta pie tapas PB0, ieslēgsies un iedegsies.

7. Kavēšanās

_kavēšanās_ms (1000); // rada 1 sekundes aizkavi

Šis paziņojums rada 1 sekundes aizkavi, lai gaismas diode ieslēgtos un paliktu ieslēgta tieši 1 sekundi.

8. Izslēdziet visas B tapas, ieskaitot PB0

PORTB = 0b00000000; // Izslēdz visas B tapas, ieskaitot PB0

Šī līnija izslēdz visas 8 porta B tapas tā, ka pat PB0 ir izslēgts, tātad gaismas diode izslēdzas.

9. Vēl viena kavēšanās

_kavēšanās_ms (1000); // rada vēl 1 sekundes aizkavi

Tas izslēdzas tieši uz 1 sekundi, pirms sākat cilpu no jauna un saskaraties ar līniju, kas to atkal ieslēdz, atkārtojot visu procesu. Tas notiek bezgalīgi, tāpēc LED nepārtraukti mirgo un ieslēdzas.

10. Atgriešanās paziņojums

}

atgriešanās (0); // šī līnija nekad netiek sasniegta}

Mūsu koda pēdējā rinda ir atgriešanās (0) paziņojums. Lai gan šis kods nekad netiek izpildīts, jo pastāv bezgalīga cilpa, kas nekad nebeidzas, mūsu programmām, kuras darbojas galddatoros, ir svarīgi, lai operētājsistēma zinātu, vai tās darbojās pareizi vai nē. Šī iemesla dēļ GCC, mūsu kompilators, vēlas, lai katrs galvenais () beidzas ar atgriešanās kodu. Atgriešanās kodi nav nepieciešami AVR kodam, kas darbojas brīvi stāvošā veidā no jebkuras atbalsta operētājsistēmas; tomēr kompilators parādīs brīdinājumu, ja nebeigsiet galveno ar atgriešanos ().

Pēdējais solis ir projekta izveidošana. Tas nozīmē visu objektu failu apkopošanu un beidzot sasaistīšanu, lai ģenerētu izpildāmā faila (.hex) failu. Šis heksadecimālais fails tiek ģenerēts mapē Atkļūdošana, kas atrodas projekta mapē. Šis sešstūra fails ir gatavs ievietošanai mikrokontrollera mikroshēmā.

2. darbība: mikrokontrollera drošinātāju bitu noklusējuma konfigurācijas maiņa

Mikrokontrollera drošinātāju bitu noklusējuma konfigurācijas maiņa
Mikrokontrollera drošinātāju bitu noklusējuma konfigurācijas maiņa
Mikrokontrollera drošinātāju bitu noklusējuma konfigurācijas maiņa
Mikrokontrollera drošinātāju bitu noklusējuma konfigurācijas maiņa
Mikrokontrollera drošinātāju bitu noklusējuma konfigurācijas maiņa
Mikrokontrollera drošinātāju bitu noklusējuma konfigurācijas maiņa

Ir svarīgi atcerēties, ka dažus drošinātāju uzgaļus var izmantot, lai bloķētu noteiktus mikroshēmas aspektus un, iespējams, varētu to ķieģeļot (padarīt to nelietojamu)

Pavisam ATmega328P tiek izmantoti 19 drošinātāju uzgaļi, un tie ir sadalīti trīs dažādos drošinātāju baitos. Trīs no drošinātāju bitiem ir iekļauti paplašinātajā drošinātāju baitā, astoņi - drošinātāju augstajā baitā, bet vēl astoņi - drošinātāju zemajā baitā. Ir arī ceturtais baits, kas tiek izmantots bloķēšanas bitu programmēšanai.

Katrs baits ir 8 biti, un katrs bits ir atsevišķs iestatījums vai karogs. Kad mēs runājam par iestatīšanu, nevis iestatīšanu, ieprogrammētiem, nevis ieprogrammētiem drošinātājiem, mēs faktiski izmantojam bināros. 1 nozīmē, ka nav iestatīts, nav ieprogrammēts, un nulle nozīmē, ka ir iestatīts, ieprogrammēts. Programmējot drošinātājus, varat izmantot bināro apzīmējumu vai biežāk heksadecimālo apzīmējumu.

ATmega 328P mikroshēmās ir iebūvēts RC oscilators ar 8 MHz frekvenci. Jaunas mikroshēmas tiek piegādātas ar šo komplektu kā pulksteņa avotu un CKDIV8 drošinātājs ir aktīvs, kā rezultātā tiek iegūts 1 MHz sistēmas pulkstenis. Sākuma laiks ir iestatīts uz maksimālo un taimauta periods ir iespējots.

Jaunajām ATMega 328P mikroshēmām parasti ir šādi drošinātāju iestatījumi:

Zems drošinātājs = 0x62 (0b01100010)

Augsts drošinātājs = 0xD9 (0b11011001)

Paplašināts drošinātājs = 0xFF (0b11111111)

Mēs izmantosim ATmega 328 mikroshēmu ar ārēju 16MHz kristālu. Tāpēc mums attiecīgi jāprogrammē "Fuse Low Byte" biti.

1. Biti 3-0 kontrolē oscilatora izvēli, un noklusējuma iestatījums 0010 ir izmantot kalibrētu iekšējo RC oscilatoru, ko mēs nevēlamies. Mēs vēlamies, lai mazjaudas kristāla oscilatora darbība būtu no 8,0 līdz 16,0 MHz, tāpēc biti 3-1 (CKSEL [3: 1]) ir jāiestata uz 111.

2. 5. un 4. bits kontrolē palaišanas laiku, un noklusējuma iestatījums 10 ir paredzēts sešu pulksteņa ciklu palaišanas kavēšanai no izslēgšanas un enerģijas taupīšanas, kā arī papildu palaišanas kavēšanās 14 pulksteņa ciklos plus 65 milisekundes pēc atiestatīšanas.

Lai būtu drošs attiecībā uz mazjaudas kristāla oscilatoru, mēs vēlamies maksimālo iespējamo kavēšanos 16 000 pulksteņa ciklu laikā no izslēgšanas un enerģijas taupīšanas, tāpēc SUT [1] ir jāiestata uz 1, kā arī papildu palaišanas aizkave no 14 pulksteņa cikliem plus 65 milisekundes pēc atiestatīšanas, tāpēc SUT [0] ir jāiestata uz 1. Turklāt CKSEL [0] ir jāiestata uz 1.

3. 6. bits kontrolē pulksteņa izeju uz PORTB0, kas mums ir vienalga. Tātad 6. bitu var atstāt iestatītu uz 1.

4. 7. bits kontrolē dalīšanas pa 8 darbību, un noklusējuma iestatījumā 0 ir iespējota funkcija, ko mēs nevēlamies. Tātad 7. bits ir jāmaina no 0 uz 1.

Tāpēc jaunajam drošinātāja zemajam baitam jābūt 11111111, kas heksadecimālā apzīmējumā ir 0xFF

Lai ieprogrammētu "Fuse Low Byte" bitus, mēs varam izmantot mūsu programmētāju (https://www.instructables.com/id/ISP-Programmer-fo…) un programmatūru AVRDUDE. AVRDUDE ir komandrindas utilīta, ko izmanto, lai lejupielādētu no Atmel mikrokontrolleriem un augšupielādētu tos.

Lejupielādēt AVRDUDE:

Pirmkārt, AVRDUDE konfigurācijas failam ir jāpievieno mūsu programmētāja apraksts. Operētājsistēmā Windows konfigurācijas fails parasti atrodas tajā pašā vietā kā AVRDUDE izpildāmais fails.

Ielīmējiet tekstu konfigurācijas failā avrdude.conf:

# ISPProgv1

programmētājs id = "ISPProgv1"; desc = "seriālā porta sitiens, atiestatīšana = dtr sck = rts mosi = txd miso = cts"; tips = "serbb"; savienojuma_tips = sērijas; atiestatīt = 4; sck = 7; mosi = 3; miso = 8;;

Pirms AVRDUDE palaišanas mums saskaņā ar shēmu jāpievieno mikrokontrolleris programmētājam

Atveriet DOS uzvednes logu.

1. Lai apskatītu programmētāju sarakstu, kuru avrdude atbalsta, ierakstiet komandu avrdude -c c. Ja viss ir kārtībā, sarakstā jābūt programmētāja ID "ISPProgv1"

2. Lai skatītu to Atmel ierīču sarakstu, kuras atbalsta avrdude, ierakstiet komandu avrdude -c ISPProgv1. Sarakstā jābūt ierīcei m328p, kas paredzēta Atmel ATMega 328P.

Pēc tam ierakstiet avrdude -c ISPProgv1 –p m328p, komanda pastāstiet avrdude, kāds programmētājs tiek izmantots un kāds Atmel mikrokontrolleris ir pievienots. Tas parāda parakstu ATmega328P heksadecimālā apzīmējumā: 0x1e950f. Tajā ir parādīta drošinātāju bitu programmēšana, kas pašlaik atrodas ATmega328P, arī heksadecimālā apzīmējumā; šādā gadījumā drošinātāju baiti ir ieprogrammēti pēc rūpnīcas noklusējuma.

Pēc tam ierakstiet avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m, Tā ir komanda, lai pastāstītu avrdude, kāds programmētājs tiek izmantots un kāds Atmel mikrokontrolleris ir pievienots, un lai nomainītu drošinātāja zemo baitu uz 0xFF.

Tagad pulksteņa signālam vajadzētu nākt no mazjaudas kristāla oscilatora.

3. darbība. Programmas ierakstīšana ATMega328P mikrokontrollera atmiņā

Programmas ierakstīšana ATMega328P mikrokontrollera atmiņā
Programmas ierakstīšana ATMega328P mikrokontrollera atmiņā
Programmas ierakstīšana ATMega328P mikrokontrollera atmiņā
Programmas ierakstīšana ATMega328P mikrokontrollera atmiņā

Vispirms nokopējiet instrukcijas sākumā izveidoto programmas hex failu katalogā AVRDUDE.

Pēc tam DOS uzvednes logā ierakstiet komandu avrdude –c ISPProgv1 –p m328p –u –U flash: w: [jūsu hex faila nosaukums]

Komanda ieraksta hex failu mikrokontrollera atmiņā. Tagad mikrokontrolleris darbojas saskaņā ar mūsu programmas norādījumiem. Pārbaudīsim!

4. darbība. Pārbaudiet, vai mikrokontrolleris darbojas saskaņā ar mūsu programmas norādījumiem

Pārbaudiet, vai mikrokontrolleris darbojas saskaņā ar mūsu programmas norādījumiem
Pārbaudiet, vai mikrokontrolleris darbojas saskaņā ar mūsu programmas norādījumiem
Pārbaudiet, vai mikrokontrolleris darbojas saskaņā ar mūsu programmas norādījumiem
Pārbaudiet, vai mikrokontrolleris darbojas saskaņā ar mūsu programmas norādījumiem
Pārbaudiet, vai mikrokontrolleris darbojas saskaņā ar mūsu programmas norādījumiem
Pārbaudiet, vai mikrokontrolleris darbojas saskaņā ar mūsu programmas norādījumiem

Savienojiet komponentus saskaņā ar AVR mirgojošās LED shēmas shematisko shēmu

Pirmkārt, mums ir nepieciešama jauda, tāpat kā visām AVR shēmām. AVR mikroshēmas darbībai pietiek ar aptuveni 5 voltu jaudu. To var iegūt no baterijām vai līdzstrāvas barošanas avota. Mēs pievienojam +5 V jaudu 7. tapai un 8. tapu zemei uz maizes dēļa. Starp abām tapām mēs ievietojam 0,1μF keramikas kondensatoru, lai izlīdzinātu barošanas avota jaudu, lai AVR mikroshēma iegūtu vienmērīgu barošanas līniju.

10KΩ rezistors tiek izmantots ierīces ieslēgšanas atiestatīšanai (POR). Kad barošana ir ieslēgta, spriegums kondensatorā būs nulle, tāpēc ierīce tiks atiestatīta (jo atiestatīšana ir aktīva zema), tad kondensators uzlādējas līdz VCC un atiestatīšana tiks atspējota.

Mēs savienojam mūsu LED anodu ar AVR tapu PB0. Šī ir ATMega328P 14. tapa. Tā kā tas ir LED, mēs vēlamies ierobežot strāvu, kas plūst uz LED, lai tā neizdegtu. Tāpēc sērijveidā ar gaismas diodi ievietojam 330Ω rezistoru. LED katods tiek savienots ar zemi.

16 MHz kristāls tiek izmantots, lai nodrošinātu pulksteni mikrokontrolleram Atmega328, un 22pF kondensatori tiek izmantoti, lai stabilizētu kristāla darbību.

Šie ir visi savienojumi, kas nepieciešami gaismas diodes iedegšanai. Enerģijas padeve.

Labi. LED mirgo ar vienas sekundes aizkavi. Mikrokontrollera darbs atbilst mūsu uzdevumiem

5. darbība. Secinājums

Jāatzīst, ka tas bija ilgs process, lai tikai mirgotu gaismas diode, bet patiesība ir tāda, ka esat veiksmīgi novērsis galvenos šķēršļus: izveidojis aparatūras platformu AVR mikrokontrollera programmēšanai, izmantojot Atmel Studio kā integrētu attīstības platformu, izmantojot AVRDUDE kā programmatūru AVR mikrokontrollera konfigurēšana un programmēšana

Ja vēlaties būt informēts par maniem pamata mikrokontrolleru projektiem, abonējiet manu YouTube! Manu videoklipu skatīšanās un kopīgošana ir veids, kā atbalstīt to, ko es daru

Abonējiet YouTube FOG kanālu

Ieteicams: