AVR fuse grunderna: kör en avr med en extern klocka (3 / 6 steg)
Steg 3: Hur man programmerar säkringar?
Innan du börjar, måste vi titta på fuse bitar av Atmega8 och startvärde av dem. Sedan im göra detta instructable från mobil, gjorde jag en tabell som innehåller uppgifterna som krävs. Jag skapade den med google blad android app. Jag kunde inte hitta ett sätt att konvertera dem till bilder. Så här im utstationering länken.Fuse bitar av Atmega 8 (den en im använder i denna handledning)
https://docs.Google.com/Spreadsheets/d/1haE2Sprdsa-NgKYsOQlwI99WHfGqCItJutG4h-MnOus/Edit?USP=docslist_api
Nu går vi vidare till detaljerna i hur man programmerar fuse bitar i din AVR beroende på den särskilda programmen du använder. Först bör vi konsultera manualen för programmeraren om detaljer. For exempel, om du använder en STK600 med AVR Studio, STK600 fönstret har en flik som heter säkringar, där du ställer in de olika bitarna och där du kan programmera, kontrollera eller läsa fuse bitar.
(Jag använder en Atmega 8 för mitt exempel. Jag använder oftast Atmega 8 eftersom det är billigt och innehåller tillräckligt med minne för de flesta av mina projekt).
De flesta människor har förvirring när det gäller detta ämne. För att uttrycka det mycket enkelt, det finns bara två typer av säkringar, hög fuse (hfuse) och låg säkring (lfuse), några mikrokontroller har en extra säkring byte kallas utökade fuse (Eka).
Den mest förvirrande delen kommer här. Unprogrammed lite fuse är logic hög eller 1, programmering någon säkring bit kommer att ändra sin nivå logik låg eller 0.
"Ett undantag bara för att hålla i åtanke är - fuse bitar med för att starta upp loader inte är åtkomliga från programvara, men dessa kan nås i programmeringsläget med parallella /serial programmering verktyg."
Som beskrivs i bilden ovan, visas säkringen tillsammans med dess stycke värde och bitarstal. Vissa funktioner i den ovan nämnda säkringarna är:-
(Jag använde ett Atmega 8 datablad för för diagrammet som jag postat).
Övre Fuse byte (hfuse)
1) första biten är BOOTRST som är unprogrammed som standard (1). Om denna bit är programmerad (0) sedan efter att ha slagit upp eller enheten återställa det startar programmet utförande från bootloader minne avsnitt. Helt enkelt, om en bootlaoder används till flash MCU, denna bit måste aktiveras. Om du laddar helt enkelt upp din firmware med ISP programmerare, sedan lämna denna bit orörda.
BOOTSZ0 och BOOTSZ1 är också viktigt om bootloader används. Dessa bitar kan välja bootloader avsnitt storlek.
2) nästa bit är EESAVE. Om detta säkring är programmerad (genom att skriva 0 till det) kvar EEPROM-minne orörd under Chip radera förfarandet. Denna säkring kan ibland vara till hjälp. För instans om du håller några viktiga data i EEPROM-minne som kalibrering värden och behöver uppdatera program utan att förlora denna data och sedan programmera denna bit. Men om du alltid har rena chip efter radera och sedan lämna denna bit orörd (värdet 1).
3) WDTON bit används för att först ange watchdog timer. Om du programmera detta kommer din watchdog timer att tvingas vara alltid på och hålla återställa chip regelbundet om ingen särskild vård tas. Om inget behov av watchdog, sedan lämna den unprogammed.
4) SPIEN bit används för att inaktivera serial programming mode ISP. Det är faktiskt inte möjligt att inaktivera detta lite från seriell läge. Det måste göras genom hög spänning programmering.
5) samma situation är med RSTDSBL bit. Det används för att inaktivera reset-funktionen som konverterar Återställ pin i till I/O. I allmänhet rekommenderas det inte. Och det kan inte inaktiveras när enheten är programmerad i ISP läge.
6) CKOPT bit används för att välja alternativ för oscillator.
Låga säkringar (lfuse)
Kan ser ut vid låg byte av säkringar.
1) en grupp av fyra liknande bitar som är CKSEL0 att CKSEL3 används för att markera klockning alternativ. Standard CKSEL0 att CKSEL3 säkringar är inställt att välja inre 8MHz RC-oscillator. Men vi vet AVRs kan klockas på fler olika sätt:
* Kalibrerad inre RC-oscillator (standard 8MHz)
* Yttre RC-oscillator
* Externa crystal eller kristall resonator
* Externa lågfrekventa crystal
* Extern klocka signalkälla
Jag har förklarat om SUT (tid att starta) i nästa steg.
Jag skulle skriva om hur man kan beräkna dessa värden på egen hand, senare i detta instructable.
2) BODEN eller brunt upptäckt aktivera bit kan brun ut upptäckt. Brunt ut upptäckt inaktiveras allmänt (1). Programmera denna bit låg (0) enanbles brun ut upptäckt. Anledningen till denna funktion är att - när matningsspänningen blir lägre än den spänning som krävs av mikrokontroller, det börjar bete sig oförutsägbart. Det kan börja radera sitt eget minne eller kan köra random avsnitt från dess flash. För att undvika detta, har brun ut-svar lämnats. En gång leverans spänning blir lägre än den inställda nivån för BOD, chip kommer att byta av säkert. När matningsspänningen tillbaka igen till det normala, börjar chip om igen.
BODLEVEL - med denna bit kan vi sätta brunt ut upptäckt nivå. För exempel - om mikrokontroller köra på 3,3 volt, kan vi sätta brunt ut upptäckt på 2,7 volt, så att om matningsspänningen blir lägre än detta sedan mikrokontroller stängs säkert.
Ett intressant inslag att notera här är, andra AVR microcontrollers som Atmega 32 har några olika säkringar som i den höga fuse byten de har OCDEN och JTAGEN och i Atmega 328p det är DWEN etc.
Jag ber om ursäkt för låg kvalitet bilderna eftersom jag gör detta instructable från min android.