INHOUDSOPGAWE:

Konfigurasie van die AVR -mikrobeheerder. Skep en laai die LED -knipperprogram in die flitsgeheue van die mikrokontroleerder op: 5 stappe
Konfigurasie van die AVR -mikrobeheerder. Skep en laai die LED -knipperprogram in die flitsgeheue van die mikrokontroleerder op: 5 stappe

Video: Konfigurasie van die AVR -mikrobeheerder. Skep en laai die LED -knipperprogram in die flitsgeheue van die mikrokontroleerder op: 5 stappe

Video: Konfigurasie van die AVR -mikrobeheerder. Skep en laai die LED -knipperprogram in die flitsgeheue van die mikrokontroleerder op: 5 stappe
Video: SKR 1.4 - SKR 1.4 Turbo Firmware load 2024, Junie
Anonim
Image
Image

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

Skryfprogram en stel die Hex -lêer saam met die Atmel Studio
Skryfprogram en stel die Hex -lêer saam met die Atmel Studio
Skryfprogram en stel die Hex -lêer saam met die Atmel Studio
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

Verandering van die standaardkonfigurasie van die mikrobeheerder -sekeringbits
Verandering van die standaardkonfigurasie van die mikrobeheerder -sekeringbits
Verandering van die standaardkonfigurasie van die mikrobeheerder -sekeringbits
Verandering van die standaardkonfigurasie van die mikrobeheerder -sekeringbits
Verandering van die standaardkonfigurasie van die mikrobeheerder -sekeringbits
Verandering van die standaardkonfigurasie van die mikrobeheerder -sekeringbits

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

Die program verbrand in die geheue van die ATMega328P -mikrobeheerder
Die program verbrand in die geheue van die ATMega328P -mikrobeheerder
Die program verbrand in die geheue van die ATMega328P -mikrobeheerder
Die program verbrand 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

Kontroleer of die mikrobeheerder ooreenkomstig die instruksies van ons program werk
Kontroleer of die mikrobeheerder ooreenkomstig die instruksies van ons program werk
Kontroleer of die mikrobeheerder ooreenkomstig die instruksies van ons program werk
Kontroleer of die mikrobeheerder ooreenkomstig die instruksies van ons program werk
Kontroleer of die mikrobeheerder ooreenkomstig die instruksies van ons program werk
Kontroleer of die mikrobeheerder ooreenkomstig 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: