Het wijzigen van de fuse-bits AVR Atmega328p - 8-bit microcontroller met behulp van Arduino (2 / 7 stap)

Stap 2: Begrip Fuse-bits van gegevensblad


De AtmegaXXX van de AVR-microcontrollers wordt geleverd met een standaard 1 MHz interne oscillator. In dit instructable ik zal u tonen hoe te wijzigen van de zekeringen van Atmega328P-PU werken bij 8MHz interne oscillator. De locatie van specifieke fuse-bits verschilt tussen alle drie fuse bytes (lage, hoge en uitgebreide zekeringen) afhankelijk van AVR-chip gebruikt. Dus zorg ervoor dat opschrijven voordat u ze instelt.

Lage Byte zekeringen

De lage byte zekering behandelt de klok bron, hoe snel de chip zal uitvoeren en hoe lang het moet wachten bij het opstarten. 1 byte komt overeen met 8 bits. Dus zijn er 8 bits in de lage fuse-byte. Deze 8 bits worden hier uitgelegd:

  • Bit-7: CKDIV8: wanneer de set de kloksnelheid gedeeld door 8
  • Bit-6: CKOUT: wanneer de klok instellen pulsen worden uitgevoerd op PB0 (Pin 14)
  • Bit-5: SUT1: opstartvertraging
  • Bit-4: SUT0: opstartvertraging
  • Bit-3: CKSEL3: de klok instellen
  • Bit-2: CKSEL2: de klok instellen
  • Bit-1: CKSEL1: de klok instellen
  • Bit-0: CKSEL0: de klok instellen

De ATmega chips kunnen worden uitgevoerd op verschillende snelheden of frequenties en de frequentie wordt bepaald door de klokbron die wordt gebruikt. De klokbron is ingesteld met behulp van de CKSEL3... 0 fuse-bits. Om te werken met interne klokbron moeten we CLSEL3 = 0, CKSEL2 = 0, CKSEL1 = 1 en CKSEL0 = 0. Hebt u vindt u deze waarde in de datasheet van de microcontroller. Er is een hoofdstuk "systeemklok en klok opties" in het gegevensblad. Er is een subonderwerp in dat hoofdstuk "Clock bronnen". Daar vindt u een tabel waarin de waarde van CKSEL3... 0 kunnen fount. Ik heb een screenshot van het gegevensblad bijgevoegd.

Voor de opstarttijd is er een ander subonderwerp "geijkte interne RC-Oscillator". Daar vindt u een andere tabel voor de SUT0... 1. Ik ga langzaam stijgende kracht optie te gebruiken. Dus SUT1 = 1 en SUT0 = 0.

Nu zitten we met twee meer bits in te stellen: CKOUT en CKDIV8. Ik hoef niet elke klok pulse uitgang op PB0. Dus ik zal dit ingesteld op 1 (unprogrammed).

De maximale frequentie van interne RC-oscillator voor Atmega328P-PU is 8 MHz. Dit wordt bereikt wanneer de CKDIV8 is 1 (of unprogrammed). Als u instelt dat deze gelijk is aan 0 (of geprogrammeerde) dan zal uw chip runt op 1 MHz. Dus om uit te voeren van de chip bij 8 MHz moeten wij CKDIV8 = 1.

Nu combineren alle 8 bits, onze vereiste lage fuse byte is 11100010.

Hoge byte zekeringen

De hoge byte zekering is toegelicht. U kunt gewoon overslaan dit deel. Ik heb hier alleen de hoge fuse-bits uitgelegd. We hoeven niet te veranderen van de hoge fuse-bits om de klokbron en operationele frequentie te wijzigen. Maar als u bent geïnteresseerd om te weten over de hoge byte ga dan via zekeringen de onderstaande paragraaf.

Er zijn 8 bits ook in de hoge byte-zekering. Dit zijn:

  • Bit-7: RSTDISBL: externe Reset uitschakelen
  • Bit-6: DWEN: Debug draad inschakelen
  • Bit-5: SPIEN: inschakelen van seriële programmering en gegevens downloaden
  • Bit-4: WDTON: Watchdog-timer altijd op
  • Bit-3: EESAVE: behouden EEPROM geheugen via chip wissen
  • Bit-2: BOOTSZ1: Hiermee stelt u de grootte van het systeemgeheugen bootloader
  • Bit-1: BOOTSZ0: Hiermee stelt u de grootte van de bootloader momory
  • Bit-0: BOOTRST: Selecteer de reset-vector

Nu zal ik elke bit uitleggen:

RSTDISBL (externe reset uitschakelen)

PC6 van Atmega328 is een resetpin, houden het lage (grond) en de chip zal op beginstand zetten. Dit is de werking van de schakelaar op de Arduino. Wanneer u op de reset-knop drukt het verbindt PC6 op grond en wordt de chip opnieuw ingesteld. PC6 kan ook worden gebruikt als een reguliere IO-pin maar dit houdt de resetfunctie waardoor in bochten de chip uit te schakelen kan niet langer zijn inline geprogrammeerd (in lijn programmering vereist een reset). Dit is een van de opties is het beter om niet te wijzigen. Ik veronderstel dat RSTDISBL wordt geïmplementeerd om redenen van veiligheid om te stoppen met de chip worden geherprogrammeerd of de firmware wordt gedownload. Wanneer RSTDISBL is geprogrammeerd de opstart tijd (SUT1 SUT0) wordt verhoogd tot 14CK + 4.1ms om de programmeermodus te activeren kan worden ingevoerd.
Standaard is de instelling RSTDISBL = 1 (unprogrammed).

DWEN (debug draad inschakelen)

ATmega chips hebben gebouwd in hulpmiddelen die standaard uitgeschakeld zijn voor foutopsporing. De zekering DWEN kunt u ze inschakelen. DWEN maakt gebruik van dezelfde pincode als reset (PC6) en toen DWEN is ingeschakeld (en niet de lock bits zijn ingesteld) de resetpin wordt een mededeling pin en normale reset niet meer werkt. Bijvoorbeeld, als u de pagina DWEN op een Arduino werkt de reset-knop niet meer. Te gebruiken op de chip te debuggen moet u een compatibel programmeur zoals de AVR Dragon. Aangezien ik heb geen een geschikt programmeur, ik heb nooit gebruikt en weet niet hoe u foutopsporing. Als u wilt meer weten is er een goed artikel om te beginnen.

Dit is een van de zekeringen die u met zorg moeten nemen. Als u DWEN inschakelt en tevens in staat de lock bits stellen kun je niet langer de chip op de normale manier programmeren.

Als je net begint vervolgens laten DWEN 1 (unprogrammed). Reset is immers zeer nuttig.

SPIEN (schakelen seriële programmering en het downloaden van gegevens)

ATmega chips kunnen worden geprogrammeerd met behulp van seriële programmering. Seriële programmering wordt gebruikt voor aan boord van programmeren met behulp van een seriële protocol via een Internet-provider (inline seriële programmeur) of de UART (universal asynchronous receiver / transmitter). De normale methode van de programmering van de ATmega chips is via de SPI interface met behulp van het SCK (klok), MOSI (input) en MISO (output) pinnen. Als u seriële uitschakelt kunt programmering dan u niet meer de SPI program van de chip. U kunt ook seriële programmeren met behulp van de bits lock uitschakelen. Voor normaal gebruik en ontwikkeling laat SPIEN ingeschakeld, echter, als u een apparaat hebt dat is definitief is en geen verdere programmering vereist, is dan u deze optie gebruiken kunt om te verhinderen dat mensen toegang tot de chip via seriële communicatie.

De standaardinstelling is ingeschakeld, SPIEN SPIEN = 0 (geprogrammeerd).

WDTON (Watchdog-Timer altijd op)

