Përmbajtje:

Konfigurimi i copave të siguresave të mikrokontrolluesit AVR. Krijimi dhe Ngarkimi në Memory Flash të Mikrokontrolluesit Programi i ndezjes LED .: 5 hapa
Konfigurimi i copave të siguresave të mikrokontrolluesit AVR. Krijimi dhe Ngarkimi në Memory Flash të Mikrokontrolluesit Programi i ndezjes LED .: 5 hapa

Video: Konfigurimi i copave të siguresave të mikrokontrolluesit AVR. Krijimi dhe Ngarkimi në Memory Flash të Mikrokontrolluesit Programi i ndezjes LED .: 5 hapa

Video: Konfigurimi i copave të siguresave të mikrokontrolluesit AVR. Krijimi dhe Ngarkimi në Memory Flash të Mikrokontrolluesit Programi i ndezjes LED .: 5 hapa
Video: "Ai qen bir qeni ka djegur flamurin!"/ Dosja "Beleri" shkakton debate të ashpra - Të Paekspozuarit 2024, Qershor
Anonim
Image
Image

Në këtë rast ne do të krijojmë program të thjeshtë në kodin C dhe do ta djegim në kujtesën e mikrokontrolluesit. Ne do të shkruajmë programin tonë dhe do të përpilojmë skedarin hex, duke përdorur Atmel Studio si platformë të integruar zhvillimi. Ne do të konfigurojmë copa siguresash dhe do të ngarkojmë skedar gjashtëkëndësh në kujtesën e mikrokontrolluesit AVR ATMega328P, duke përdorur programuesin tonë dhe softuerin AVRDUDE.

AVRDUDE - është një program për shkarkimin dhe ngarkimin e kujtimeve në çip të mikrokontrolluesve AVR të Atmel. Mund të programojë Flash dhe EEPROM, dhe aty ku mbështetet nga protokolli i programimit serik, mund të programojë copa siguresash dhe bllokimi.

Hapi 1: Shkrimi i programit dhe përpilimi i skedarit Hex, duke përdorur Atmel Studio

Programi i shkrimit dhe përpiloni skedarin Hex, duke përdorur Atmel Studio
Programi i shkrimit dhe përpiloni skedarin Hex, duke përdorur Atmel Studio
Programi i shkrimit dhe përpiloni skedarin Hex, duke përdorur Atmel Studio
Programi i shkrimit dhe përpiloni skedarin Hex, duke përdorur Atmel Studio

Nëse nuk keni Atmel Studio, duhet ta shkarkoni dhe instaloni:

Ky projekt do të përdorë C, kështu që zgjidhni opsionin GCC C Ekzekutues i Projektit nga lista e shablloneve për të gjeneruar një projekt të ekzekutueshëm.

Tjetra, është e nevojshme të specifikoni se për cilën pajisje do të zhvillohet projekti. Ky projekt do të zhvillohet për mikrokontrolluesin AVR ATMega328P.

Shkruani kodin e programit në zonën e Redaktuesit të Burimeve Kryesore të Atmel Studio. Redaktori kryesor i burimit - Kjo dritare është redaktuesi kryesor për skedarët burim në projektin aktual. Redaktori ka kontroll të drejtshkrimit dhe veçori të plota automatike.

1. Ne duhet t'i tregojmë përpiluesit me çfarë shpejtësie po funksionon çipi ynë që mund të llogarisë vonesat siç duhet.

#ifndef F_CPU

#define F_CPU 16000000UL // tregues i frekuencës kristalore të kontrolluesit (16 MHz AVR ATMega328P) #endif

2. Ne përfshijmë parathënien, e cila është vendi ku vendosim informacionin tonë përfshijnë nga skedarët e tjerë, i cili përcakton variablat dhe funksionet globale.

#include // header për të mundësuar kontrollin e rrjedhës së të dhënave mbi kunjat. Përcakton kunjat, portet, etj.

#include // header për të aktivizuar funksionin e vonesës në program

3. Pas parathënies vjen funksioni kryesor ().

int kryesore (e pavlefshme) {

Funksioni kryesor () është unik dhe i veçuar nga të gjitha funksionet e tjera. Çdo program C duhet të ketë saktësisht një funksion kryesor (). Main () është vendi ku AVR fillon të ekzekutojë kodin tuaj kur rryma ndizet për herë të parë, kështu që është pika hyrëse e programit.

4. Vendosni pinin 0 të PORTB si dalje.

DDRB = 0b00000001; // Vendosni PORTB1 si dalje

Ne e bëjmë këtë duke shkruar një numër binar në Regjistrin e Drejtimit të të Dhënave B. Regjistri i Drejtimit të të Dhënave B na lejon të bëjmë pjesët e regjistrit B hyrje ose dalje. Shkrimi i 1 i bën ata të dalin, ndërsa 0 do t'i bëjë të dhëna. Duke qenë se po i bashkojmë një LED për të vepruar si dalje, ne shkruajmë një numër binar, duke e bërë pinin 0 të PORT B si dalje.

5. Lak.

ndërsa (1) {

Kjo deklaratë është një lak, shpesh i referuar si lak kryesor ose lak ngjarjeje. Ky kod është gjithmonë i vërtetë; prandaj, ekzekutohet pa pushim në një lak të pafund. Nuk pushon kurrë. Prandaj, LED do të pulsojë në pafundësi, përveç nëse energjia fiket nga mikrokontrolluesi ose fshihet kodi nga memoria e programit.

6. Ndizni LED -in e bashkangjitur në portën PB0

PORTB = 0b00000001; // ndez LED të bashkangjitur në portën PB0

Kjo linjë, i jep një 1 PB0 të PortB. PORTB është një regjistër i pajisjeve në çipin AVR që përmban 8 kunja, PB7-PB0, duke shkuar nga e majta në të djathtë. Vendosja e një 1 në fund i jep një 1 PB0; kjo vendos PB0 të lartë e cila e ndez atë. Prandaj, LED i bashkangjitur në pin PB0 do të ndizet dhe do të ndizet.

7. Vonesa

_vonesa_ms (1000); // krijon një vonesë 1 sekondë

Kjo deklaratë krijon një vonesë 1 sekondë, në mënyrë që LED të ndizet dhe të qëndrojë ndezur për saktësisht 1 sekondë.

8. Fikni të gjitha kunjat B, përfshirë PB0

PORTB = 0b00000000; // Fik të gjitha kunjat B, përfshirë PB0

Kjo linjë fik të gjitha 8 kunjat e Portit B, në mënyrë që edhe PB0 të jetë e fikur, kështu që LED fiket.

9. Një vonesë tjetër

_vonesa_ms (1000); // krijon një vonesë tjetër 1-sekondëshe

Fiket saktësisht për 1 sekondë, para se të filloni përsëri lakun dhe të takoni vijën, e cila e ndez atë përsëri, duke përsëritur procesin në të gjithë. Kjo ndodh pafundësisht në mënyrë që LED vazhdimisht të ndizet dhe fiket.

10. Deklarata e kthimit

}

kthimi (0); // kjo linjë nuk arrihet kurrë në të vërtetë}

Linja e fundit e kodit tonë është një deklaratë return (0). Edhe pse ky kod nuk ekzekutohet kurrë, sepse ekziston një lak i pafund i cili nuk përfundon kurrë, për programet tona që funksionojnë në kompjuterët desktop, është e rëndësishme që sistemi operativ të dijë nëse ato funksionojnë saktë apo jo. Për atë arsye, GCC, përpiluesi ynë, dëshiron që çdo kryesore () të përfundojë me një kod kthimi. Kodet e kthimit janë të panevojshme për kodin AVR, i cili funksionon i pavarur i çdo sistemi operativ mbështetës; megjithatë, përpiluesi do të ngrejë një paralajmërim nëse nuk e përfundoni kryesore me kthimin ().

Hapi i fundit është ndërtimi i projektit. Do të thotë përpilimi dhe përfundimisht lidhja e të gjithë skedarëve të objektit për të gjeneruar skedarin e skedarit të ekzekutueshëm (.hex). Ky skedar gjashtëkëndësh krijohet brenda dosjes Debug e cila është brenda dosjes Project. Ky skedar gjashtëkëndësh është gati për t'u ngarkuar në çipin e mikrokontrolluesit.

Hapi 2: Ndryshimi i konfigurimit të paracaktuar të pjesëve të siguresave të mikrokontrolluesit

Ndryshimi i konfigurimit të paracaktuar të pjesëve të siguresave të mikrokontrolluesit
Ndryshimi i konfigurimit të paracaktuar të pjesëve të siguresave të mikrokontrolluesit
Ndryshimi i konfigurimit të paracaktuar të pjesëve të siguresave të mikrokontrolluesit
Ndryshimi i konfigurimit të paracaktuar të pjesëve të siguresave të mikrokontrolluesit
Ndryshimi i konfigurimit të paracaktuar të pjesëve të siguresave të mikrokontrolluesit
Ndryshimi i konfigurimit të paracaktuar të pjesëve të siguresave të mikrokontrolluesit

Importantshtë e rëndësishme të mbani mend se disa nga pjesët e siguresave mund të përdoren për të kyçur aspekte të caktuara të çipit dhe potencialisht mund ta zbehin atë (ta bëjnë atë të papërdorshëm)

Janë gjithsej 19 bite siguresash që përdoren në ATmega328P, dhe ato ndahen në tre bajtë të ndryshëm siguresash. Tre nga siguresat e siguresave janë të përfshira në "Byte të Zgjeruar të Siguresës", tetë janë të përfshira në "Byte të lartë të siguresave" dhe tetë të tjera janë të përfshira në "Byte të ulët të siguresave". Ekziston edhe një bajt i katërt që përdoret për të programuar bitët e kyçjes.

Çdo bajt është 8 bit dhe secili bit është një cilësim ose flamur i veçantë. Kur flasim për vendosjen, jo vendosjen, siguresat e programuara, jo të programuara ne në të vërtetë po përdorim binar. 1 do të thotë jo i vendosur, jo i programuar dhe zero do të thotë i vendosur, i programuar. Kur programoni siguresat mund të përdorni shënim binar ose më shpesh shënim heksadecimal.

Patate të skuqura ATmega 328P kanë një oshilator të integruar RC i cili ka një frekuencë 8 MHz. Patate të skuqura të reja dërgohen me këtë grup si burim i orës dhe siguresa CKDIV8 aktive, duke rezultuar në një orë sistemi 1 MHz. Koha e fillimit është vendosur në maksimum dhe periudha e skadimit të aktivizuar.

Patate të skuqura të reja ATMega 328P në përgjithësi kanë cilësimet e mëposhtme të siguresave:

Siguresë e ulët = 0x62 (0b01100010)

Siguresë e lartë = 0xD9 (0b11011001)

Siguresa e zgjeruar = 0xFF (0b11111111)

Ne do të përdorim çipin ATmega 328 me një kristal të jashtëm 16MHz. Prandaj, ne duhet të programojmë pjesët e "Fuse Low Byte" në përputhje me rrethanat.

1. Bitet 3-0 kontrollojnë zgjedhjen e oshilatorit, dhe cilësimi i paracaktuar i 0010 është përdorimi i oshilatorit të brendshëm të kalibruar RC, të cilin ne nuk e duam. Ne duam që funksionimi i oshilatorit kristal me fuqi të ulët nga 8.0 në 16.0 MHz, kështu që bitet 3-1 (CKSEL [3: 1]) duhet të vendosen në 111.

2. Bitët 5 dhe 4 kontrollojnë kohën e fillimit dhe cilësimi i paracaktuar prej 10 është për një vonesë në fillimin e gjashtë cikleve të orës nga fikja e energjisë dhe kursimi i energjisë, plus një vonesë shtesë në fillimin e 14 cikleve të orës plus 65 milisekonda nga rivendosja.

Për të qenë në anën e sigurt për një oshilator kristal me fuqi të ulët, ne duam vonesën maksimale të mundshme prej 16,000 cikle të orës nga fikja dhe kursimi i energjisë, kështu që SUT [1] duhet të vendoset në 1, plus një vonesë shtesë të fillimit prej 14 cikleve të orës plus 65 milisekonda nga rivendosja, kështu që SUT [0] duhet të vendoset në 1. Përveç kësaj, CKSEL [0] duhet të vendoset në 1.

3. Bit 6 kontrollon daljen e orës në PORTB0, për të cilën nuk na intereson. Pra, biti 6 mund të lihet i vendosur në 1.

4. Bit 7 kontrollon operacionin ndarje me 8 dhe cilësimi i parazgjedhur i 0 e ka aktivizuar funksionin, të cilin ne nuk e duam. Pra, bit 7 duhet të ndryshohet nga 0 në 1.

Prandaj, bajti i ri i ulët i siguresave duhet të jetë 11111111 i cili, në shënimin heksadecimal, është 0xFF

Për të programuar pjesë të "Siguresës së ulët bajtit" ne mund të përdorim programuesin tonë (https://www.instructables.com/id/ISP-Programmer-fo…) dhe softuerin AVRDUDE. AVRDUDE është një mjet i linjës së komandës që përdoret për të shkarkuar dhe ngarkuar nga mikrokontrolluesit Atmel.

Shkarkoni AVRDUDE:

Së pari, ne duhet të shtojmë përshkrimin e programuesit tonë në skedarin e konfigurimit të AVRDUDE. Në Windows skedari i konfigurimit është zakonisht në të njëjtin vend si skedari i ekzekutueshëm i AVRDUDE.

Ngjiteni tekstin në skedarin e konfigurimit avrdude.conf:

# ISPProgv1

programuesi id = "ISPProgv1"; desc = "goditje portike serike, rivendosje = dtr sck = rts mosi = txd miso = cts"; type = "serbb"; lloji_lidhjes = serial; rivendos = 4; ska = 7; mosi = 3; miso = 8;;

Para fillimit të AVRDUDE, ne duhet të lidhim mikrokontrolluesin me programuesin, sipas skemës

Hapni dritaren e shpejtë të DOS.

1. Për të parë listën e programuesve që mbështet avrdude, shkruani komandën avrdude -c c. Nëse gjithçka është mirë, lista duhet të ketë id programues "ISPProgv1"

2. Për të parë listën e pajisjeve Atmel që avrdude mbështetet, shkruani komandën avrdude -c ISPProgv1. Lista duhet të ketë pajisjen m328p për Atmel ATMega 328P.

Tjetra, shkruani avrdude -c ISPProgv1 –p m328p, komanda i thotë avrdude se çfarë programuesi po përdoret dhe çfarë mikrokontrolluesi Atmel është i bashkangjitur. Ajo paraqet nënshkrimin ATmega328P në shënim heksadecimal: 0x1e950f. Ai paraqet programimin e bitit të siguresave aktualisht në ATmega328P edhe në shënimin heksadecimal; në këtë rast, bajtët e siguresave programohen sipas parazgjedhjes së fabrikës.

Tjetra, shkruani avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m, ashtë një komandë për t’i treguar avrdude se çfarë programuesi po përdoret dhe çfarë mikrokontrolluesi Atmel është bashkangjitur dhe për të ndryshuar Byte -in e ulët të siguresave në 0xFF.

Tani sinjali i orës duhet të vijë nga oshilatori kristal me fuqi të ulët.

Hapi 3: Djegia e Programit në Kujtimin e Mikrokontrolluesit ATMega328P

Djegia e Programit në Kujtimin e Mikrokontrolluesit ATMega328P
Djegia e Programit në Kujtimin e Mikrokontrolluesit ATMega328P
Djegia e Programit në Kujtimin e Mikrokontrolluesit ATMega328P
Djegia e Programit në Kujtimin e Mikrokontrolluesit ATMega328P

Së pari, kopjoni skedarin gjashtëkëndësh të programit që kemi bërë në fillim të udhëzimit në drejtorinë AVRDUDE.

Pastaj, shkruani në dritaren e shpejtë të DOS komandën avrdude –c ISPProgv1 –p m328p –u –U flash: w: [emri i skedarit tuaj gjashtëkëndësh]

Komanda shkruan skedar gjashtëkëndësh në kujtesën e mikrokontrolluesit. Tani, mikrokontrolluesi punon në përputhje me udhëzimet e programit tonë. Le ta kontrollojmë!

Hapi 4: Kontrolloni funksionimin e mikrokontrolluesit në përputhje me udhëzimet e programit tonë

Kontrolloni funksionimin e mikrokontrolluesit në përputhje me udhëzimet e programit tonë
Kontrolloni funksionimin e mikrokontrolluesit në përputhje me udhëzimet e programit tonë
Kontrolloni funksionimin e mikrokontrolluesit në përputhje me udhëzimet e programit tonë
Kontrolloni funksionimin e mikrokontrolluesit në përputhje me udhëzimet e programit tonë
Kontrolloni funksionimin e mikrokontrolluesit në përputhje me udhëzimet e programit tonë
Kontrolloni funksionimin e mikrokontrolluesit në përputhje me udhëzimet e programit tonë

Lidhni komponentët në përputhje me diagramin skematik të qarkut LED të ndezjes AVR

Së pari, ne kemi nevojë për energji, siç bëjnë të gjitha qarqet AVR. Rreth 5 volt energji janë të mjaftueshme për funksionimin e çipit AVR. Ju mund ta merrni këtë ose nga bateritë ose nga një furnizim me energji DC. Ne lidhim +5V të energjisë në pin 7 dhe lidhim pin 8 në tokë në bukë. Në mes të dy kunjave, ne vendosim një kondensator qeramik 0.1μF për të zbutur fuqinë e furnizimit me energji në mënyrë që çipi AVR të marrë një linjë të qetë të energjisë.

Rezistenca 10KΩ përdoret për të siguruar Reset Power On (POR) në pajisje. Kur fuqia është e ndezur, tensioni në kondensator do të jetë zero kështu që pajisja të rivendoset (meqenëse rivendosja është aktive e ulët), atëherë kondensatori ngarkohet në VCC dhe rivendosja do të çaktivizohet.

Ne lidhim anodën e LED -it tonë me pinin AVR PB0. Kjo është kunja 14 e ATMega328P. Meqenëse është një LED, ne duam të kufizojmë rrymën që rrjedh në LED në mënyrë që të mos digjet. Kjo është arsyeja pse ne vendosim një rezistencë 330Ω në seri me LED. Katoda e LED -it lidhet me tokën.

Kristali 16 MHz përdoret për të siguruar orë për mikrokontrolluesin Atmega328 dhe kondensatorët 22pF përdoren për të stabilizuar funksionimin e kristalit.

Këto janë të gjitha lidhjet e nevojshme për të ndezur LED. Furnizimi me energji elektrike.

Ne rregull. LED po ndizet me një sekondë vonesë. Puna e mikrokontrolluesit korrespondon me detyrat tona

Hapi 5: Përfundimi

Padyshim, ky ishte një proces i gjatë për ndezjen e një LED, por e vërteta është se ju keni pastruar me sukses pengesat kryesore: krijimin e një platforme harduerike për programimin e një mikrokontrolluesi AVR, Përdorimi i Atmel Studio si platforma e integruar e zhvillimit, duke përdorur AVRDUDE si softuer për konfigurimi dhe programimi i një mikrokontrolluesi AVR

Nëse doni të jeni të azhurnuar në projektet e mia të mikrokontrolluesve, regjistrohuni në YouTube tim! Shikimi dhe ndarja e videove të mia është mënyra për të mbështetur atë që bëj

Regjistrohuni në kanalin YouTube FOG

Recommended: