Tartalomjegyzék:

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

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

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
Videó: LDmicro 12: платы Arduino без IDE (лестничное программирование ПЛК микроконтроллера с помощью LDmicro) 2024, November
Anonim
Image
Image

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

Írási program és a Hex fájl összeállítása az Atmel Studio segítségével
Írási program és a Hex fájl összeállítása az Atmel Studio segítségével
Írási program és a hexa fájl összeállítása az Atmel Studio segítségével
Írási program és a hexa fájl összeállítása az Atmel Studio segítségével

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

A mikrovezérlő biztosíték bitjeinek alapértelmezett konfigurációjának megváltoztatása
A mikrovezérlő biztosíték bitjeinek alapértelmezett konfigurációjának megváltoztatása
A mikrovezérlő biztosíték bitjeinek alapértelmezett konfigurációjának megváltoztatása
A mikrovezérlő biztosíték bitjeinek alapértelmezett konfigurációjának megváltoztatása
A mikrovezérlő biztosíték bitjeinek alapértelmezett konfigurációjának megváltoztatása
A mikrovezérlő biztosíték bitjeinek alapértelmezett konfigurációjának megváltoztatá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

A program beégetése az ATMega328P mikrokontroller memóriájába
A program beégetése az ATMega328P mikrokontroller memóriájába
A program beégetése az ATMega328P mikrokontroller memóriájába
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

Ellenőrizze, hogy a mikrokontroller programunk utasításai szerint működik -e
Ellenőrizze, hogy a mikrokontroller programunk utasításai szerint működik -e
Ellenőrizze, hogy a mikrokontroller programunk utasításai szerint működik -e
Ellenőrizze, hogy a mikrokontroller programunk utasításai szerint működik -e
Ellenőrizze, hogy a mikrokontroller programunk utasításai szerint működik -e
Ellenőrizze, hogy a mikrokontroller programunk utasításai szerint 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: