INHOUDSOPGAWE:
- Stap 1: Skryfprogram en stel die hex -lêer saam met die Atmel Studio
- Stap 2: Verandering van die standaardkonfigurasie van die sekuriteitsbits van die mikrobeheerder
- Stap 3: Brand die program in die geheue van die ATMega328P -mikrobeheerder
- Stap 4: Kontroleer of die mikrobeheerder volgens die instruksies van ons program werk
- Stap 5: Gevolgtrekking
Video: Konfigurasie van die AVR -mikrobeheerder. Skep en laai die LED -knipperprogram in die flitsgeheue van die mikrokontroleerder op: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
In hierdie geval skep ons 'n eenvoudige program in C -kode en verbrand dit in die geheue van die mikrobeheerder. Ons sal ons eie program skryf en die hex -lêer saamstel, met behulp van die Atmel Studio as die geïntegreerde ontwikkelingsplatform. Met behulp van ons eie programmeerder en sagteware AVRDUDE sal ons lontstukkies konfigureer en 'n hex -lêer in die geheue van die AVR ATMega328P -mikrobeheerder oplaai.
AVRDUDE - is 'n program om die geheue op die chip van Atmel se AVR -mikrobeheerders af te laai en op te laai. Dit kan die Flash en EEPROM programmeer, en waar dit ondersteun word deur die seriële programmeringsprotokol, kan dit lont- en sluitstukke programmeer.
Stap 1: Skryfprogram en stel die hex -lêer saam met die Atmel Studio
As u nie Atmel Studio het nie, moet u dit aflaai en installeer:
Hierdie projek sal C gebruik, dus kies die GCC C uitvoerbare projek-opsie uit die sjabloonlys om 'n uitvoerbare projek met kaalbene te genereer.
Vervolgens moet u spesifiseer vir watter toestel die projek ontwikkel sal word. Hierdie projek sal ontwikkel word vir die AVR ATMega328P -mikrobeheerder.
Tik die programkode in die hoofbronredakteur -gebied van Atmel Studio. Die hoofbronredakteur - Hierdie venster is die hoofredakteur vir die bronlêers in die huidige projek. Die redakteur het spellingkontrole en funksies vir outomatiese voltooiing.
1. Ons moet die samesteller vertel teen watter spoed ons skyf hardloop, sodat dit vertragings behoorlik kan bereken.
#ifndef F_CPU
#definieer F_CPU 16000000UL // vertel die kristalfrekwensie van die beheerder (16 MHz AVR ATMega328P) #endif
2. Ons sluit die aanhef in, dit is waar ons ons inligting insluit van ander lêers, wat globale veranderlikes en funksies definieer, insluit.
#include // header om die datavloeibeheer oor penne moontlik te maak. Definieer penne, poorte, ens.
#include // header om die vertragingsfunksie in die program moontlik te maak
3. Na die aanhef kom die hooffunksie ().
int main (leeg) {
Die hooffunksie () is uniek en onderskei van alle ander funksies. Elke C -program moet presies een hooffunksie hê (). Main () is waar die AVR u kode begin uitvoer wanneer die krag eers aangaan, dus dit is die ingangspunt van die program.
4. Stel pen 0 van die PORTB as uitvoer.
DDRB = 0b00000001; // Stel PORTB1 as uitset in
Ons doen dit deur 'n binêre getal na die Data Direction Register B. te skryf. Met die Data Direction Register B kan ons die stukke van register B invoer of uitset maak. Deur 'n 1 te skryf, word die uitset uitgedruk, terwyl 'n 0 hulle invoer. Omdat ons 'n LED aanheg om as uitset op te tree, skryf ons 'n binêre getal, wat die pen 0 van PORT B as uitset maak.
5. Lus.
terwyl (1) {
Hierdie stelling is 'n lus, wat dikwels die hooflus of gebeurtenislus genoem word. Hierdie kode is altyd waar; daarom word dit keer op keer uitgevoer in 'n oneindige lus. Dit hou nooit op nie. Daarom sal die LED oneindig flikker, tensy die krag van die mikrobeheerder afgeskakel word of die kode uit die programgeheue uitgevee word.
6. Skakel LED aan wat aan poort PB0 gekoppel is
PORTB = 0b00000001; // skakel LED aan aan poort PB0
Hierdie lyn gee 'n 1 aan die PB0 van PortB. PORTB is 'n hardeware-register op die AVR-chip wat 8 penne bevat, PB7-PB0, van links na regs. Om 'n 1 aan die einde te plaas, gee 'n 1 aan PB0; dit stel PB0 hoog wat dit aanskakel. Daarom sal die LED wat aan pin PB0 gekoppel is, aanskakel en brand.
7. Vertraging
_vertraging_ms (1000); // skep 'n vertraging van 1 sekonde
Hierdie verklaring veroorsaak 'n vertraging van 1 sekonde, sodat die LED presies 1 sekonde aanskakel en aanhou.
8. Skakel alle B -penne uit, insluitend PB0
PORTB = 0b00000000; // Skakel alle B -penne uit, insluitend PB0
Hierdie lyn skakel al 8 Port B -penne uit, sodat selfs PB0 af is, sodat die LED afskakel.
9. Nog 'n vertraging
_vertraging_ms (1000); // skep nog 'n vertraging van 1 sekonde
Dit word presies vir 1 sekonde uitgeskakel voordat die lus weer van voor af begin word en die lyn teëkom, wat dit weer aanskakel, en die proses herhaal. Dit gebeur oneindig, sodat die LED voortdurend aan en af flikker.
10. Opgaweverklaring
}
terugkeer (0); // hierdie reël word nooit bereik nie}
Die laaste reël van ons kode is 'n retour (0) verklaring. Alhoewel hierdie kode nooit uitgevoer word nie, want daar is 'n oneindige lus wat nooit eindig nie, vir ons programme wat op tafelrekenaars werk, is dit belangrik dat die bedryfstelsel weet of dit reg is of nie. Om hierdie rede wil GCC, ons samesteller, dat elke hoof () met 'n retourkode eindig. Retourkodes is onnodig vir AVR -kode, wat vrystaande toestelle van enige ondersteunende bedryfstelsel bedryf; die samesteller sal egter 'n waarskuwing gee as u nie die hoof met terugkeer () eindig nie.
Die laaste stap is die bou van die projek. Dit beteken om alle objeklêers saam te stel en uiteindelik te koppel om die uitvoerbare lêer (.hex) lêer te genereer. Hierdie hex -lêer word gegenereer in die map Debug wat in die Project -lêergids is. Hierdie hex -lêer is gereed om in die mikrobeheerskyfie gelaai te word.
Stap 2: Verandering van die standaardkonfigurasie van die sekuriteitsbits van die mikrobeheerder
Dit is belangrik om te onthou dat sommige van die lontstukkies gebruik kan word om sekere aspekte van die skyfie te sluit en dit moontlik kan baksteen (onbruikbaar)
Daar is 'n totaal van 19 lontstukkies wat in die ATmega328P gebruik word, en dit word in drie verskillende lontgrepe geskei. Drie van die lontstukke is vervat in die "Extended Fuse Byte", agt in die "Fuse High Byte", en nog agt in die "Fuse Low Byte". Daar is ook 'n vierde byte wat gebruik word om die sluitstukke te programmeer.
Elke greep is 8 bisse en elke bis is 'n aparte instelling of vlag. As ons praat oor instelling, nie instelling nie, geprogrammeerde, nie geprogrammeerde sekuriteite nie, gebruik ons eintlik binêre. 1 beteken nie ingestel nie, nie geprogrammeer nie en nul beteken stel, geprogrammeer. As u die sekeringe programmeer, kan u binêre notasie of meer heksadesimale notasie gebruik.
ATmega 328P -skyfies het 'n ingeboude RC -ossillator met 'n frekwensie van 8 MHz. Nuwe skyfies word gestuur met hierdie stel as die klokbron en die CKDIV8 -lont is aktief, wat 'n 1 MHz -stelselklok tot gevolg het. Die opstarttyd is op maksimum gestel en die tydsduur is geaktiveer.
Nuwe ATMega 328P -skyfies het oor die algemeen die volgende sekuriteitsinstellings:
Lae versekering = 0x62 (0b01100010)
Hoë lont = 0xD9 (0b11011001)
Uitgebreide lont = 0xFF (0b11111111)
Ons gebruik die ATmega 328 -chip met 'n eksterne 16MHz -kristal. Daarom moet ons stukkies "Fuse Low Byte" dienooreenkomstig programmeer.
1. Bits 3-0 beheer die ossillatorkeuse, en die standaardinstelling van 0010 is om die gekalibreerde interne RC-ossillator te gebruik, wat ons nie wil hê nie. Ons wil die lae-krag kristal ossillator werking van 8,0 tot 16,0 MHz hê, dus moet stukkies 3-1 (CKSEL [3: 1]) op 111 gestel word.
2. Bit 5 en 4 beheer die opstarttyd, en die standaardinstelling van 10 is vir 'n opstartvertraging van ses kloksiklusse na afskakel en kragbesparing, plus 'n bykomende opstartvertraging van 14 kloksiklusse plus 65 millisekondes na herstel.
Om veilig te wees vir 'n kristal ossillator met 'n lae krag, wil ons 'n maksimum vertraging van 16 000 kloksiklusse hê vanaf afskakel en bespaar, dus moet SUT [1] op 1 gestel word, plus 'n ekstra opstartvertraging van 14 kloksiklusse plus 65 millisekondes na herstel, dus moet SUT [0] op 1. gestel word. Boonop moet CKSEL [0] op 1 gestel word.
3. Bit 6 beheer die klokuitset na PORTB0, waaroor ons nie omgee nie. Bit 6 kan dus op 1 gestel word.
4. Bit 7 beheer die deel-deur-8-operasie en die standaardinstelling van 0 het die funksie geaktiveer, wat ons nie wil hê nie. Bit 7 moet dus van 0 na 1 verander word.
Daarom moet die nuwe Fuse Low Byte 11111111 wees, wat in heksadesimale notasie 0xFF is
Om stukkies van die 'Fuse Low Byte' te programmeer, kan ons ons programmeerder (https://www.instructables.com/id/ISP-Programmer-fo…) en sagteware AVRDUDE gebruik. AVRDUDE is 'n opdragreëlprogram wat gebruik word om van Atmel-mikrobeheerders af te laai en op te laai.
Laai AVRDUDE af:
Eerstens moet ons ons programmeerder by die konfigurasielêer van AVRDUDE voeg. Op Windows is die konfigurasielêer gewoonlik op dieselfde plek as die uitvoerbare lêer van AVRDUDE.
Plak die teks in die konfigurasielêer avrdude.conf:
# ISPProgv1
programmeerder id = "ISPProgv1"; desc = "seriële poort klop, reset = dtr sck = rts mosi = txd miso = cts"; tipe = "serb"; verbindingstipe = reeks; reset = 4; sck = 7; mosi = 3; miso = 8;;
Voordat ons met die AVRDUDE begin, moet ons die mikrobeheerder volgens die skema aan die programmeerder koppel
Maak die DOS -promptvenster oop.
1. Om die lys programmeerders te sien wat avrdude ondersteun, tik opdrag avrdude -c c. As alles goed is, moet die lys programmeerder -ID "ISPProgv1" bevat
2. Om die lys van Atmel -toestelle wat avrdude ondersteun, te sien, tik opdrag avrdude -c ISPProgv1. Die lys moet toestel m328p hê vir Atmel ATMega 328P.
Tik vervolgens avrdude -c ISPProgv1 –p m328p, die opdrag sê vir avrdude watter programmeerder gebruik word en watter Atmel -mikrobeheerder daaraan gekoppel is. Dit bied die ATmega328P -handtekening in heksadesimale notasie: 0x1e950f. Dit bied die lontbitprogrammering wat tans in die ATmega328P voorkom, ook in heksadesimale notasie; in hierdie geval word siklusgrepe volgens fabrieksinstellings geprogrammeer.
Tik vervolgens avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m, Dit is 'n opdrag om vir avrdude te vertel watter programmeerder gebruik word en watter Atmel -mikrokontroleerder daaraan gekoppel is en om die Fuse Low Byte na 0xFF te verander.
Die horlosiesin moet nou afkomstig wees van 'n lae -krag kristal ossillator.
Stap 3: Brand die program in die geheue van die ATMega328P -mikrobeheerder
Kopieer eers die hex -lêer van die program wat ons aan die begin van die instruksie gemaak het, na die AVRDUDE -gids.
Tik dan die opdrag avrdude –c ISPProgv1 –p m328p –u –U flash in: D: prompt venster: w: [naam van u hex -lêer]
Die opdrag skryf heks -lêer na die geheue van die mikrobeheerder. Die mikrobeheerder werk nou volgens die instruksies van ons program. Kom ons kyk!
Stap 4: Kontroleer of die mikrobeheerder volgens die instruksies van ons program werk
Koppel komponente volgens die skematiese diagram van die AVR Knipperende LED -stroombaan
Eerstens benodig ons krag, net soos alle AVR -stroombane. Ongeveer 5 volt krag is voldoende vir die werking van die AVR -chip. U kan dit verkry vanaf batterye of 'n GS -kragbron. Ons koppel +5V krag aan pen 7 en koppel pen 8 aan op die broodbord. Tussen beide penne plaas ons 'n keramiek -kondensator van 0.1μF om die krag van die kragtoevoer glad te maak sodat die AVR -chip 'n gladde kraglyn kry.
Die 10KΩ -weerstand word gebruik om Power On Reset (POR) aan die toestel te verskaf. As die krag aangeskakel word, sal die spanning oor die kapasitor nul wees, sodat die toestel herstel word (aangesien die reset aktief is), dan laai die kondensator na VCC en sal die reset uitgeskakel word.
Ons koppel die anode van ons LED aan die AVR -pin PB0. Dit is pen 14 van die ATMega328P. Aangesien dit 'n LED is, wil ons die stroom wat na die LED vloei beperk, sodat dit nie brand nie. Daarom plaas ons 'n 330Ω -weerstand in serie met die LED. Die katode van die LED word met die grond verbind.
16 MHz kristal word gebruik om die Atmega328 -mikrobeheerder te voorsien, en 22pF -kapasitors word gebruik om die werking van kristal te stabiliseer.
Dit is al die verbindings wat nodig is om die LED aan te steek. Kragtoevoer.
Ok. LED knipper met een sekonde vertraging. Die werk van die mikrobeheerder stem ooreen met ons take
Stap 5: Gevolgtrekking
Dit was weliswaar 'n lang proses om net 'n LED te flits, maar die waarheid is dat u die groot struikelblokke suksesvol uit die weg geruim het: 'n hardeware -platform vir die programmering van 'n AVR -mikrobeheerder, die Atmel Studio as geïntegreerde ontwikkelingsplatform, AVRDUDE as sagteware gebruik die opstel en programmering van 'n AVR -mikrobeheerder
As u op hoogte wil bly van my basiese mikrobeheerprojekte, teken dan in op my YouTube! Deur na my video's te kyk en dit te deel, ondersteun ek wat ek doen
Teken in op die YouTube FOG -kanaal
Aanbeveel:
Laai die waarde van die vibrasiesensor op na IOT ThingSpeak met behulp van NodeMCU: 4 stappe
Laai die trillingsensorwaarde op na IOT ThingSpeak met behulp van NodeMCU: Daar is verskeie kritieke masjiene of duur toerusting wat skade kan veroorsaak as gevolg van trillings. In so 'n geval is 'n vibrasiesensor nodig om vas te stel of die masjien of toerusting trillings produseer of nie. Identifiseer die voorwerp wat
Klas om die konfigurasie in die ESP32 EEPROM te bestuur: 5 stappe
Klas om die konfigurasie in die ESP32 EEPROM te bestuur: Hallo, ek wil al die klasse wat ek ontwikkel het, met u deel, en dit vergemaklik die taak om konfigurasie -inligting op ESP32 -toestelle by te voeg. stelsel op ESP32 -toestelle
NE555 Timer - Die konfigurasie van die NE555 -timer in 'n Astable -konfigurasie: 7 stappe
NE555 Timer | Die NE555 -timer in 'n Astable -konfigurasie instel: Die NE555 -timer is een van die mees gebruikte IC's in die elektronika -wêreld. Dit is in die vorm van DIP 8, wat beteken dat dit 8 penne bevat
Hoe om die lewensduur van die laai van u skootrekenaar te verleng: 4 stappe
Hoe om die lewensduur van die laai van u skootrekenaar te verleng: In hierdie instruksies leer u hoe u die lewensduur van 'n skootrekenaar kan verleng. As u gaan vlieg of oor 'n lang afstand ry, kan hierdie stappe help om die battery langer as gewoonlik te hou en die rit 'n bietjie minder stresvol te maak
Instruksies vir die voltooiing van die opmaak van die baanskyfontwerp vir die opheffing/verlaging van die middelste voetsteun op motorwielstoele: 9 stappe (met foto's)
Instruksies vir die voltooiing van die opmaak van die baanskyfontwerp vir die opheffing/verlaging van die middelste voetsteun op motorwielstoele: die middelste voetsteunhysers moet goed onder die sitplek geberg word en laer om te ontplooi. 'N Meganisme vir die onafhanklike werking van die opberging en ontplooiing van voetsteun is nie ingesluit by rolstoele op die mark nie, en PWC -gebruikers het die behoefte uitgespreek