Sadržaj:

Konfiguracija bitova osigurača AVR mikrokontrolera. Kreiranje i učitavanje u fleš memoriji mikrokontrolera programa LED treperenja .: 5 koraka
Konfiguracija bitova osigurača AVR mikrokontrolera. Kreiranje i učitavanje u fleš memoriji mikrokontrolera programa LED treperenja .: 5 koraka

Video: Konfiguracija bitova osigurača AVR mikrokontrolera. Kreiranje i učitavanje u fleš memoriji mikrokontrolera programa LED treperenja .: 5 koraka

Video: Konfiguracija bitova osigurača AVR mikrokontrolera. Kreiranje i učitavanje u fleš memoriji mikrokontrolera programa LED treperenja .: 5 koraka
Video: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, Novembar
Anonim
Image
Image

U ovom slučaju kreirat ćemo jednostavan program u C kodu i snimiti ga u memoriju mikrokontrolera. Napisat ćemo vlastiti program i kompajlirati heksadecimalnu datoteku, koristeći Atmel Studio kao integriranu razvojnu platformu. Konfigurirat ćemo bitove osigurača i učitati heksadecimalnu datoteku u memoriju AVR ATMega328P mikrokontrolera, pomoću vlastitog programatora i softvera AVRDUDE.

AVRDUDE - je program za preuzimanje i učitavanje memorija na čipu Atmelovih AVR mikrokontrolera. Može programirati Flash i EEPROM, a gdje to podržava protokol serijskog programiranja, može programirati bitove osigurača i zaključavanja.

Korak 1: Pisanje programa i kompajliranje hex datoteke koristeći Atmel Studio

Pisanje programa i kompajliranje heksadecimalne datoteke koristeći Atmel Studio
Pisanje programa i kompajliranje heksadecimalne datoteke koristeći Atmel Studio
Pisanje programa i kompajliranje hex datoteke koristeći Atmel Studio
Pisanje programa i kompajliranje hex datoteke koristeći Atmel Studio

Ako nemate Atmel Studio, trebali biste ga preuzeti i instalirati:

Ovaj će projekt koristiti C, pa odaberite opciju GCC C Izvršni projekt s popisa predložaka za generiranje golog kostiju izvršnog projekta.

Zatim je potrebno navesti za koji će se uređaj projekt razvijati. Ovaj projekt bit će razvijen za mikrokontroler AVR ATMega328P.

Upišite kôd programa u prostor za uređivanje glavnog izvora Atmel Studio. Uređivač glavnog izvora - Ovaj prozor je glavni uređivač izvornih datoteka u trenutnom projektu. Uređivač ima funkcije provjere pravopisa i automatskog dovršavanja.

1. Moramo reći kompajleru kojom brzinom radi naš čip da može pravilno izračunati kašnjenja.

#ifndef F_CPU

#define F_CPU 16000000UL // kristalna frekvencija regulatora kazivanja (16 MHz AVR ATMega328P) #endif

2. Uključujemo preambulu, gdje stavljamo informacije o uključivanju iz drugih datoteka, koje definiraju globalne varijable i funkcije.

#include // zaglavlje za omogućavanje kontrole protoka podataka preko pinova. Definira pinove, priključke itd.

#include // zaglavlje za omogućavanje funkcije odgode u programu

3. Nakon preambule dolazi funkcija main ().

