Hur du ändrar fuse bitar av AVR Atmega328p - 8 bitars microcontroller med Arduino (2 / 7 steg)

Steg 2: Förståelse Fuse bitar från datablad



AtmegaXXX AVR microcontrollers levereras med en standard 1 MHz intern oscillator. I detta instructable jag kommer att visa dig hur du ändrar säkringarna av Atmega328P-PU att arbeta på 8MHz intern oscillator. Platsen för särskilda fuse bitar skiljer sig bland alla tre fuse byte (låg, hög och utökade säkringar) beroende på AVR chip används. Så var noga med att skriva ner dem innan du ställer dem.

Låga Byte säkringar

Den låga byte säkringen behandlar klockan källan, hur snabbt chip kommer att köras och hur länge det väntar vid start. 1 byte motsvarar 8 bitar. Så finns det 8 bitar i den låga fuse byten. Dessa 8 bitar förklaras här:

  • Lite-7: CKDIV8: när som delar upp klockfrekvens av 8
  • Bit-6: CKOUT: när ställa in klockan pulser är utgången på PB0 (Pin 14)
  • Bit-5: SUT1: Start tidsfördröjning
  • Bit-4: SUT0: Start tidsfördröjning
  • Bit 3: CKSEL3: Ställ klocka källa
  • Bit-2: CKSEL2: Ställ klocka källa
  • Bit-1: CKSEL1: Ställ klocka källa
  • Bit-0: CKSEL0: Ställ klocka källa

ATmega marker kan köras med olika hastigheter eller frekvenser och frekvensen bestäms av klocka källa som används. Klockan källan anges med hjälp av CKSEL3... 0 säkring bitar. Att arbeta med interna klocka källa vi måste ange CLSEL3 = 0, CKSEL2 = 0, CKSEL1 = 1 och CKSEL0 = 0. Du måste hitta detta värde i databladet för mikrokontroller. I databladet finns ett kapitel "systemklocka och hårdvaruklocka alternativ". Det finns ett underämne i det kapitlet "Klocka källor". Där hittar du en tabell där värdet av CKSEL3... 0 kan vara fount. Jag har bifogat en skärmdump av databladet.

För starttiden finns en annan underämnet "kalibrerad inre RC-Oscillator". Där kan du hitta en annan tabell för SUT0... 1. jag kommer att använda långsamt stigande Energialternativ. Så SUT1 = 1 och SUT0 = 0.

Nu återstår två fler bitar att ange: CKOUT och CKDIV8. Jag behöver inte någon klocka puls utgången på PB0. Så jag kommer att ställa detta till 1 (unprogrammed).

Den maximala frekvensen av inre RC oscillator för Atmega328P-PU är 8 MHz. Detta uppnås när CKDIV8 är 1 (eller unprogrammed). Om du anger detta till 0 (eller planerade) då kommer ditt chip runt på 1 MHz. Så vi måste ställa in CKDIV8 för att köra chip på 8 MHz = 1.

Nu kombinera alla 8 bitar, våra krävs låg fuse byte är 11100010.

Övre byte säkringar

Övre byte säkringen förklaras nedan. Du kan enkelt hoppa över denna del. Här har jag bara förklarade de höga fuse bitarna. Vi behöver inte ändra de höga fuse bitarna för att ändra klockan källan och frekvens. Men om du är intresserad av att veta om den höga byten säkringar sedan gå igenom den under punkt.

Det finns 8 bitar i övre byte säkring också. Dessa är:

  • Lite-7: RSTDISBL: externa återställa inaktivera
  • Bit-6: DWEN: felsöka tråd aktivera
  • Bit-5: SPIEN: aktiverar Seriell programmering och data nedladdning
  • Bit-4: WDTON: Watchdog timer alltid på
  • Bit 3: EESAVE: bevara EEPROM minne genom chip radera
  • Bit-2: BOOTSZ1: ställer in bootloader minnesstorleken
  • Bit-1: BOOTSZ0: ställer in bootloader momory storleken
  • Bit-0: BOOTRST: Välj Återställ vektorn

Nu kommer jag förklara varje bit:

RSTDISBL (extern återställning inaktivera)

