Kazalo:
- 1. korak: S programom Atmel Studio napišite program in sestavite šestnajstiško datoteko
- 2. korak: Spremenite privzeto konfiguracijo varovalk bitov mikro krmilnika
- 3. korak: zapisovanje programa v pomnilnik mikrokontrolerja ATMega328P
- 4. korak: Preverite delovanje mikrokrmilnika v skladu z navodili našega programa
- 5. korak: Zaključek
Video: Konfiguracija nastavkov varovalk mikrokontrolerja AVR. Ustvarjanje in nalaganje v bliskovni pomnilnik mikrokontrolerja LED utripajočega programa .: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
V tem primeru bomo ustvarili preprost program v kodi C in ga zapisali v pomnilnik mikrokrmilnika. Napisali bomo lasten program in zbrali šestnajstiško datoteko z uporabo Atmel Studio kot integrirane razvojne platforme. Z lastnim programerjem in programsko opremo AVRDUDE bomo konfigurirali bite varovalk in naložili šestnajstiško datoteko v pomnilnik mikrokrmilnika AVR ATMega328P.
AVRDUDE - je program za prenos in nalaganje pomnilnikov na čipu Atmelovih mikrokrmilnikov AVR. Lahko programira Flash in EEPROM, kjer to podpira protokol serijskega programiranja, pa lahko programira varovalke in ključe.
1. korak: S programom Atmel Studio napišite program in sestavite šestnajstiško datoteko
Če nimate programa Atmel Studio, ga prenesite in namestite:
Ta projekt bo uporabljal C, zato izberite možnost GCC C izvedljiv projekt s seznama predlog, da ustvarite izvedljiv projekt golih kosti.
Nato je treba določiti, za katero napravo bo projekt razvit. Ta projekt bo razvit za mikrokrmilnik AVR ATMega328P.
Vnesite kodo programa v urejevalnik glavnega vira v studiu Atmel. Urejevalnik glavnega vira - to okno je glavni urejevalnik izvornih datotek v trenutnem projektu. Urejevalnik ima funkcije preverjanja črkovanja in samodejnega dokončanja.
1. Prevajalniku moramo povedati, s kakšno hitrostjo teče naš čip, da lahko pravilno izračuna zamude.
#ifndef F_CPU
#define F_CPU 16000000UL // povedana frekvenca kristala krmilnika (16 MHz AVR ATMega328P) #endif
2. Vključujemo preambulo, kamor vnesemo informacije o vključitvi iz drugih datotek, ki opredeljujejo globalne spremenljivke in funkcije.
#include // glava za omogočanje nadzora pretoka podatkov nad zatiči. Določa zatiče, vrata itd.
#include // glava za omogočanje funkcije zamika v programu
3. Po preambuli pride funkcija main ().
int main (void) {
Funkcija main () je edinstvena in ločena od vseh drugih funkcij. Vsak program C mora imeti natanko eno funkcijo main (). Main () je mesto, kjer AVR začne izvajati vašo kodo, ko se prvič vklopi, zato je to vstopna točka programa.
4. Nastavite pin 0 na PORTB kot izhod.
DDRB = 0b00000001; // Nastavi PORTB1 kot izhod
To naredimo tako, da v register podatkovne smeri B. zapišemo binarno številko. Register smeri podatkov B nam omogoča vnos ali izhod bitov registra B. Če napišete 1, jih naredite izhodne, 0 pa jih vnese. Ker priklopimo LED, ki deluje kot izhod, zapišemo binarno število, tako da je pin 0 na PORT B kot izhod.
5. Zanka.
medtem ko (1) {
Ta stavek je zanka, ki se pogosto imenuje glavna zanka ali zanka dogodka. Ta koda je vedno resnična; zato se vedno znova izvaja v neskončni zanki. Nikoli ne preneha. Zato bo LED utripala v neskončnosti, razen če je mikrokrmilnik izklopljen ali koda izbrisana iz programskega pomnilnika.
6. Vklopite LED, priključeno na vrata PB0
PORTB = 0b00000001; // vklopi LED, priključeno na vrata PB0
Ta vrstica daje 1 PB0 PortB. PORTB je register strojne opreme na čipu AVR, ki vsebuje 8 zatičev, PB7-PB0, od leve proti desni. Če na koncu postavite 1, dobite 1 za PB0; to nastavi PB0 visoko, kar ga vklopi. Zato se bo LED, pritrjena na pin PB0, prižgala in zasvetila.
7. Zamuda
_dey_ms (1000); // ustvari 1-sekundno zamudo
Ta izjava ustvari 1-sekundno zamudo, tako da LED sveti in ostane vklopljena točno 1 sekundo.
8. Izklopite vse zatiče B, vključno s PB0
PORTB = 0b00000000; // Izklopi vse zatiče B, vključno s PB0
Ta linija izklopi vseh 8 zatičev vrat B, tako da je celo PB0 izklopljen, zato LED ugasne.
9. Še ena zamuda
_dey_ms (1000); // ustvari še 1-sekundno zamudo
Izklopi se natančno za 1 sekundo, preden znova zažene zanko in naleti na črto, ki jo znova vklopi in postopek ponovi. To se zgodi neskončno, tako da LED neprestano utripa in ugasne.
10. Izjava o vračilu
}
return (0); // ta vrstica nikoli ni dosežena}
Zadnja vrstica naše kode je stavek return (0). Čeprav se ta koda nikoli ne izvede, ker obstaja neskončna zanka, ki se nikoli ne konča, je za naše programe, ki se izvajajo na namiznih računalnikih, pomembno, da operacijski sistem ve, ali so delovali pravilno ali ne. Zato GCC, naš prevajalnik, želi, da se vsak main () konča z vrnilno kodo. Povratne kode niso potrebne za kodo AVR, ki deluje samostojno v katerem koli podpornem operacijskem sistemu; kljub temu bo prevajalnik sprožil opozorilo, če glavnega ne končate z return ().
Zadnji korak je izgradnja projekta. To pomeni sestavljanje in končno povezovanje vseh predmetnih datotek za ustvarjanje datoteke izvršljive datoteke (.hex). Ta šestnajstiška datoteka je ustvarjena v mapi Debug, ki je v mapi Project. Ta šestnajstiška datoteka je pripravljena za nalaganje v čip mikrokrmilnika.
2. korak: Spremenite privzeto konfiguracijo varovalk bitov mikro krmilnika
Pomembno si je zapomniti, da se nekateri deli varovalk lahko uporabijo za zaklepanje nekaterih vidikov čipa in ga lahko potencialno opečejo (postane neuporaben)
V ATmega328P se uporablja skupaj 19 varovalk, ki so ločene v tri različne bajte varovalk. Trije bitovi varovalk so v "podaljšanem bajtu varovalk", osem v "visokem bajtu varovalk", še osem pa v "nizkem bajtu varovalk". Obstaja tudi četrti bajt, ki se uporablja za programiranje zaklepnih bitov.
Vsak bajt je 8 bitov in vsak bit je ločena nastavitev ali zastavica. Ko govorimo o nastavitvi, ne nastavitvi, programiranih in ne programiranih varovalkah, dejansko uporabljamo binarne. 1 pomeni ni nastavljeno, ni programirano in nič pomeni nastavljeno, programirano. Pri programiranju varovalk lahko uporabite binarni zapis ali pogosteje šestnajstiški zapis.
Čipi ATmega 328P imajo vgrajen RC oscilator, ki ima frekvenco 8 MHz. S tem kompletom kot virom ure in varovalko CKDIV8 so poslani novi čipi, kar ima za posledico sistemsko uro 1 MHz. Čas zagona je nastavljen na največjo možno vrednost, čas zakasnitve pa omogočen.
Novi čipi ATMega 328P imajo na splošno naslednje nastavitve varovalk:
Nizka varovalka = 0x62 (0b01100010)
Visoka varovalka = 0xD9 (0b11011001)
Podaljšana varovalka = 0xFF (0b11111111)
Uporabljali bomo čip ATmega 328 z zunanjim 16MHz kristalom. Zato moramo ustrezno programirati bite "Fuse Low Byte".
1. Biti 3-0 nadzirajo izbiro oscilatorja, privzeta nastavitev 0010 pa je uporaba kalibriranega notranjega RC oscilatorja, česar ne želimo. Želimo delovanje kristalnega oscilatorja z nizko močjo od 8,0 do 16,0 MHz, zato je treba bit 3-1 (CKSEL [3: 1]) nastaviti na 111.
2. Bita 5 in 4 nadzorujeta čas zagona, privzeta nastavitev 10 pa je za zakasnitev zagona šest ciklov ure od izklopa in varčevanja z energijo ter dodatna zamuda pri zagonu 14 ciklov ur in 65 milisekund od ponastavitve.
Da bi bili varni pri kristalnem oscilatorju z nizko močjo, želimo največjo možno zakasnitev 16 000 taktov takta od izklopa in varčevanja z energijo, zato je treba SUT [1] nastaviti na 1 in dodatno zamudo pri zagonu 14 ciklov ure plus 65 milisekund od ponastavitve, zato je treba SUT [0] nastaviti na 1. Poleg tega je treba CKSEL [0] nastaviti na 1.
3. Bit 6 nadzoruje izhod ure na PORTB0, kar nas ne zanima. Tako lahko bit 6 nastavimo na 1.
4. Bit 7 nadzoruje deljenje z 8 in privzeta nastavitev 0 ima omogočeno funkcijo, česar ne želimo. Zato je treba bit 7 spremeniti iz 0 v 1.
Zato bi moral biti novi nizki bajt varovalk 11111111, ki je v šestnajstiškem zapisu 0xFF
Za programiranje bitov "Fuse Low Byte" lahko uporabimo naš programer (https://www.instructables.com/id/ISP-Programmer-fo…) in programsko opremo AVRDUDE. AVRDUDE je pripomoček ukazne vrstice, ki se uporablja za prenos in nalaganje v mikrokrmilnike Atmel.
Prenesite AVRDUDE:
Najprej moramo v opisno datoteko programa AVRDUDE dodati opis našega programerja. V sistemu Windows je konfiguracijska datoteka običajno na istem mestu kot izvršljiva datoteka programa AVRDUDE.
Prelepite besedilo v konfiguracijski datoteki avrdude.conf:
# ISPProgv1
programer id = "ISPProgv1"; desc = "udarjanje v serijska vrata, ponastavitev = dtr sck = rts mosi = txd miso = cts"; type = "serbb"; vrsta povezave = serijska; ponastavitev = 4; sck = 7; mosi = 3; miso = 8;;
Pred zagonom programa AVRDUDE moramo mikrokontroler povezati s programerjem v skladu s shemo
Odprite okno poziva DOS.
1. Za ogled seznama programerja, ki ga podpira avrdude, vnesite ukaz avrdude -c c. Če je vse v redu, mora biti na seznamu programerja "ISPProgv1"
2. Če si želite ogledati seznam naprav Atmel, ki jih podpira avrdude, vnesite ukaz avrdude -c ISPProgv1. Na seznamu mora biti naprava m328p za Atmel ATMega 328P.
Nato vnesite avrdude -c ISPProgv1 -p m328p, ukaz avrdude pove, kateri programer se uporablja in kateri mikrokontroler Atmel je priključen. Predstavlja podpis ATmega328P v šestnajstiškem zapisu: 0x1e950f. Predstavlja programiranje bitov varovalk, ki je trenutno v ATmega328P, tudi v šestnajstiškem zapisu; v tem primeru so bajti varovalk programirani na tovarniško privzeto vrednost.
Nato vnesite avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m. To je ukaz, ki avrdude pove, kateri programer se uporablja in kateri Atmel mikrokrmilnik je priključen, ter spremenite spodnji bajt varovalke na 0xFF.
Zdaj bi signal ure moral prihajati iz kristalnega oscilatorja majhne moči.
3. korak: zapisovanje programa v pomnilnik mikrokontrolerja ATMega328P
Najprej v imenik AVRDUDE kopirajte šestnajstiško datoteko programa, ki smo ga naredili na začetku navodila.
Nato v okno poziva DOS vnesite ukaz avrdude –c ISPProgv1 –p m328p –u –U flash: w: [ime vaše šestnajstiške datoteke]
Ukaz zapiše šestnajstiško datoteko v pomnilnik mikrokrmilnika. Zdaj mikrokrmilnik deluje v skladu z navodili našega programa. Preverimo!
4. korak: Preverite delovanje mikrokrmilnika v skladu z navodili našega programa
Komponente povežite v skladu s shematskim diagramom utripajočega LED vezja AVR
Najprej potrebujemo moč, tako kot vsa vezja AVR. Za delovanje čipa AVR zadostuje približno 5 voltov moči. To lahko dobite iz baterij ali enosmernega napajanja. Na pin 7 priključimo +5V napajanja in pin 8 priključimo na maso na plošči. Med obe nožici postavimo 0,1μF keramični kondenzator, da izravnamo moč napajalnika, tako da čip AVR dobi gladko napajalno linijo.
10KΩ upor se uporablja za napajanje naprave ob ponovnem vklopu (POR). Ko je napajanje vklopljeno, bo napetost na kondenzatorju enaka nič, zato se naprava ponastavi (ker je ponastavitev aktivna nizko), se kondenzator napolni na VCC in ponastavitev bo onemogočena.
Priključimo anodo naše LED na pin AVR PB0. To je pin 14 ATMega328P. Ker gre za LED, želimo omejiti tok, ki teče na LED, da ne izgori. Zato z LED diodo zaporedno namestimo 330Ω upor. Katoda LED se poveže z maso.
16 MHz kristal se uporablja za zagotavljanje ure za mikrokrmilnik Atmega328, kondenzatorji 22pF pa za stabilizacijo delovanja kristala.
To so vse povezave, potrebne za prižig LED. Napajanje.
V redu. LED utripa z eno sekundno zamudo. Delo mikrokrmilnika ustreza našim nalogam
5. korak: Zaključek
Resda je bil to dolg postopek za samo utripanje LED, vendar je resnica, da ste uspešno odpravili velike ovire: ustvarjanje strojne platforme za programiranje mikrokrmilnika AVR, uporaba Atmel Studio kot integrirane razvojne platforme, uporaba AVRDUDE kot programske opreme za konfiguriranje in programiranje mikrokrmilnika AVR
Če želite biti na tekočem z mojimi projekti osnovnih krmilnikov, se naročite na moj YouTube! Gledanje in izmenjava mojih videoposnetkov je podpora za to, kar počnem
Naročite se na kanal YouTube FOG
Priporočena:
Dekoracija utripajočega drevesa iz tiskane plošče: 5 korakov (s slikami)
Dekoracija utripajočega drevesa iz tiskane plošče: V tej vadnici se boste naučili, kako učinkovito narediti projekt elektronike. Kot primer bom naredil tiskano vezje z utripajočimi lučmi od začetka do konca. Vsa elektronika deluje sama, brez kodiranja. Vse kar morate storiti je, da priključite
Vgrajeni cilindrični nosilec varovalk (priključki): 15 korakov (s slikami)
Inline cilindrični nosilec varovalk (konektorji): Ta navodila so namenjena valjastim steklenim držalom varovalk, ustvarjenim v TinkerCAD -u. Ta projekt se je začel junija in se prijavil na natečaj za oblikovanje TinkerCAD. Obstajata dve vrsti nosilcev varovalk, ena za običajne 5x20 mm in druga za
Trije načini za izdelavo LED utripajočega vezja z nadzorom hitrosti in nadomestnim utripanjem: 3 koraki
Trije načini za izdelavo LED utripajočega vezja s krmiljenjem hitrosti in nadomestnim utripanjem: vezje utripa je vezje, v katerem LED utripa VKLOP in IZKLOP s hitrostjo, na katero vpliva uporabljeni kondenzator. Tukaj vam bom pokazal tri različne načine, kako to vezje narediti z uporabo : 1. Tranzistorji 2. 555 Timer IC3. Kremenčevo vezjeLDR se lahko uporablja tudi za
Skriti USB -pomnilnik: 5 korakov (s slikami)
Skriti USB -pomnilnik: Če ste podobni meni, imate lahko ali pa tudi ne skrivne datoteke, ki načrtujejo svetovno prevlado in druga zlonamerna dejanja. Te datoteke je očitno treba skriti pred radovednimi očmi sester, agentov FBI, starih staršev itd. Pretvorili bomo telefonski vtič
USB pomnilnik za cigare (z LED): 12 korakov (s slikami)
Flash Cigar Flash Memory (z LED diodami): sveti rdeče, ko je priključen, sveti ob dostopu do diska. Dotik posebnosti za vaš računalnik! Posodobljen video: (glasba je shranjena na cigari, vendar jo računalnik predvaja takoj, ko je disk USB priključen in prepoznan) Za ljubitelje cigaret, pripomočke,