De watchdog is in feite een timer die leiden de chip tot zal te resetten indien het niet een OK ontvangt signaal op bepaalde tijdstippen. Dit kan handig zijn wanneer u unstable code hebt of een systeem dat mag niet permanent opsluiten. Wanneer de watchdog-timer is ingeschakeld, moet een schets crashen of bevriezen dan de timer treedt een time-out en opnieuw instellen van de chip veroorzaakt een vergelijkbaar met het indrukken van de resetknop opnieuw een een lopende Arduino. De Watchdog-Timer kan geactiveerd worden in software, zodat de instellingen van de zekering niet echt hoeft te worden gebruikt. Standaard is de watchdog-timer uitgeschakeld, WDTON = 1 (unprogrammed).

EESAVE (behouden EEPROM-geheugen)

Wanneer de ATmega-chip is geprogrammeerd is het geheugen gewist net voordat de nieuwe code is geüpload. Onder normale omstandigheden is de EEPROM-geheugen gewist evenals het programmageheugen. De zekering van de EESAVE kan worden gebruikt om te vertellen van de chip niet te wissen van de EEPROM. Dit is handig als u wilt upgraden van code maar gebruikersinstellingen die zijn opgeslagen in EEPROM.
Ik heb de gewoonte van het instellen van deze zekering; EEPROM heeft een beperkte levensduur dus hoe minder je schrijven aan de beter. Wissen van de eeprom heeft geen invloed op het uploaden van nieuwe code, en de meerderheid van mijn projecten gebruik niet het eeprom geheugen dus niet het wissen is niet een probleem. De dropController slaat instellingen en neerzetten tijden in eeprom en dus ik EESAVE de gegevens te bewaren bij het opladen van nieuwe versies van de code instellen.

De standaardwaarde is EESAVE = 1 (unprogrammed), en EEPROM geheugen is gewist tijdens het wissen van de chip cyclus bij het programmeren.

BOOTSZ1 & BOOTSZ0 (Boot loader grootte)

De ATmega chips hebben de mogelijkheid om gebruik van een opstartlader, dit is een klein programma dat wordt uitgevoerd wanneer de chip voor het eerst wordt gestart of wanneer het opnieuw wordt ingesteld. Bootloaders worden gewoonlijk gebruikt voor het initialiseren van het apparaat en het selectievakje voor externe communicatie. De Arduino gebruikt een opstartlader om te praten met een aangesloten computer om te zien of er is een nieuw programma om te worden geüpload. Dit is de reden dat de Arduino wordt opnieuw ingesteld wanneer u nieuwe code uploadt, het resetten loopt de bootloader, de bootloader controles om te zien of u nieuwe code hebt.
De bootloader wordt opgeslagen in het programmageheugen, hetzelfde geheugen gebruikt voor de toepassing van de gebruiker, en omdat de bootloader kan verschillende grootte kunt u de ATmega-chip vertellen hoeveel ruimte te reserveren. De reguliere (oudere) Arduino bootloader is 2 KB (kilobyte) maar de nieuwere Optiboot (gebruikt op de UNO) is slechts 0,5 KB (512 bytes). Als met behulp van Optiboot en instellen van de grootte van de bootloader dienovereenkomstig u een extra 1.5KB voor je eigen programma krijgt. 1.5 KB kunnen een heleboel ruimte, uit programma ruimte lopend is waarom ik begon programmering stand-alone ATmega chips in de eerste plaats. De code voor de daling van de Controller werd te groot voor de gewone Arduino, dus ik verwijderd, de bootloader.
Hebt u een opstartlader moet BOOTSZ worden gebruikt in combinatie met BOOTRST. BOOTRST vertelt de ATmega-chip het geheugenadres waar de bootloader begint. Als BOOTRST niet is ingesteld kan dan gebruiker de toepassing het geheel van het geheugen ongeacht de instellingen van de BOOTSZ.

De standaardinstelling voor nieuwe chips is BOOTSZ1 = 0 (geprogrammeerd) en BOOTSZ0 = 0 (geprogrammeerd) waardoor ze maximale geheugen gereserveerd voor een bootloader hebben.

BOOTRST (selecteer reset vector)

