Innholdsfortegnelse:

BRUK AV EXtreme Burner for AVR -mikrokontrollerprogrammering: 8 trinn
BRUK AV EXtreme Burner for AVR -mikrokontrollerprogrammering: 8 trinn

Video: BRUK AV EXtreme Burner for AVR -mikrokontrollerprogrammering: 8 trinn

Video: BRUK AV EXtreme Burner for AVR -mikrokontrollerprogrammering: 8 trinn
Video: Part 3 - Around the World in 80 Days Audiobook by Jules Verne (Chs 26-37) 2024, Juli
Anonim
BRUK AV EXTREME BURNER FOR AVR -mikrokontrollerprogrammering
BRUK AV EXTREME BURNER FOR AVR -mikrokontrollerprogrammering

Alt du AVR -brukerbrorskap der ute, og de som nettopp kom inn i strømmen. Noen av dere startet med PIC -mikrokontrollere og noen begynte med ATMEL AVR, dette er skrevet for deg!

Så du kjøpte en USBASP fordi det er billig og effektivt å blinke ROM -en på Atmega -enheten din, eller kanskje ATTINY -serien. Disse kan fås for under 5 $, som kinesiske kloner av åpen kildekode USB-ASP! AVRdude er programvaren for å programmere dem.

Du vet utvilsomt hvordan du genererer en Hex -fil ved hjelp av Atmel Studio (jeg bruker fortsatt AVR Studio v4.19 i stedet for den siste v7 fordi den er raskere og raskere på min lette enkeltkjernede CPU -bærbare)/ Netbook og WINAVR installasjon hvis du leser dette. Alt som er skrevet i DotNet kjører Sakte! og de senere versjonene er designet for å få den bærbare datamaskinen til å kjøre som en skilpadde! Du kan bruke Studio v4.19 den største versjonen av Studio fra ATMEL for AVR -mikrokontrollere, bytte til versjon 7 når du virkelig trenger det for de senere sjetongene, og gjøre tiden din på den bærbare datamaskinen mer produktiv, i stedet for å vente! Dette er det jeg anbefaler.

En typisk AVR -kommandolinje for å programmere en Atmega med en Hex -fil, kjører slik:

SKRIV TIL FLASH: AVRdude -s -c avrisp -p t44 -P usb -U "flash: w: D: / ARDUINO / pwmeg1.hex: a"

her er pwmeg1.hex Intel hex -filen som skal "brennes" eller "blinkes" inn i "target MCU" i mikrokontrolleren Lingo

Det er en munnfull å huske! Du kan skrive en batchfil og kjøre den på kommandolinjen i Windows, og gi den navnet write_flash.bat. På samme måte for å lese sikringene, en annen munnfull av en linje å huske! Det blir kjedelig.

for read flash + eeprom: AVRdude -s -c avrisp -p t44 -P usb -U "flash: r: D: / ARDUINO / pwmeg1.hex: i" -U "eeprom: r:: i"