PC6 av Atmega328 är en Återställ PIN-kod, hålla det låga (till marken) och chip kommer att återställas. Så här fungerar växeln på Arduino. När du trycker på återställningsknappen den ansluter PC6 till marken och återställer chip. PC6 kan också användas som en vanlig IO stift men detta innebär att inaktivera återställningsfunktionen vilket i sin tur innebär att chipet inte längre kan inline programmerad (i linje programmering kräver en återställning). Detta är ett av alternativen är det bättre att inte ändra. Jag kan tänka mig RSTDISBL genomförs av säkerhetsskäl att stoppa chip som omprogrammeras eller inbyggd programvara som laddas ned. När RSTDISBL är programmerad start tid (SUT1 SUT0) ökas till 14CK + 4.1ms att säkerställa programmeringen kan anges.
Som standard är inställningen RSTDISBL = 1 (unprogrammed).

DWEN (debug tråd aktivera)

ATmega marker har inbyggda felsökningsverktyg som är som standard inaktiverat. DWEN säkringen används för att aktivera dem. DWEN använder samma stift som reset (PC6) och när DWEN är aktiverat (och de låsa bitarna inte anges) Återställ PIN-koden blir en kommunikation pin och normal återställning inte längre fungerar. Till exempel, om du aktiverar DWEN på en Arduino fungerar reset-knappen inte längre. Att använda det på-flisa felsökning du behöver en kompatibel programmerare som AVR Dragon. Eftersom jag inte har en lämplig programmerare jag har aldrig använt och inte vet hur man använder felsökning. Om du vill veta mer är det en bra artikel att komma igång.

Detta är en av säkringarna noga med. Om du aktiverar DWEN och även aktivera de låsa bitarna kan du inte längre Programmera chip på normalt sätt.

Om du just har börjat lämna DWEN till 1 (unprogrammed). Reset är ju mycket användbar.

SPIEN (aktiverar Serial programming och nedladdning av Data)

ATmega marker kan programmeras med hjälp av Seriell programmering. Seriell programmering används för ombord på programmering med ett seriellt protokoll via en ISP (inline seriell programmerare) eller UART (universal asynchronous receiver / sändare). Den normala metoden för programmering ATmega marker är via SPI gränssnitt med hjälp av SCK (klocka), MOSI (ingång) och MISO (output) stift. Om du inaktiverar seriell kan programmering sedan du inte längre använda SPI för att programmera chip. Du kan också inaktivera Seriell programmering med lock bitar. Lämna SPIEN aktiverad, men om du har en enhet som är slutliga och inga ytterligare programmering krävs kan du använda detta alternativ för att stoppa människor använder chip via seriell kommunikation för normal användning och utveckling.

Standardinställningen är SPIEN aktiverad, SPIEN = 0 (planerat).

WDTON (Watchdog Timer alltid på)

Watchdog är i grunden en timer som gör att chipet att återställa om det inte får ett OK signal på bestämda tider. Det kan vara användbart när du har instabil kod eller har ett system som inte får tillåtas att permanent låsa. När watchdog timer är aktiverat, bör en skiss krascha eller frysa kommer timern att timeout och återställa chip orsakar en omstart liknar att trycka på återställningsknappen en en rinnande Arduino. Watchdog Timer kan aktiveras i programvaran så fuse inställningarna egentligen inte behöver användas. Som standard är watchdog timer off, WDTON = 1 (unprogrammed).

EESAVE (bevara EEPROM minne)

När ATmega chippet programmeras raderas minnet precis innan den nya koden laddas upp. Under normala omständigheter raderas EEPROM minnet och programminnet. EESAVE säkringen kan nyttjas för att skilja chipet inte att radera EEPROM. Detta är användbart när du vill uppgradera kod men behålla inställningar som lagras i EEPROM.
Jag har fått för vana att ställa detta säkring; EEPROM har en begränsad livslängd så ju mindre du skriva till det bättre. Radera eeprom påverkar inte ladda upp ny kod och flesta av mina projekt inte använder eeprom minnet så inte radera det inte är ett problem. DropController lagrar inställningar och släpp tider i eeprom och så jag som EESAVE att bevara data när jag laddar upp nya versioner av koden.

Standardvärdet är EESAVE = 1 (unprogrammed), och EEPROM-minne raderas under chip radera cykla vid programmering.

BOOTSZ1 & BOOTSZ0 (Boot loader storlek)