ATmega chips kunnen gebruiken een opstartlader, dit is een klein programma dat wordt uitgevoerd wanneer de chip wordt teruggesteld. Als u een opstartlader hebt dan u wilt informeren de MCU en dit is met behulp van de BOOTRST zekering instelling. Als de zekering van de BOOTRST is ingesteld, op reset springt het apparaat naar het adres van de Bootloader. Als niet is ingesteld, de chip zal gaan naar het startadres programma op 0x0000.

De standaardwaarde is BOOTRST = 1 (unprogrammed).

Als BOOTRST niet is ingesteld (geen bootloader) worden de zekeringen BOOTSZ niet worden gebruikt ongeacht de waarde.

Waarschuwing: De RSTDISBL, SPIEN en DWEN zekeringen hebben het potentieel om baksteen de ATmega-chip, of in ieder geval maken de chip zeer moeilijk om opnieuw te gebruiken. Voor algemeen gebruik, en vooral als je gewoon beginnen met de programmering van zelfstandige chips, moet u deze niet wijzigen instellingen zekering. Ook moet u dubbel te controleren dat u deze niet wijzigt wanneer u herschrijven van de andere instellingen van de zekering.

Dus onze onze vereiste hoge fuse byte is 11011011.

Uitgebreide Fuse-Bits

De uitgebreide zekeringen zijn alleen gebruikt voor de detectie van de brown-out instellen (BZV). De ATmega chips kunnen worden onstabiele of onbetrouwbaar wanneer gebruikt in combinatie met onvoldoende spanning. Bijvoorbeeld, aankan de Atmega328 / 328P veilig bij 16 MHz als er ten minste 4 V leveren. Iets minder dan 4V betekent dat de chip dreigt te misdragen. Dit zou een probleem zijn als het apparaat werden gebruikt met sensoren om te meten of vertrouwd op nauwkeurige tijdsinstellingen.

Om ervoor te zorgen dat de chip heeft voldoende ingangsspanning een niveau van minimale spanning kunnen worden ingesteld. Als de spanning beneden dit niveau daalt wordt dan de chip gereset zelf. Dit heet de brown-out detector-niveau. Kortom, als de geleverde spanning lager dan de BZV de chip is houdt de reset laag.

Ik ga niet door elke bits van uitgebreide fuse byte. Alle bits in deze byte is standaard ingesteld als 1 (unprogrammed).

En hier is dat onze uitgebreide fuse byte is 11111111.

Gerelateerde Artikelen

Het wijzigen van de bits in een Drill-pers

Het wijzigen van de bits in een Drill-pers

In dit instructable ik zal je laten zien hoe het wijzigen van de bits in een Drill-pers.U moet:Een boor-persEen set van boor bitsEen klauwplaat sleutelStap 1: Verwijder het stukje dat er in. De sleutel chuck in één van de drie gaatjes in de chuck inv
Het wijzigen van een Polaroid Land nemen 35mm film Camera

Het wijzigen van een Polaroid Land nemen 35mm film Camera

Ja bent u waarschijnlijk benieuwd waarom ik dit, maar het allemaal begonnen toen ik deze camera off van Ebay voor 20 dollar kocht zou doen. Ik was te kopen als een collectors item, maar toen ik het zag ik stervende was om het in een soort manier te g
Het wijzigen van een luier

Het wijzigen van een luier

hier is een snelle gids voor het wijzigen van een luier. Wat lijkt in eerste instantie een beangstigend afschuwelijke taak blijkt niet te zijn die helemaal moeilijk.Stap 1: Zoek een baby Als u een baby thats gekronkel vinden rond en luid krijsende ge
Het wijzigen van uw standaardtaal In Windows 10

Het wijzigen van uw standaardtaal In Windows 10

Het wijzigen van uw standaardtaal In Windows 10. Deze video toont u hoe uw standaardtaal wijzigen in minder dan een minuut.Stap 1: Controleer hoe dat te veranderen
Het wijzigen van een compressor koelkast in een stille luchtcompressor

Het wijzigen van een compressor koelkast in een stille luchtcompressor

hier is mijn hoe te over het wijzigen van de koelkast compressoren in stille compressoren. Ze zijn ideaal als u nodig hebt:+ een stille compressor+ een hogedruk compressor+ weinig ruimte en/of niet nodig een typische winkel compressorTypische koelkas
Het wijzigen van de RC auto via 2,4 GHz nRF24L01 Arduino Part1 Transmitter(Tx)

Het wijzigen van de RC auto via 2,4 GHz nRF24L01 Arduino Part1 Transmitter(Tx)

Deze instructie laat u kennismaken met het wijzigen van goedkope rc auto met behulp van 2,4 GHz nRF24L01 module met Arduino controller UNO.Gewone rc auto speelgoed gebruiken AM / FM 20-50 MHz RadioControle hebben slechts 5-10 m. externe bereik en law
Het wijzigen van de RAM op uw PC van HP 15 Netbook

Het wijzigen van de RAM op uw PC van HP 15 Netbook

Ik zal vertellen en tonen u het wijzigen van uw RAM op uw HP 15 Netbook. Het is van cruciaal belang dat u een paar essentiële punten die u start.Nieuwe, en het juiste type van RAM.Een kleine-tipped Phillips schroevendraaierAnti-statische armband met
Het wijzigen van de naam van uw Computer in Windows 10

Het wijzigen van de naam van uw Computer in Windows 10

Ik zal u tonen hoe te wijzigen van de naam van uw computer in Windows 10. Het is een goed idee om unieke computernamen op hetzelfde netwerk en soms hoeft u uw computernaam wijzigen van de standaardnaam die u hebt opgegeven bij het instellen van uw co
HET wijzigen van de kleur van een deel van de afbeelding IN PHOTOSHOP

HET wijzigen van de kleur van een deel van de afbeelding IN PHOTOSHOP

IN DEZE TUTORIAL HEBBEN WE OM TE WETEN DAT WE MOETEN LEREN OVER PHOTOSHOPHET WIJZIGEN VAN DE KLEUR VAN EEN DEEL VAN DE AFBEELDING IN PHOTOSHOP
Het wijzigen van een keuken kraan

Het wijzigen van een keuken kraan

dit is een eenvoudige instructable weergegeven: het wijzigen van een keuken kraan in minder dan een uur.Ik heb deze kraan bij Ikea voor een redelijke prijs en de flexibele slangen in mijn lokale hardware winkel. Kranen pluming systemen kan variëren t
Het wijzigen van een servomotor voor continue rotatie (één motor walker robot)

Het wijzigen van een servomotor voor continue rotatie (één motor walker robot)

dit instructable maakt deel uit van de ene motor wandelaar.Er zijn miljarden tutorial uitzien, weet ik :-)Ze waar nemen op school tijdens de lunch break met een camera Sony Mavica (diskette)!5 februari 2001, 12:18:50Stap 1: Het wijzigen van een servo
Het wijzigen van motorolie voor Saab 9-3

Het wijzigen van motorolie voor Saab 9-3

veiligheidsprobleemAls u nog geen enige achtergrondkennis van reparatie en onderhoud, niet probeer het zelf. Zou dit de meest gevaarlijkeProbeer. Dit ook kon brengen meer kosten om te herstellen die een fout kan maken. Veiligheidsuitrusting zoals bri
Het wijzigen van uw motorolie

Het wijzigen van uw motorolie

het doel van deze instructies is om u te begeleiden door het proces van het wijzigen van uw motor olie.Sommige details zoals filter locatie en afvoer bout locatie kunnen variëren van auto naar auto.Deze tutorial is onderverdeeld in zes stappen. Deze
Het wijzigen van een horloge batterij met normale Tools

Het wijzigen van een horloge batterij met normale Tools

Hallo, hier is een video die eenvoudig, gemakkelijk om stappen over het wijzigen van een horloge batterij biedt. Ik ook laten zien hoe het Pools van de metalen delen van uw horloge.