Sadržaj:

Konfiguracija bitova osigurača AVR mikrokontrolera. Stvaranje i učitavanje u flash memoriji mikrokontrolera LED programa koji treperi .: 5 koraka
Konfiguracija bitova osigurača AVR mikrokontrolera. Stvaranje i učitavanje u flash memoriji mikrokontrolera LED programa koji treperi .: 5 koraka

Video: Konfiguracija bitova osigurača AVR mikrokontrolera. Stvaranje i učitavanje u flash memoriji mikrokontrolera LED programa koji treperi .: 5 koraka

Video: Konfiguracija bitova osigurača AVR mikrokontrolera. Stvaranje i učitavanje u flash memoriji mikrokontrolera LED programa koji treperi .: 5 koraka
Video: Видеокурс по AVR микроконтроллерам - Урок 3 2024, Studeni
Anonim
Image
Image

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

Pisanje programa i sastavljanje šesterokutne datoteke pomoću Atmel Studija
Pisanje programa i sastavljanje šesterokutne datoteke pomoću Atmel Studija
Pisanje programa i sastavljanje šesterokutne datoteke pomoću Atmel Studija
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

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 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

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 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

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 š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: