Tartalomjegyzék:
- 1. lépés: Írási program és fordítsa össze a Hex fájlt az Atmel Studio használatával
- 2. lépés: A mikrovezérlő biztosíték bitjeinek alapértelmezett konfigurációjának módosítása
- 3. lépés: A program beégetése az ATMega328P mikrokontroller memóriájába
- 4. lépés: Ellenőrizze, hogy a mikrokontroller programunk utasításainak megfelelően működik -e
- 5. lépés: Következtetés
Videó: AVR mikrokontroller biztosíték bit konfiguráció. A LED villogó program létrehozása és feltöltése a mikrokontroller flash memóriájába: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Ebben az esetben létrehozunk egy egyszerű programot C kódban, és elégetjük a mikrovezérlő memóriájába. Saját programot írunk és összeállítjuk a hex fájlt, az Atmel Studio integrált fejlesztési platformjaként. Biztosítók bitjeit konfiguráljuk, és hex fájlokat töltünk fel az AVR ATMega328P mikrokontroller memóriájába, saját programozónk és az AVRDUDE szoftver segítségével.
AVRDUDE - egy program az Atmel AVR mikrovezérlőinek chip -memóriáinak letöltésére és feltöltésére. Programozhatja a Flash -t és az EEPROM -ot, és ahol a soros programozási protokoll támogatja, biztosítékokat és reteszelő biteket programozhat.
1. lépés: Írási program és fordítsa össze a Hex fájlt az Atmel Studio használatával
Ha nincs Atmel Studio, töltse le és telepítse:
Ez a projekt a C-t fogja használni, ezért válassza ki a GCC C végrehajtható projekt opciót a sablonlistából, hogy készítsen egy csupasz végrehajtható projektet.
Ezután meg kell határozni, hogy a projekt melyik eszközre lesz fejlesztve. Ezt a projektet az AVR ATMega328P mikrokontrollerhez fejlesztik ki.
Írja be a program kódját az Atmel Studio Fő forrásszerkesztő területén. A fő forrásszerkesztő - Ez az ablak az aktuális projekt forrásfájljainak fő szerkesztője. A szerkesztő helyesírás -ellenőrzési és automatikus kiegészítési funkciókkal rendelkezik.
1. Meg kell mondanunk a fordítónak, hogy milyen sebességgel fut a chipünk, hogy megfelelően tudja kiszámítani a késéseket.
#ifndef F_CPU
#define F_CPU 16000000UL // megmondja a vezérlő kristályfrekvenciáját (16 MHz AVR ATMega328P) #endif
2. Tartalmazzuk a preambulumot, ahová más fájlokból származó információinkat helyezzük el, amelyek meghatározzák a globális változókat és függvényeket.
#include // fejléc az adatáramlás vezérlésének engedélyezéséhez a csapok felett. Meghatározza a csapokat, portokat stb.
#include // fejléc a program késleltetési funkciójának engedélyezéséhez
3. A preambulum után jön a main () függvény.
int main (void) {
A fő () függvény egyedi, és elkülönül minden más funkciótól. Minden C programnak pontosan egy fő () függvénnyel kell rendelkeznie. A Main () az a hely, ahol az AVR elkezdi végrehajtani a kódot, amikor először bekapcsol, tehát ez a program belépési pontja.
4. Állítsa a PORTB 0. tűjét kimenetnek.
DDRB = 0b00000001; // A PORTB1 beállítása kimenetként
Ezt úgy tesszük meg, hogy egy bináris számot írunk a B adatirány -regiszterbe. A B adatirány -regiszter lehetővé teszi a B -regiszter bitjeinek be- vagy kimenetét. Ha 1 -et írunk, akkor kimenetet kapunk, míg 0 -t írunk be. Mivel egy LED -et csatlakoztatunk kimenetként, bináris számot írunk, így a PORT B 0 -ás gombja lesz a kimenet.
5. Hurok.
míg (1) {
Ez az állítás ciklus, gyakran főhurokként vagy eseményhurokként emlegetik. Ez a kód mindig igaz; ezért végtelen ciklusban újra és újra végrehajtja. Soha nem szűnik meg. Ezért a LED végtelenül villogni fog, hacsak nem kapcsolja ki a tápellátást a mikrokontrollerből, vagy nem törli a kódot a program memóriájából.
6. Kapcsolja be a PB0 porthoz csatlakoztatott LED -et
PORTB = 0b00000001; // bekapcsolja a PB0 porthoz csatlakoztatott LED -et
Ez a sor 1 -et ad a PortB PB0 -jának. A PORTB egy hardverregiszter az AVR chipen, amely 8 tűt tartalmaz, PB7-PB0, balról jobbra haladva. Ha 1 -et tesz a végére, 1 -et ad a PB0 -nak; ez magasra állítja a PB0 -t, ami bekapcsolja. Ezért a PB0 csaphoz rögzített LED bekapcsol és világít.
7. Késleltetés
_delay_ms (1000); // 1 másodperces késleltetést hoz létre
Ez a kijelentés 1 másodperces késleltetést hoz létre, így a LED pontosan 1 másodpercig világít és világít.
8. Kapcsolja ki az összes B csapot, beleértve a PB0 -t is
PORTB = 0b00000000; // Kikapcsolja az összes B csapot, beleértve a PB0 -t is
Ez a vonal kikapcsolja mind a 8 B portot, így még a PB0 is ki van kapcsolva, tehát a LED kialszik.
9. Újabb késés
_delay_ms (1000); // újabb 1 másodperces késleltetést hoz létre
Pontosan kikapcsol 1 másodpercre, mielőtt újrakezdi a ciklust, és találkozik a vonallal, amely újra bekapcsolja, és megismétli a folyamatot. Ez végtelenül megtörténik, így a LED folyamatosan villog.
10. Visszatérési nyilatkozat
}
visszatérés (0); // ezt a sort soha nem éri el}
Kódunk utolsó sora egy return (0) utasítás. Annak ellenére, hogy ezt a kódot soha nem hajtják végre, mert van egy végtelen ciklus, amely soha nem ér véget, az asztali számítógépeken futó programjaink számára fontos, hogy az operációs rendszer tudja, hogy megfelelően futottak -e. Ezért a fordítónk, a GCC azt szeretné, ha minden main () visszatérési kóddal zárulna. A visszatérési kódok szükségtelenek az AVR kódok esetében, amelyek minden támogató operációs rendszer szabadon futnak; ennek ellenére a fordító figyelmeztetést ad, ha nem fejezi be a main a return () -vel.
Az utolsó lépés a projekt felépítése. Ez azt jelenti, hogy össze kell állítani és végül össze kell kapcsolni az összes objektumfájlt a végrehajtható fájl (.hex) létrehozásához. Ez a hexa fájl a Project mappában található Debug mappában jön létre. Ez a hatszögletű fájl készen áll a betöltésre a mikrokontroller chipbe.
2. lépés: A mikrovezérlő biztosíték bitjeinek alapértelmezett konfigurációjának módosítása
Fontos megjegyezni, hogy a biztosítékok egy része felhasználható a chip bizonyos aspektusainak lezárására, és potenciálisan lefalazhatja (használhatatlanná teheti)
Az ATmega328P összesen 19 biztosítékbitet használ, és három különböző biztosítékbájtra van felosztva. A biztosítékok bitjeiből három a "Extended Fuse Byte", nyolc a "Fuse High Byte", nyolc további pedig a "Fuse Low Byte". Van egy negyedik bájt is, amely a zárbitek programozására szolgál.
Minden bájt 8 bit, és minden bit egy külön beállítás vagy zászló. Amikor beállításról, nem beállításról, programozott, nem programozott biztosítékról beszélünk, valójában binárisat használunk. Az 1 azt jelenti, hogy nincs beállítva, nincs programozva, a nulla pedig azt jelenti, hogy beállítva, programozva. A biztosítékok programozásakor használhat bináris vagy gyakrabban hexadecimális jelölést.
Az ATmega 328P chipek beépített RC oszcillátorral rendelkeznek, amely 8 MHz -es frekvenciával rendelkezik. Új chipeket szállítunk ezzel a készlettel óraforrásként, és a CKDIV8 biztosíték aktív, ami 1 MHz -es rendszerórát eredményez. Az indítási idő maximálisra van állítva, és az időtúllépés engedélyezve van.
Az új ATMega 328P chipek általában a következő biztosítékbeállításokkal rendelkeznek:
Alacsony biztosíték = 0x62 (0b01100010)
Magas biztosíték = 0xD9 (0b11011001)
Kiterjesztett biztosíték = 0xFF (0b11111111)
ATmega 328 chipet fogunk használni, külső 16MHz -es kristállyal. Ezért a "Fuse Low Byte" bitjeit ennek megfelelően kell programoznunk.
1. A 3-0 bit vezérli az oszcillátor választását, és a 0010 alapértelmezett beállítás a kalibrált belső RC oszcillátor használata, amit nem szeretnénk. Az alacsony teljesítményű kristályoszcillátor működését 8,0 és 16,0 MHz között szeretnénk, ezért a 3-1 biteket (CKSEL [3: 1]) 111-re kell állítani.
2. Az 5. és a 4. bit szabályozza az indítási időt, és az alapértelmezett 10-es beállítás hat óra ciklusú indítási késleltetésre vonatkozik a kikapcsolásból és az energiatakarékosságból, valamint további 14 órás ciklus indítási késleltetésből és 65 milliszekundumból a visszaállításból.
Az alacsony teljesítményű kristályoszcillátor biztonságos oldala érdekében szeretnénk a lehetséges maximális késleltetést, 16 000 óra ciklusból a kikapcsolás és az energiatakarékosság miatt, ezért a SUT [1] értékét 1-re kell állítani, plusz egy további indítási késleltetést 14 óra ciklusból plusz 65 ezredmásodperccel a visszaállítás után, ezért a SUT [0] értékét 1 -re kell állítani. Ezenkívül a CKSEL [0] értékét 1 -re kell állítani.
3. A 6. bit vezérli az óra kimenetét a PORTB0 -ra, ami nem érdekel minket. Tehát a 6. bit 1 -re állítható.
4. A 7. bit a 8-as osztás műveletet vezérli, és a 0 alapértelmezett beállítás engedélyezi a funkciót, amit nem szeretnénk. Tehát a 7. bitet 0 -ról 1 -re kell változtatni.
Ezért az új Fuse Low Byte 11111111 legyen, ami hexadecimális jelöléssel 0xFF
A "Fuse Low Byte" bitjeinek programozásához használhatjuk programozónkat (https://www.instructables.com/id/ISP-Programmer-fo…) és az AVRDUDE szoftvert. Az AVRDUDE egy parancssori segédprogram, amely az Atmel mikrokontrollerekről való letöltésre és feltöltésre szolgál.
AVRDUDE letöltése:
Először hozzá kell adnunk a programozónk leírását az AVRDUDE konfigurációs fájljához. Windows rendszeren a konfigurációs fájl általában ugyanazon a helyen található, mint az AVRDUDE futtatható fájlja.
Illessze be a szöveget az avrdude.conf konfigurációs fájlba:
# ISPProgv1
programozó id = "ISPProgv1"; desc = "soros port banging, reset = dtr sck = rts mosi = txd miso = cts"; type = "serbb"; kapcsolat_típus = soros; reset = 4; sck = 7; mosi = 3; miso = 8;;
Az AVRDUDE indítása előtt a séma szerint csatlakoztatnunk kell a mikrokontrollert a programozóhoz
Nyissa meg a DOS prompt ablakát.
1. Az avrdude által támogatott programozók listájának megtekintéséhez írja be az avrdude -c c parancsot. Ha minden rendben van, a listának programozói azonosítóval kell rendelkeznie "ISPProgv1"
2. Az Avrdude által támogatott Atmel eszközök listájának megtekintéséhez írja be az avrdude -c ISPProgv1 parancsot. A listának tartalmaznia kell az m328p eszközt az Atmel ATMega 328P számára.
Ezután írja be az avrdude -c ISPProgv1 –p m328p parancsot, a parancs mondja meg az avrdude -nak, hogy milyen programozót használ, és milyen Atmel mikrokontrollert csatolt. Az ATmega328P aláírást hexadecimális jelöléssel mutatja be: 0x1e950f. Ez bemutatja a biztosítékbites programozást jelenleg az ATmega328P -ben, hexadecimális jelöléssel is; ebben az esetben a biztosítékbájtok gyári alapértelmezés szerint vannak programozva.
Ezután írja be az avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m parancsot. Ez egy parancs, amely megmondja az avrdude -nak, hogy milyen programozót használ, és milyen Atmel mikrokontrollert csatolt, és hogy a biztosíték alacsony bájtját 0xFF -re változtassa.
Most az órajelnek kis teljesítményű kristályoszcillátorból kell származnia.
3. lépés: A program beégetése az ATMega328P mikrokontroller memóriájába
Először másolja a program hex fájlját, amelyet az utasítás elején készítettünk az AVRDUDE könyvtárba.
Ezután írja be a DOS parancssori ablakba az avrdude –c ISPProgv1 –p m328p –u –U flash parancsot: w: [a hexa fájl neve]
A parancs hex fájlt ír a mikrokontroller memóriájába. Most a mikrokontroller programunk utasításainak megfelelően működik. Nézzük meg!
4. lépés: Ellenőrizze, hogy a mikrokontroller programunk utasításainak megfelelően működik -e
Csatlakoztassa az alkatrészeket az AVR villogó LED áramkörének sematikus diagramja szerint
Először is szükségünk van áramra, mint minden AVR áramkör. Körülbelül 5 voltos teljesítmény elegendő az AVR chip működéséhez. Ezt akkumulátorokból vagy egyenáramú tápegységből szerezheti be. +5V tápellátást csatlakoztatunk a 7 -es érintkezőhöz, és a 8 -as érintkezőt a kenyértáblán lévő földhöz. Mindkét tű közé 0,1 μF kerámia kondenzátort helyezünk, hogy kiegyenlítse a tápegység áramellátását, így az AVR chip sima áramvezetéket kap.
A 10KΩ -os ellenállás a készülék bekapcsolásának visszaállítását (POR) biztosítja. Amikor a tápfeszültség be van kapcsolva, a kondenzátor feszültsége nulla lesz, így a készülék alaphelyzetbe áll (mivel a visszaállítás aktív alacsony), majd a kondenzátor VCC -re töltődik, és a visszaállítás le van tiltva.
Csatlakoztatjuk a LED -es anódot az AVR PB0 csaphoz. Ez az ATMega328P 14. tűje. Mivel ez egy LED, szeretnénk korlátozni a LED -re áramló áramot, hogy ne égjen ki. Ezért egy 330Ω -os ellenállást sorba helyezünk a LED -del. A LED katódja a földhöz csatlakozik.
16 MHz -es kristályt használnak az Atmega328 mikrokontroller órájának biztosítására, 22pF kondenzátorokat pedig a kristály működésének stabilizálására.
Ezek a csatlakozók szükségesek a LED világításához. Tápegység.
Rendben. A LED egy másodperces késéssel villog. A mikrokontroller munkája megfelel a feladatainknak
5. lépés: Következtetés
Igaz, ez hosszú folyamat volt egy LED villogására, de az igazság az, hogy sikeresen elhárította a fő akadályokat: hardverplatform létrehozása az AVR mikrokontroller programozásához, az Atmel Studio használata integrált fejlesztői platformként, az AVRDUDE szoftver használata AVR mikrokontroller konfigurálása és programozása
Ha szeretnél naprakész lenni az alapvető mikrokontroller -projektjeimről, iratkozz fel a YouTube -ra! A videóim megtekintése és megosztása segíthet abban, amit csinálok
Iratkozz fel a YouTube FOG csatornára
Ajánlott:
Arduino ISP -ként -- Írja be a hexafájlt az AVR -ben -- Biztosíték az AVR -ben -- Arduino programozóként: 10 lépés
Arduino ISP -ként || Írja be a hexafájlt az AVR -ben || Biztosíték az AVR -ben || Arduino programozóként: ……………………… További videókért Iratkozzon fel YouTube -csatornámra …….. Ez a cikk az arduino -ról szól, mint isp. Ha hexadecimális fájlt szeretne feltölteni, vagy ha be szeretné állítani a biztosítékot az AVR -ben, akkor nem kell programozót vásárolnia, megteheti
Az Arduino Pro Mini 328P program feltöltése az Arduino Uno használatával: 6 lépés
Az Arduino Pro Mini 328P program feltöltése az Arduino Uno használatával: Az Arduino Pro Mini a legkisebb forgácslap, amely 14 I/O tűvel rendelkezik, 3,3 - 5 voltos egyenáramban működik, és könnyen feltöltheti a kódot a programozó eszközbe. digitális bemeneti/kimeneti portok RX, TX, D2 ~ D13, 8 analóg bemeneti port A0 ~ A7 1
Program vagy kód feltöltése az Arduino Pro Mini készülékbe a CH340 UART soros átalakító kábel használatával: 4 lépés
Program vagy kód feltöltése az Arduino Pro Mini készülékbe a CH340 UART soros átalakító kábel használatával: Az USB TTL soros kábelek az USB -soros átalakító kábelek egy sorozata, amelyek biztosítják az USB és soros UART interfészek közötti kapcsolatot. Számos kábel áll rendelkezésre, amelyek 5 voltos, 3,3 voltos vagy a felhasználó által meghatározott jelszintű csatlakoztathatóságot kínálnak
Az ATMEGA 8, 16, 328 Attiny és biztosíték bit programozása: 5 lépés
Az ATMEGA programozása 8,16,328 Attiny és biztosíték bit: Szia barátok. Ma megmutatom, hogyan programozható az ATMEGA 8,16,328 Attiny és Fuse Bit
Villogó fényáramkör létrehozása 555 időzítővel és relével: 3 lépés
Villogó fényáramkör létrehozása 555 -ös időzítővel és relével: Megmutatom, hogyan kell váltakozó pulzáló áramkört létrehozni (555 -ös időzítő segítségével) a relé futtatásához. A relétől függően lehetséges, hogy 120VAC -os fényt tud működtetni. Nem változik ilyen jó kis kondenzátorral (később elmagyarázom)