Sadržaj:
- Korak 1: Pisanje programa i kompajliranje hex datoteke koristeći Atmel Studio
- Korak 2: Promjena zadane konfiguracije bitova osigurača mikrokontrolera
- Korak 3: Snimanje programa u memoriju mikrokontrolera ATMega328P
- Korak 4: Provjerite radi li mikrokontroler u skladu s uputama našeg programa
- Korak 5: Zaključak
Video: Konfiguracija bitova osigurača AVR mikrokontrolera. Kreiranje i učitavanje u fleš memoriji mikrokontrolera programa LED treperenja .: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
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
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
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
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
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:
Ugrađeni cilindrični držač osigurača (konektori): 15 koraka (sa slikama)
Ugrađeni cilindrični držač osigurača (konektori): Ovo uputstvo je za cilindrične staklene držače osigurača napravljene na TinkerCAD -u. Ovaj projekat je započet u junu i ušao je u takmičenje za dizajn TinkerCAD -a. Postoje dvije vrste držača osigurača, jedan za uobičajene dimenzije 5x20 mm, a drugi za
Detektor treperenja svjetla: 3 koraka (sa slikama)
Detektor treperenja svjetla: Uvijek me fascinirala činjenica da nas prati elektronika. Ima ga svuda. Kad govorimo o izvorima svjetlosti (ne o prirodnim poput zvijezda), moramo uzeti u obzir nekoliko parametara: svjetlinu, boju i, u
Kreiranje vašeg prvog programa u Visual Basicu: 7 koraka
Kreiranje vašeg prvog programa u Visual Basicu: Ovo uputstvo će vam pokazati kako programirati Microsoft Visual Basic 2005 Express Edition. Primjer koji ćete stvoriti danas je jednostavan preglednik slika. Ako vam se sviđa ova instrukcija, pritisnite dugme + pri vrhu instrukcije. Hvala
TI-83 ili 84 Uvod u kreiranje programa: 5 koraka
TI-83 ili 84 Uvod u kreiranje programa: zdravo, ovo je uputstvo koje objašnjava osnove programiranja na vašem TI-83 84 kalkulatoru. Također, mogao bih napraviti i druge instrukcije o konkretnijim stvarima, ovisno o povratnim informacijama. Izvinite zbog slika, loše mi je sa kamerom
Kreiranje programa u Visual Basicu: Web preglednik: 9 koraka
Kreiranje programa u Visual Basicu: Web preglednik: Ovaj Instructable objašnjava proces stvaranja jednostavne aplikacije za web preglednik u VB.NETIzmišljen je kao nastavak mog prvog VB.NET Instructable: Kreiranje vašeg prvog programa u Visual Basicu. Preporučuje se da to pročitate do kraja