ATmega marker har möjlighet att använda en starthanterare, detta är ett litet program som körs när chipet först startas eller när den återställs. Stöveln loadersgoogle används normalt till att initialisera enhet och kontrollerar om extern kommunikation. Arduino använder en starthanterare för att prata med en ansluten dator att se om det finns en ny program till vara belastat upp. Detta är anledningen till Arduino återställs när du laddar upp ny kod, Återställ kör boot loader, de boot loader kontrollerna för att se om du har ny kod.
Starthanteraren lagras i programminne, samma minne används för användarprogrammet och sedan boot loader kan vara olika storlekar du kan berätta ATmega chip hur mycket utrymme att reservera. Regelbundna (äldre) Arduino boot loader är 2 kilobyte (KB) men den nyare Optiboot (används på UNO) är endast 0.5KB (512 bytes). Om använda Optiboot och ange boot loader storleken därefter får du en extra 1,5 KB för egna program. 1,5 KB kan vara mycket utrymme, kör programmet tar slut är därför jag började programmera fristående ATmega marker i första hand. Koden för drop Controller blev för stor för regelbundna Arduino så jag tog bort boot loader.
Om du har en starthanterare sedan måste BOOTSZ användas tillsammans med BOOTRST. BOOTRST berättar ATmega chip minnesadress där starthanteraren börjar. Om BOOTRST inte anges kan då i användarprogrammet använda hela minnet oavsett BOOTSZ.

Standard för nya marker är BOOTSZ1 = 0 (planerat) och BOOTSZ0 = 0 (planerat) vilket innebär att de har maximalt minne reserverat för en starthanterare.

BOOTRST (Välj Återställ vektor)

ATmega marker kan använda en starthanterare, detta är ett litet program som körs när chipet återställs. Om du har en starthanterare så måste du informera MCU och detta är med hjälp av BOOTRST säkring inställning. När BOOTRST säkring är inställd, på Återställ kommer att enheten hoppa till adressen som Bootloader. Om inte set, chip kommer att hoppa till programmet startadress på 0x0000.

Standardvärdet är BOOTRST = 1 (unprogrammed).

Om BOOTRST inte anges (ingen bootloader) används inte BOOTSZ säkringar oavsett värde.

Varning: RSTDISBL, SPIEN och DWEN säkringarna har potential att tegel ATmega chip, eller åtminstone göra chipet mycket mycket svårt att använda igen. För allmänt bruk, och särskilt om du just har börjat med programmering fristående marker, bör du inte ändra dessa säkring inställningar. Du bör också kontrollera att du inte ändrar dem när du skriva andra fuse inställningar.

Så våra våra krävs hög fuse byte är 11011011.

Utökade Fuse bitar

De utökade säkringarna används bara fastställa en brun ut upptäckt (BOD). ATmega marker kan bli instabil eller otillförlitliga när den används med tillräcklig spänning. Till exempel kan Atmega328 / 328P köra säkert på 16 MHz om den har minst 4 V leverera. Något under 4V betyder chip kan förväntas bära sig illa åt. Detta skulle vara ett problem om enheten används med sensorer ta mätningar eller förlitat sig på exakta tider.

För att säkerställa chip har tillräcklig inspänning en minsta spänning kan ställas in. Om spänningen sjunker under denna nivå kommer att sedan chip återställa sig själv. Detta kallas brown-out detektor nivån. I grund och botten om medföljande spänningen understiger BOD chip håller återställning nere.

Jag går inte igenom varje bitar av utökade fuse byte. Som standard är alla bitar i detta byte anges som 1 (unprogrammed).

Och här är vår utökade fuse byte är 11111111.

Se Steg
Relaterade Ämnen

Idiot's Guide till programmering AVR: s på de billiga (med Arduino IDE!)

Mikrokontroller är, utan tvekan, fantastiska små saker. De är mångsidiga, kraftfull och mycket små. Tyvärr, den sistnämnda drag också delas av både min plånbok och mina kunskaper i programmering. Min förståelse av C är dålig, och jag har knappt råd a...

Hur du ändrar avhopp från avstånd, (kall inställning med gyllene JACK)

Köp en gammal sax jack på en second hand butik, "sax" jack i bilden kommer att spridas av nära kedja vistelser. Om du så önskar, kan du använda två klämmor så den dropout inre ansikten görs på två exakt parallella imaginära planes genom hela kal...

Hur man använder en Piezo Summer att göra ljud med Arduino

Om du har en Arduino, kanske du har stött på ett projekt som krävs för styrelsen att göra ljud. En av de billigaste och enklaste sätten att åstadkomma detta är att använda en Piezo Summer.Piezo Buzzers är extremt enkla att tråd, och har mycket enkel...

Hur du gör din egen AVR programmering station för under 8 dollar