Løsningen er å bruke et av de brukervennlige GUI front-end verktøyene til AVRdude som Bitburner, Khazama programmerer, som er nesten like i fortjeneste. eXtreme Burner. Jeg har brukt gratis -til -bruk -verktøyet: eXtreme Burner mye, det er allsidig, pålitelig, og denne opplæringen handler om det. Det kan ikke bare blinke hex -filen / programmet til MPU ved å bruke kommandoer utstedt til AVRdude i bakgrunnen, det kan også hjelpe deg med å sette FUSES som er et komplisert emne som ofte forvirrer nybegynnere til AVR -programmering. Her er en lenke til en utmerket opplæring om SIKRINGER du kan gå igjennom eller pusse opp. Et forsiktig ord: ATMEL bruker "1" -tilstanden til en FUSE -bit for å indikere sin "standard" -tilstand (usett eller uprogrammert tilstand) og "0" for å indikere den programmerte eller innstilte eller aktiverte tilstanden! Dette er akkurat motsatt av det du gjør med FUSE -biter i en PIC -mikrokontroller. Vær forsiktig når du endrer sikringsbitene for klokken som å gjøre den interne RC-klokken til ekstern krystall fordi dette vil skape problemer med å koble til brikken uten en ekstern krystalloppsett. Vær på samme måte forsiktig når du endrer tilstanden til kritiske sikringsbiter som SPIEN og RESET DISABLE (disse bør alltid settes til SPIEN = 0 og RESET DISABLE = 1 hvis du ønsker å fortsette å kommunisere med MCU med USB-ASP i ISP / SPI-modus ! Hvis du feiler dette, trenger du en høyspenningsprogrammerer for å "fjerne" brikken til AVR -en.

Hvis du lurer på "hva i helvete er sikringer" og "hva gjør de"? Les dette flotte oppslaget:

Et annet beslektet emne er hvordan du stiller inn klokkehastigheten til AVR MPU -en din som er i stand til hastigheter fra 1Mhz opp til 16 eller 20Mhz. Det er også et spesialspesifikt lavfrekvent krystallalternativ på 31,25 kHz, som hvis det er riktig utformet, kan få AVR til å kjøre ut AA -batterier i 3 måneder!

Begge disse Clock Fuse -bitene (både frekvens og type klokke intern RC/ekstern krystall og andre sikringsbits) kan stilles inn via FUSES -fanen i eXtreme Burner. Først viser vi deg lese ROM -en, og deretter hvordan du blinker hex -filen med eXtreme Burner. Selvfølgelig kan du også bruke de nettbaserte AVR -sikringsnettstedene, men alternativet jeg forklarer kan brukes når du er frakoblet også, hvor som helst.

Trinn 1: Innstillinger som skal gjøres:

Innstillinger som skal gjøres
Innstillinger som skal gjøres
Innstillinger som skal gjøres
Innstillinger som skal gjøres
Innstillinger som skal gjøres
Innstillinger som skal gjøres
Innstillinger som skal gjøres
Innstillinger som skal gjøres

Bildene viser innstillingene som skal gjøres før du starter arbeidet. (det er bare en gang). Under undermenyen 'Maskinvareinnstillinger' velger vi 375Hz fordi de fleste MCU fra ATMEL-fabrikken er satt til Standardinnstillinger for 1 Mhz CPU-klokke på intern RC-oscillator. ISP -hastigheten er et kvartal av F_cpu. Det gir oss 375 Khz nærmeste hastighet. Du kan gå til en lavere hastighet også, det vil ikke gjøre stor forskjell. Du kan prøve å koble til og la dette stå som standard, og utstede en "les alt". Hvis det mislykkes, kan du komme hit og endre hastigheten og gjøre den lavere.

Fordi hvis du ikke kan koble til (meldingen vil bli gitt i programmeringsvinduet "kan ikke kommunisere med brikke, kan ikke SCK" betyr at klokkesignalet fra PC -en din ikke kunne synkronisere med brikken din som du prøver å lese eller program)., vil du ikke kunne endre klokkehastigheten til CPUen eller endre hastigheten og typen! Så tilkobling er grunnlaget for alt! Det er som "FIRST CONTACT" som du ser i Spielberg -filmene. Hvis du lykkes med dette, kan du alltid øke klokkehastigheten til MCU -en din ved å programmere sikringene deretter, og senere bruke en høyere hastighet for å koble til.

Så gå gjennom maskinvareinnstillingene som er gitt her, og angi deretter enhetstypen (brikken du prøver å programmere, modellnummeret).

Trinn 2: Angi enhetstype

Angi enhetstype
Angi enhetstype
Angi enhetstype
Angi enhetstype
Angi enhetstype
Angi enhetstype

se skjermbildet, bilde 1, vi har satt "ATTINY44A". Dette er en 14 -pinners mikrokontroller uten UART. Jeg har brukt dette nylig, SSU -versjonen. Hvis du installerte Extreme burner lagerversjon, vil du ikke se Attiny44A i rullegardinlisten for enhetsvalg, du vil se en Attiny44 som vi til alle formål kan bruke til å programmere Attiny44A også, for å introdusere alle enheter som ikke er oppført i denne rullegardinlisten, les min andre instruerbare "Hacking eXtreme Burner".

Jeg har brukt Atmega88PA-AU også med eXtreme Burner, men i denne instruksjonsdelen nevner vi "Attiny44A" overalt. Hvordan lager du en brødbrettversjon av den lille 7 mm firkantede SMD -brikken og tester den med programmene dine? (se bildene som angir brikkestørrelsen). For dette, se min andre instruksjonsboks der jeg demonstrerer hvordan jeg lager Breadboard-egnede plug-in-moduler ved hjelp av Attiny44A-SSU og ATmega88PA-AU

Når du har lært denne teknikken, vil du kunne sjekke hvilken som helst brikke du er nysgjerrig på å tinker med, enten det er SMD- eller DIL -pakken. For eksempel har jeg til og med brukt en SMD-brikke som kommer i en 32-pinners 0,8 mm pin pitch quad-pakke (Atmega88A) på lignende måte!

. Eller du kan bare bruke 28 -pinners DIL -versjonen av Attiny44A for denne instruksjonsmaskinen eller hvilken AVR du bruker for øyeblikket for å prøve eXtreme Burner for AVR -programmering.

Trinn 3: Utsted en LES ALLE eller LES FLASH

Utsted en LES ALLE eller LES FLASH
Utsted en LES ALLE eller LES FLASH
Utsted en LES ALLE eller LES FLASH
Utsted en LES ALLE eller LES FLASH

Koble USBasp til USB -porten på den bærbare datamaskinen din. Jeg antar at du allerede har lastet inn de riktige driverne som fulgte med programmereren, og at den er korrekt oppdaget. Det skulle vises under 'Enheter og skrivere' i Windows -startmenyen hvis det var det, så snart det ble koblet til USB -porten! Koble målbrikken på brettet med USBasp (relevante SDI // ISP -pinner med en 6 -pinners eller 10 -pinners kabel må kobles mellom de to, nemlig pinnene: MOSI, RESET, MISO, SCK, Vcc, Ground).

Legg ut en LES ALLE fra MENYEN til Xtreme Burner. Se bilder og meldinger vi fikk. Opprinnelig viste skjermen 'FF' for ROM i første TAB på brenneren, etter å ha lest alt vil det vise det faktiske ROM -innholdet på brikken. Hvis du brukte en fabrikkfrisk brikke eller en slettet brikke, ville du se FF i innholdet etter en "Les alt". En ikke -programmert brikke vil vise 'FF' i minnet, det samme gjør en EEPROM (andre fane i programmereren), den siste fanen viser sikringene.

Etter en LES ALLE de 3 fanene ville vise riktig informasjon i brikken. Før det ville det ikke, så gi en Les alt først så snart du kobler til alt.

Trinn 4: Skriv til Flash (Hex -filen din blinket inn i ROM på brikken)

Skriv til Flash (Hex -filen din blinket inn i ROM på brikken)
Skriv til Flash (Hex -filen din blinket inn i ROM på brikken)
Skriv til Flash (Hex -filen din blinket inn i ROM på brikken)
Skriv til Flash (Hex -filen din blinket inn i ROM på brikken)
Skriv til Flash (Hex -filen din blinket inn i ROM på brikken)
Skriv til Flash (Hex -filen din blinket inn i ROM på brikken)

Velg en fil med dialogboksen Bla gjennom som åpnes når du klikker på det første ikonet i MENY -linjen ovenfor. Vi valgte en fil som du ser på bildet. Når du har valgt hex -filen (intel hex -format) endret menylinjen som viste "ingen fil lastet" til filnavnet du lastet inn.

Utsted nå en skriveblits fra menyen i programvaren. Meldingene viser deg hva som skjer. se bildene.

Etter en vellykket skriving, ville du se 'FF' som markerer en ny eller slettet ROM -endring i hva programmet eller hex -filen inneholder. Størrelsen eller antall byte som filen opptar i ROM -en er også kjent for deg ved å se på denne skjermen, som viser deg det faktiske ROM -innholdet i målbrikken din som du blinket akkurat nå.

Verifikasjonstrinnet utføres også ved å lese brikken, i henhold til INNSTILLINGENE vi gjorde i første trinn. Dette sees i meldingene om at bekreftelsen også var vellykket.

Trinn 5: SIKRINGER: Slik setter du dem i EXtreme Burner

SIKRINGER: Slik setter du dem i EXtreme Burner
SIKRINGER: Slik setter du dem i EXtreme Burner

Da du sendte en LES ALLE sikringene ble lest av brikken. Det er det FØRSTE bildet som vises fuses.jpg.

Nå må du kanskje endre dem til noe annet. Sikringene består av 4 bokser i den siste fanen på eXtreme Burner -skjermen. Nemlig LOW FUSE BYTE, HIGH FUSE BYTE, EXDENDED SIKRING BYTE, LOCK FUSE BYTE og CALIBRATION BYTE. i den rekkefølgen vises de.

Du kan ganske enkelt bruke en ONLINE sikringskalkulator og fylle dem ut. Som den på

eleccelerator.com/fusecalc/fusecalc.php?

Eller du kan bruke eXtreme -brenner for å gjøre det for deg. offline selv når som helst: Velg fra rullegardinlisten som vises når du klikker på DETALJER -knappen som er der under hver type sikringsbyte. Bare dobbeltklikk på hvilken som helst linje i DETALJER -skjermen og se den skifte fra SET til CLEARED og bytt tilstand med museklikk på hver linje. Fuse Byte i boksen ovenfor vil endre seg tilsvarende.

Hvis du lurer på "hva i helvete er sikringer" og "hva gjør de"? Les dette flotte oppslaget:

www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/

Trinn 6: Sette sikringer ved hjelp av EXtreme Burner Fuse Calculator

Sette sikringer ved hjelp av EXtreme Burner Sikringskalkulator
Sette sikringer ved hjelp av EXtreme Burner Sikringskalkulator
Sette sikringer ved hjelp av EXtreme Burner Sikringskalkulator
Sette sikringer ved hjelp av EXtreme Burner Sikringskalkulator
Sette sikringer ved hjelp av EXtreme Burner Sikringskalkulator
Sette sikringer ved hjelp av EXtreme Burner Sikringskalkulator

Du kan se detaljskjermbildet som vises for hver av sikringsbytes (LAV, HØY, UTVIDET, LÅS og kalibrering). Kalibreringsbyten bør være uendret ettersom den viser kalibreringsdatabytten i AVR som gjelder for den interne RC -oscillatoren. LOCK -byten er vanligvis bare FF, (ikke diskutert på bildene ovenfor), da du ikke ville låse Flash eller EEPROM mens du var i læringsfasen. Du ville bare endre LAV, HØY og UTVIDET byte. Vær forsiktig !

Hvis du endrer SPIEN -bit til 1 (uprogrammert tilstand er 1 i AVR -mikrokontrollere), vil du ikke kunne kommunisere med brikken din ved hjelp av USBASP eller en hvilken som helst programmerer! Standardtilstanden vises også på skjermen for hver sikringsbit. Dette varsler deg om at SPIEN -standard alltid er 0 (programmert tilstand) slik at du kan bruke SPI -modus for ISP -programmering. Debug-wire eller DW bit er alltid igjen 1 (uprogrammert) når SPIEN er satt til 0. Dette er også standardtilstanden. I utvidede sikringsbiter bør også 'Self Programming Enable' være '1' (uprogrammert) hvis du bruker USB-ASP til å programmere målbrikken din (ikke bruker bootloader ROM som i ARDUINO).

Du kan endre CLOCK -bitene (3 i antall) for å velge intern RC eller ekstern krystall. Jeg lar det normalt være for intern RC som lar deg få 2 ekstra pinner som frigjør den eksterne krystallen innebærer å bruke som PORT -pins for AVR -prosjektene dine. Vanligvis er ekstern krystall nødvendig når du trenger timing med høy nøyaktighet i prosjektet. For elever er intern RC nok.

Vanligvis ville du ikke bytte det når du har bestemt deg for en sikringskombinasjon. Det ville være en gang. Du blinker bare ROM eller noen ganger EEPROM også. For å blinke, genereres EEPROM -separate.eep -filen av WINAVR / ATMEL -studioet hvis programmet i det hele tatt bruker EEPROM til å lagre data. Ellers blir EEPROM ubrukt, fylt med 'FF' dataene som viser 'NO DATA state' for EEPROM.

Trinn 7: Slutverdi av sikringsbiter

Slutverdi av sikringsbiter
Slutverdi av sikringsbiter

Etter å ha satt alle sikringsbitene og lukket DETALJER -boksene du brukte, kan du se verdien av sikringsbitene som beregnet av programmet (se bilde). Alt som gjenstår er å utstede en "skrive sikringer" ved hjelp av menyen. Og se på meldingene som rapporterer en vellykket skriving. Senere kan du også utstede en LES ALLE fra menyen og sjekke om sikringene som ble lest i siste TAB på brennerskjermen sammenfaller med det du ønsket å skrive til brikken. (Sikringsbekreftelse).

Du vil legge merke til at i begynnelsen av denne instruksjonsboken da vi gjorde en LES SIKRINGER, viser skjermen de samme sikringene som vi ser her! Det er fordi dette er sikringene jeg ofte bruker og sjelden endrer dem når jeg har satt dem i MCU -en min, med mindre jeg endrer frekvensen fra 1 Mhz til 4Mhz for noen prosjekter. AVR kan settes til maksimum 20Mhz (noen sjetonger bare opptil 16Mhz). Frekvensen du angir for F_cpu avhenger også av spenningen du leverer brikken med! For eksempel, hvis brikken din opererer fra 1,8V Vcc til 5,5V Vcc (se datablad), ville du ikke forvente å kjøre Chip på 20 mhz hvis du bare leverte 1,8V til den! du forventer for mye av det! En tabell i databladet forteller deg med hvilken spenning frekvensen topper ved hvilket tall. Jo høyere frekvens du bruker for chip, jo mer varme og mer strøm bruker den. Tenk på frekvensen som et hjerteslag. En kolibri med høy hjerterytme vil ha en høyere energiforbrenning per minutt sammenlignet med en hval eller elefant med mye lavere hjerterytme! Men da kan det gjøre mye mer på kortere tid. MCU er akkurat slik.

Trinn 8: Fullfør

Nå har du fullført alle trinnene i eXtreme -brenner, du har lest en brikkes ROM, du har åpnet en HEX -fil og blinket den til brikken og bekreftet at blitsen var OK, du har også lært hvordan du setter sikringene og blinker dem til brikken.

Hvis du har spørsmål, vil jeg gjerne svare på eller endre opplæringen for å gjøre det tydeligere.

For noen sjetonger kan det hende at oppføringen mangler i rullegardinlisten for valg av brikker i menyen. Eller du kan stå overfor skrivefeil og bekrefte feil. I slike tilfeller kan du lese min andre instruksjonsbare "Hacking eXtreme Burner" for å løse problemet.

God programmering.

Anbefalt: