Sadržaj:
- Korak 1: Pisanje programa i sastavljanje šesterokutne datoteke pomoću Atmel Studija
- 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. Stvaranje i učitavanje u flash memoriji mikrokontrolera LED programa koji treperi .: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
U ovom slučaju izradit ćemo jednostavan program u C kodu i snimiti ga u memoriju mikrokontrolera. Napisat ćemo vlastiti program i sastaviti hex 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čavanje.
Korak 1: Pisanje programa i sastavljanje šesterokutne datoteke pomoću Atmel Studija
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 da biste generirali goli kosti izvršni projekt.
Zatim je potrebno navesti za koji će se uređaj projekt razvijati. Ovaj će se projekt razvijati za mikrokontroler AVR ATMega328P.
Upišite kôd programa u prostor za uređivanje glavnog izvora Atmel Studija. Uređivač glavnog izvora - ovaj prozor je glavni uređivač izvornih datoteka u trenutnom projektu. Uređivač ima značajke provjere pravopisa i automatskog dovršavanja.
1. Moramo reći prevoditelju kojom brzinom radi naš čip da može pravilno izračunati kašnjenja.
#ifndef F_CPU
#define F_CPU 16000000UL // govorna frekvencija kristala kontrolera (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 () jedinstvena je i izdvaja se od svih ostalih funkcija. Svaki C program mora imati točno jednu glavnu () funkciju. Main () je mjesto gdje AVR počinje izvršavati vaš kôd kad se napajanje uključi, pa je to ulazna toč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 omogućuje nam unos ili izlaz bitova registra B. Pisanje 1 čini ih izlaznim, dok ih 0 čini ulaznim. Budući da pričvršćujemo LED da djeluje kao izlaz, zapisujemo binarni broj, čineći pin 0 PORT B kao izlaz.
5. Petlja.
dok (1) {
Ova izjava je petlja, koja se često naziva glavna petlja ili petlja događaja. Ovaj kôd je uvijek istinit; dakle, izvršava se uvijek iznova u beskonačnoj petlji. Nikad ne prestaje. Stoga će LED dioda treptati u beskonačnosti, osim ako se napajanje mikrokontrolera ne isključi 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 slijeva nadesno. Stavljanjem 1 na kraj dobivate 1 za PB0; ovo postavlja PB0 visoko što ga uključuje. Stoga će se LED dioda priključena na pin PB0 uključiti i zasvijetliti.
7. Odgoda
_kašnjenje_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 toč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 kašnjenje
_kašnjenje_ms (1000); // stvara još jedno kašnjenje od 1 sekunde
Isključuje se točno na 1 sekundu, prije nego što opet započne petlju i naiđe na liniju, koja je ponovno uključuje, ponavljajući cijeli postupak. To se događa beskonačno tako da LED stalno treperi i gasi.
10. Izjava o povratku
}
return (0); // ovaj redak nikada nije dosegnut}
Zadnji redak našeg koda je return (0) izraz. Iako se ovaj kôd nikada ne izvršava, jer postoji beskonačna petlja koja nikad ne prestaje, za naše programe koji se izvode na stolnim računalima važno je da operacijski sustav zna jesu li ispravno radili 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 operacijskog sustava; ipak, prevoditelj će upozoriti ako ne završite main s return ().
Posljednji korak je izgradnja projekta. To znači sastavljanje i konačno povezivanje svih objektnih datoteka za generiranje izvršne datoteke (.hex). Ova heksadecimalna datoteka generirana je unutar mape Debug koja se nalazi unutar mape Project. Ova heksadecimalna datoteka spremna je 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 te ga mogu potencijalno opeći (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 "Bajtu niskog osigurača". Postoji i četvrti bajt koji se koristi za programiranje bitova za zaključavanje.
Svaki bajt ima 8 bita i svaki bit je zasebna postavka ili zastavica. Kad 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 taktom sustava od 1 MHz. Vrijeme pokretanja postavljeno je na maksimalno, a razdoblje čekanja je omogućeno.
Novi čipovi ATMega 328P općenito imaju sljedeće postavke osigurača:
Mali osigurač = 0x62 (0b01100010)
Visoki osigurač = 0xD9 (0b11011001)
Produženi osigurač = 0xFF (0b11111111)
Koristit ćemo ATmega 328 čip s vanjskim 16MHz kristalom. Stoga moramo sukladno tome programirati bitove "Fuse Low Byte".
1. Bitovi 3-0 kontroliraju izbor oscilatora, a zadana postavka 0010 je korištenje umjerenog unutarnjeg 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. Bitovi 5 i 4 kontroliraju vrijeme pokretanja, a zadana postavka 10 je za kašnjenje pokretanja 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.
Kako 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, što nas ne zanima. Dakle, bit 6 možete ostaviti na 1.
4. Bit 7 kontrolira operaciju podijeli sa 8, a zadana postavka 0 ima omogućenu značajku, što ne želimo. Dakle, bit 7 treba promijeniti iz 0 u 1.
Stoga bi novi donji bajt osigurača trebao biti 11111111 koji je u heksadecimalnom zapisu 0xFF
Za programiranje bitova "Fuse Low Byte" možemo koristiti naš programer (https://www.instructables.com/id/ISP-Programmer-fo…) i softver AVRDUDE. AVRDUDE je pomoćni program naredbenog retka koji se koristi za preuzimanje i prijenos na Atmel mikrokontrolere.
Preuzmite AVRDUDE:
Najprije moramo dodati opis našeg programera u konfiguracijsku datoteku programa AVRDUDE. U sustavu Windows konfiguracijska datoteka obično se nalazi na istom mjestu 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"; vrsta_povezivanja = serijski; 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 popisa programera koji podržava avrdude upišite naredbu avrdude -c c. Ako je sve u redu, popis bi trebao imati ID programera "ISPProgv1"
2. Za pregled popisa Atmel uređaja koji podržavaju avrdude upišite naredbu avrdude -c ISPProgv1. Na popisu bi trebao biti uređaj m328p za Atmel ATMega 328P.
Zatim upišite avrdude -c ISPProgv1 –p m328p, naredba recite avrdude koji se programer 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 programirani su 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 hex datoteku programa koji smo napravili na početku upute 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. Idemo provjeriti!
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 što je potrebno svim AVR krugovima. Snaga od oko 5 volti dovoljna je za rad AVR čipa. To možete nabaviti iz baterija ili iz istosmjernog napajanja. Priključujemo +5V napajanja na pin 7 i priključujemo pin 8 na masu na 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.
Spojimo anodu naše LED diode na AVR pin PB0. Ovo je pin 14 ATMega328P. Budući da se radi o LED diodi, želimo ograničiti struju koja teče do LED diode kako ne bi izgorjela. Zbog toga postavljamo otpornik od 330Ω u seriju s LED diodom. Katoda LED se spaja na masu.
Kristal od 16 MHz koristi se za osiguravanje takta mikrokontrolera Atmega328, a kondenzatori od 22 pF za stabilizaciju rada kristala.
To su sve veze potrebne za paljenje LED diode. Napajanje strujom.
U redu. LED treperi s odgodom od jedne sekunde. Rad mikrokontrolera odgovara našim zadaćama
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 osnovnih 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čeni:
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 izrađene na TinkerCAD -u. Ovaj je projekt započeo u lipnju i prijavio se na natječaj za dizajn TinkerCAD -a. Postoje dvije vrste držača osigurača, jedan za uobičajene 5x20 mm, a drugi za
Orange Pi Plus 2 - Armbian (na SD kartici ili ugrađenoj memoriji od 16 GB!) - Ažuriranje: 6 koraka
Orange Pi Plus 2 - Armbian (na SD kartici ili ugrađenoj memoriji od 16 GB!) - Ažuriranje: Bok svima! Ovo je moj prvi instruktor, a engleski nije moj materinji jezik, stoga nemojte biti strogi prema meni. Za početak, narančasta Pi Plus 2 je prekrasan mali uređaj, baš kao i Raspberry Pi, ali brži! Za Raspberry Pi postoji velika komunikacija
Korištenje LED -a i AT Tiny za stvaranje trepćuće zvijezde s Piezo sviranjem "Svijetli, treperi, mala zvijezda": 6 koraka
Korištenje LED -a i AT Tiny za stvaranje trepćuće zvijezde s Piezom koji svira "Twinkle, Twinkle, Little Star": Ovaj sklop koristi LEDS, AT TINY i piezo za stvaranje trepćuće zvijezde i glazbe "Twinkle, Twinkle, little star" Molimo pogledajte sljedeći korak za pregled i krug
PCB Dizajn LED -a koji treperi pomoću 555 IC: 7 koraka (sa slikama)
PCB Dizajn LED -a koji treperi pomoću 555 IC: ZDRAVO U ovom uputstvu sam upravo dao prikaz treperećeg LED sklopa i raspored tiskane ploče ako imate bilo kakve sumnje u bilo koje korake, samo prođite kroz moj prethodni dizajn PCB -a s instrukcijama s jednostavnim i lakim korakom ili pogledajte video u prilogu to
Treptanje LED miša koji treperi: 4 koraka
Hack LED miša koji treperi: Htio sam dodati LED na svoj Logitech miš gdje bi LED treptala kad pomjerim miš. Htjela sam to učiniti BEZ PIC čipa ili mjerača vremena 555. Dakle, sve što vam treba je jedna LED dioda