Hej igen!Det senaste året har jag tränat med AVR microcontrollers och Arduinos.Jag köpte först en * klassiska * Attiny85 och programmeras det genom min arduino Leonardo. Det var häftigt att se en kala marker göra programmerade saker (i en bråkdel av...

Hur man ändrar en klocka batteri med normala verktyg

Hej, här är en video som ger enkel, lätt för att följa steg om hur du ändrar en klocka batteri. Jag visar också hur man ska polera metall portionr av din klocka....

Hur du ändrar ditt standardspråk i Windows 10

Hur du ändrar ditt standardspråk i Windows 10. Denna video visar dig hur du ändrar ditt standardspråk på mindre än en minut.Steg 1: Kontrollera hur man ändrar det...

Hur du ändrar datornamnet i Windows 10

Jag kommer att visa dig hur du ändrar datornamnet i Windows 10. Det är en bra idé att ha unika datornamn på samma nätverk och ibland behöver du ändra datornamn från standardnamnet du angav när du ställer in datorn.Steg 1: Hur du ändrar datornamnet i...

Hur du ändrar startup program Windows 7

Vi förklarar hur du ändrar oönskade program från start i Windows 7.Steg 1:När du kör Windows 7, körs här operativsystemet automatiskt vissa program varje gång du startar upp din dator. Följ denna video för att ändra din starta program...

Hur du ändrar din tapet i Windows 7 Starter Edition

Obs: detta Instructable är för Windows 7 Starter Edition endast. Inte Följ dessa instruktioner om du använder en annan version av Windows 7. Detta är också min allra första Instructable, så kritik är efterlyst. Detta kommer att visa dig hur du ändrar...

Hur du ändrar dina DNS-inställningar manuellt

Donetutor.I denna tutorial kommer jag förklara om hur du ändrar DNS-inställningar på Windows-datorer manuellt. Manuellt givet ändra DNS-inställningar behövs ibland på någon ögonblick. Här är en steg för steg hur man ändra DNS-inställningar manuellt.S...

Hakr handledning: Hur du ändrar ett Windows-lösenord

detta en kort handledning om hur du ändrar ett Windows-lösenord.DISCLAIMER: Detta skall användas endast för instruktions och jag är inte ansvarigt för skada eller förstörelse till dig eller din dator som kan uppstå från att försöka detta Instructable...

Hur du ändrar din IP-adress

I detta Instructable jag visa dig hur du ändrar din IP-adress kan detta vara användbart om du behöver förbli dolda på internet eller undvika ett förbud från en webbplats eller server.Också prova Ip changer om videon är lite mycket för dig: http://adf...

Hur du ändrar Windows-lösenordet

Hur du ändrar Windows-lösenordetEn mycket kort video om hur du ändrar windows-lösenord.Du kan göra datorn säkrare genom att ändra ditt Windows-lösenord regelbundet och använda ett starkt lösenord. Tryck på CTRL + ALT + DELETE och klicka sedan på ändr...

Hur du ändrar materialet för objekt i Photoshop

Photoshop CC 2014 handledning visar hur du ändrar materialet av en staty eller annat objekt.Få upp till 20% rabatt Photoshop + Lightroom! Endast $7.99 p/månad: https://db.tt/4PNmz1S8Staty av Liberty Foto: https://db.tt/9xBGjIB7Trä textur: https://db....

Hur du ändrar din banner - YouTube en kanal 2013

detta är en enkel video om hur du ändrar din banner!...

Tutorial: Hur du ändrar en nedre kulled i en 1995 Honda Accord

gillar bilar? Kolla in min nya hemsida! http://nukem384.blogspot.com/Lär dig hur du ändrar en nedre kulled i din 1995 Honda Accord. Denna handledning kommer att vara mycket lik många andra Honda och andra bilar....

Hur du ändrar RC bil via 2,4 GHz nRF24L01 Arduino Del1 Transmitter(Tx)

Denna undervisning kommer att presentera hur man ändra billigt rc bil med 2,4 GHz nRF24L01 modul med Arduino controller UNO.Vanliga rc bil leksak använda AM / FM 20-50 MHz radiokontroll som har endast 5-10 m. fjärr utbud och bullriga kontroll runt bl...

Hur du ändrar en servomotor för kontinuerlig rotation (en motor walker robot)

detta instructable är en del av en motor walker.Det finns biljoner tutorial så här, vet jag :-)De där med i skolan under lunch bryta med en Sony Mavica kamera (diskett)!5 februari 2001, 12:18:50Steg 1: Hur du ändrar en servomotor för kontinuerlig rot...

Hur du ändrar en punktering

är det nästan oundvikligt att någon gång i ditt liv kommer du att uppleva den fruktade och obekvämt punktering. Du kör längs, sjunger din favoritlåt och plötsligt din bil börjar dra åt sidan och hörs det hemskt flaxande dina däck som bara gav ut.Även...