int main (void) {

Funkcija main () je jedinstvena i izdvaja se od svih ostalih funkcija. Svaki C program mora imati tačno jednu glavnu () funkciju. Main () je mjesto gdje AVR počinje izvršavati vaš kôd kada se napajanje uključi, pa je to ulazna tačka programa.

4. Postavite pin 0 na PORTB -u kao izlaz.

DDRB = 0b00000001; // Postavite PORTB1 kao izlaz

To činimo upisivanjem binarnog broja u registar smjera podataka B. Registar smjera podataka B nam omogućava da unosimo ili izlazimo bitove registra B. Pisanje 1 čini ih izlaznim, dok ih 0 čini ulaznim. Budući da priključujemo LED diodu koja će djelovati kao izlaz, upisujemo binarni broj, čineći pin 0 na PORT B -u kao izlaz.

5. Petlja.

dok (1) {

Ova naredba je petlja, koja se često naziva glavna petlja ili petlja događaja. Ovaj kôd je uvek tačan; stoga se izvršava uvijek iznova u beskonačnoj petlji. Nikada ne prestaje. Zbog toga će LED dioda treptati beskonačno, osim ako se napajanje ne isključi iz mikrokontrolera ili se kôd ne izbriše iz programske memorije.

6. Uključite LED diodu priključenu na priključak PB0

PORTB = 0b00000001; // uključuje LED diodu priključenu na priključak PB0

Ova linija daje 1 PB0 PortB -a. PORTB je hardverski registar na AVR čipu koji sadrži 8 pinova, PB7-PB0, ide s lijeva na desno. Stavljanjem 1 na kraj dobija se 1 za PB0; ovo postavlja PB0 visoko što ga uključuje. Zbog toga će se LED dioda priključena na pin PB0 upaliti i zasvijetliti.

7. Odgoda

_dey_ms (1000); // stvara kašnjenje od 1 sekunde

Ova izjava stvara kašnjenje od 1 sekunde, tako da se LED lampica uključuje i ostaje uključena tačno 1 sekundu.

8. Isključite sve pinove B, uključujući PB0

PORTB = 0b00000000; // Isključuje sve pinove B, uključujući PB0

Ova linija isključuje svih 8 priključaka B porta, tako da je čak i PB0 isključen, pa se LED isključuje.

9. Još jedno odlaganje

_dey_ms (1000); // stvara još jedno kašnjenje od 1 sekunde

Isključuje se tačno na 1 sekundu, prije nego što ponovo započne petlju i naiđe na liniju, koja je ponovo uključuje, ponavljajući cijeli proces. To se događa beskonačno tako da LED stalno treperi i gasi.

10. Izjava o povratku

}

return (0); // ova linija nikada nije dostignuta}

Zadnji red našeg koda je return (0) izraz. Iako se ovaj kôd nikada ne izvršava, jer postoji beskonačna petlja koja se nikad ne završava, za naše programe koji se izvode na desktop računarima važno je da operativni sistem zna da li su ispravno pokrenuti ili ne. Iz tog razloga, GCC, naš kompajler, želi da svaki main () završi povratnim kodom. Povratni kodovi nisu potrebni za AVR kod, koji radi samostalno od bilo kojeg podržavajućeg operativnog sistema; ipak, kompajler će upozoriti ako ne završite main sa return ().

Posljednji korak je izgradnja projekta. To znači kompajliranje i konačno povezivanje svih objektnih datoteka za generiranje datoteke izvršne datoteke (.hex). Ova heksadecimalna datoteka se generiše unutar fascikle Debug koja se nalazi unutar fascikle Project. Ova heksadecimalna datoteka je spremna za učitavanje u čip mikrokontrolera.

Korak 2: Promjena zadane konfiguracije bitova osigurača mikrokontrolera

Promjena zadane konfiguracije bitova osigurača mikrokontrolera
Promjena zadane konfiguracije bitova osigurača mikrokontrolera
Promjena zadane konfiguracije bitova osigurača mikrokontrolera
Promjena zadane konfiguracije bitova osigurača mikrokontrolera
Promjena zadane konfiguracije bitova osigurača mikrokontrolera
Promjena zadane konfiguracije bitova osigurača mikrokontrolera

Važno je zapamtiti da se neki od bitova osigurača mogu koristiti za zaključavanje određenih aspekata čipa i potencijalno ga mogu ugraditi (učiniti neupotrebljivim)

Postoji ukupno 19 bitova osigurača koji se koriste u ATmega328P, a podijeljeni su u tri različita bajta osigurača. Tri bita osigurača sadržana su u "Produženom bajtu osigurača", osam u "Visokom bajtu osigurača", a još osam u "Nižem bajtu osigurača". Postoji i četvrti bajt koji se koristi za programiranje zaključavanja bitova.

Svaki bajt ima 8 bita i svaki bit je zasebna postavka ili zastavica. Kada govorimo o postavljanju, ne postavljanju, programiranju, programiranju osigurača, zapravo koristimo binarne. 1 znači nije postavljeno, nije programirano, a nula znači postavljeno, programirano. Prilikom programiranja osigurača možete koristiti binarni zapis ili češće heksadecimalni zapis.

ATmega 328P čipovi imaju ugrađen RC oscilator koji ima frekvenciju 8 MHz. Novi čipovi se isporučuju s ovim setom kao izvorom takta i aktivnim osiguračem CKDIV8, što rezultira sistemskim taktom od 1 MHz. Vrijeme pokretanja je postavljeno na maksimum, a period čekanja je omogućen.

Novi čipovi ATMega 328P općenito imaju sljedeće postavke osigurača:

Nizak osigurač = 0x62 (0b01100010)

Visoki osigurač = 0xD9 (0b11011001)

Produženi osigurač = 0xFF (0b11111111)

Koristit ćemo ATmega 328 čip sa vanjskim 16MHz kristalom. Stoga moramo u skladu s tim programirati bitove "Fuse Low Byte".

1. Bitovi 3-0 kontroliraju izbor oscilatora, a zadana postavka 0010 je korištenje kalibriranog internog RC oscilatora, što ne želimo. Želimo rad kristalnog oscilatora male snage od 8,0 do 16,0 MHz, pa bitove 3-1 (CKSEL [3: 1]) treba postaviti na 111.

2. Bit 5 i 4 kontroliraju vrijeme pokretanja, a zadana postavka 10 je za kašnjenje pri pokretanju od šest ciklusa takta nakon isključivanja i uštede energije, plus dodatno kašnjenje pri pokretanju od 14 ciklusa takta plus 65 milisekundi od resetiranja.

Da bismo bili sigurni za kristalni oscilator male snage, želimo maksimalno moguće kašnjenje od 16 000 ciklusa takta od isključivanja i uštede energije, pa bi SUT [1] trebao biti postavljen na 1, plus dodatno kašnjenje pri pokretanju od 14 ciklusa takta plus 65 milisekundi od resetiranja, pa SUT [0] treba postaviti na 1. Osim toga, CKSEL [0] treba postaviti na 1.

3. Bit 6 kontrolira izlaz sata na PORTB0, do čega nam nije stalo. Dakle, bit 6 možete ostaviti na 1.

4. Bit 7 kontrolira operaciju podijeli sa 8, a zadana postavka 0 ima omogućenu funkciju, što ne želimo. Dakle, bit 7 treba promijeniti iz 0 u 1.

Stoga bi novi niski bajt osigurača trebao biti 11111111 koji je u heksadecimalnom zapisu 0xFF

Za programiranje bitova "Fuse Low Byte" možemo koristiti naš programator (https://www.instructables.com/id/ISP-Programmer-fo…) i softver AVRDUDE. AVRDUDE je pomoćni program komandne linije koji se koristi za preuzimanje i postavljanje na Atmel mikrokontrolere.

Preuzmite AVRDUDE:

Prvo moramo dodati opis našeg programera u konfiguracijsku datoteku programa AVRDUDE. U sustavu Windows konfiguracijska datoteka obično se nalazi na istoj lokaciji kao izvršna datoteka programa AVRDUDE.

Zalijepite tekst u konfiguracijskoj datoteci avrdude.conf:

# ISPProgv1

programer id = "ISPProgv1"; desc = "lupanje serijskog porta, reset = dtr sck = rts mosi = txd miso = cts"; type = "serbb"; connection_type = serial; reset = 4; sck = 7; mosi = 3; miso = 8;;

Prije pokretanja AVRDUDE -a moramo spojiti mikrokontroler na programator prema shemi

Otvorite prozor upita DOS -a.

1. Za pregled liste programera koje podržava avrdude upišite naredbu avrdude -c c. Ako je sve u redu, lista bi trebala imati ID programera "ISPProgv1"

2. Za pregled popisa Atmel uređaja koji podržavaju avrdude upišite naredbu avrdude -c ISPProgv1. Na listi bi trebao biti uređaj m328p za Atmel ATMega 328P.

Zatim upišite avrdude -c ISPProgv1 –p m328p, naredba recite avrdude koji se programator koristi i koji je Atmel mikrokontroler priključen. Predstavlja ATmega328P potpis u heksadecimalnom zapisu: 0x1e950f. Predstavlja programiranje bitova osigurača trenutno u ATmega328P također u heksadecimalnom zapisu; u ovom slučaju, bajtovi osigurača su programirani prema tvorničkim postavkama.

Zatim upišite avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m, Naredba je da se avrdude obavijesti koji se programer koristi i koji je Atmel mikrokontroler priključen te da se Fuse Low Byte promijeni u 0xFF.

Sada bi signal sata trebao dolaziti iz kristalnog oscilatora male snage.

Korak 3: Snimanje programa u memoriju mikrokontrolera ATMega328P

Snimanje programa u memoriju mikrokontrolera ATMega328P
Snimanje programa u memoriju mikrokontrolera ATMega328P
Snimanje programa u memoriju mikrokontrolera ATMega328P
Snimanje programa u memoriju mikrokontrolera ATMega328P

Prvo kopirajte heksadecimalnu datoteku programa koju smo napravili na početku instrukcije u direktorij AVRDUDE.

Zatim u prozor DOS upita upišite naredbu avrdude –c ISPProgv1 –p m328p –u –U flash: w: [naziv vaše heksadecimalne datoteke]

Naredba zapisuje heksadecimalnu datoteku u memoriju mikrokontrolera. Sada mikrokontroler radi u skladu s uputama našeg programa. Hajde da provjerimo!

Korak 4: Provjerite radi li mikrokontroler u skladu s uputama našeg programa

Provjerite radi li mikrokontroler u skladu s uputama našeg programa
Provjerite radi li mikrokontroler u skladu s uputama našeg programa
Provjerite radi li mikrokontroler u skladu s uputama našeg programa
Provjerite radi li mikrokontroler u skladu s uputama našeg programa
Provjerite radi li mikrokontroler u skladu s uputama našeg programa
Provjerite radi li mikrokontroler u skladu s uputama našeg programa

Spojite komponente u skladu sa shematskim dijagramom AVR treperećeg LED kruga

Prvo, potrebno nam je napajanje, kao i svim AVR krugovima. Snaga od oko 5 volti dovoljna je za rad AVR čipa. Ovo možete nabaviti ili iz baterija ili iz DC napajanja. Priključujemo +5V napajanja na pin 7 i priključujemo pin 8 na masu na matičnoj ploči. Između oba pina postavljamo keramički kondenzator od 0,1 μF kako bismo izgladili snagu napajanja tako da AVR čip dobije glatku liniju napajanja.

Otpornik od 10KΩ koristi se za napajanje uređaja pri resetiranju pri uključivanju (POR). Kad je napajanje uključeno, napon na kondenzatoru bit će nula pa se uređaj resetira (budući da je reset aktivan nisko), tada se kondenzator puni na VCC i resetiranje će biti onemogućeno.

Priključujemo anodu naše LED diode na AVR pin PB0. Ovo je pin 14 ATMega328P. Budući da je LED dioda, želimo ograničiti struju koja teče do LED diode kako ne bi izgorjela. Zbog toga postavljamo otpornik od 330Ω u seriju sa LED diodom. Katoda LED se povezuje sa masom.

Kristal od 16 MHz koristi se za osiguravanje takta mikrokontrolera Atmega328, a kondenzatori od 22pF za stabilizaciju rada kristala.

Ovo su sve veze potrebne za paljenje LED diode. Napajanje strujom.

Uredu. LED treperi sa zakašnjenjem od jedne sekunde. Rad mikrokontrolera odgovara našim zadacima

Korak 5: Zaključak

Doduše, to je bio dug proces za samo treptanje LED -a, ali istina je da ste uspješno riješili velike prepreke: stvaranje hardverske platforme za programiranje AVR mikrokontrolera, Korištenje Atmel Studija kao integrirane razvojne platforme, korištenje AVRDUDE -a kao softvera za konfiguriranje i programiranje AVR mikrokontrolera

Ako želite biti u toku s mojim projektima baznih mikrokontrolera, pretplatite se na moj YouTube! Gledanje i dijeljenje mojih videozapisa način je da podržite ono što radim

Pretplatite se na YouTube FOG kanal

Preporučuje se: