Stap 3: Hoe te programmeren zekeringen?
Voordat u begint, moeten we omhoog kijken naar de fuse-bits van Atmega8 en beginwaarde van hen. Sinds im waardoor dit instructable van mobiele, maakte ik een tabel met de vereiste gegevens. Ik heb gemaakt met behulp van google blad android app. Ik kon niet een manier vinden om hen omzetten in foto's. Dus hier im posten van de link.Fuse-bits Atmega 8 (de im met behulp van in deze tutorial)
https://docs.Google.com/spreadsheets/d/1haE2Sprdsa-NgKYsOQlwI99WHfGqCItJutG4h-MnOus/Edit?USP=docslist_api
Nu gaan we over tot de details van hoe te programmeren van de fuse-bits in uw AVR afhankelijk van de specifieke programmeur die u gebruikt. In eerste instantie moeten we raadpleegt u de handleiding van de programmeur over de details. Als u een STK600 gebruikt met AVR Studio, het venster STK600 heeft bijvoorbeeld een tabblad met het label zekeringen, waar u de verschillende stukjes en waar kunt u het programma instelt, controleren of lezen van de fuse-bits.
(Im ' using een 8 Atmega voor mijn voorbeeld. Ik gebruik meestal Atmega 8 zoals het is goedkoop en genoeg geheugen voor de meeste van mijn projecten bevat).
Meeste mensen hebben verwarring over dit onderwerp. Heel simpel gezegd, er zijn slechts twee soorten zekeringen, hoge fuse (hfuse) en lage fuse (lfuse), sommige microcontrollers hebben een extra zekering byte bekend als uitgebreide fuse (efuse).
Het meest verwarrende deel komt hier. De unprogrammed staat van een fuse bit is logica hoog of 1, programmeren van de fuse-bits zal veranderen zijn niveau aan logica lage of 0.
"Uitzonderlijk gewoon zijn om in gedachten te houden is - de fuse-bits gerelateerde om de boot loader zijn niet toegankelijk vanaf software, maar deze kunnen worden geraadpleegd in programmeermodus te activeren met behulp van parallelle /serial programming tool."
Zoals beschreven in de bovenstaande afbeelding, wordt de zekering samen met de bitwaarde en bits getal weergegeven. Sommige functies van de de hierboven genoemde zekeringen zijn:-
(Ik gebruikte een gegevensblad Atmega 8 voor voor het diagram die ik gepost).
Hoge Fuse byte (hfuse)
1) eerste stukje is BOOTRST die is unprogrammed standaard (1). Als deze bit geprogrammeerd (0) dan is na het omhoog het aandrijven of apparaat resetten gestart programma uitvoeren van bootloader gedeelte van geheugen. Gewoon, als een bootlaoder wordt gebruikt om flash MCU, dit stukje moet zijn ingeschakeld. Als u upload uw firmware met behulp van ISP programmeur, dan laat dit stukje ongerepte.
BOOTSZ0 en BOOTSZ1 zijn ook belangrijk als bootloader wordt gebruikt. Deze bits kunt om bootloader sectie grootte te selecteren.
2) volgende beetje is EESAVE. Als deze zekering is geprogrammeerd (door te schrijven 0 naar het) blijft EEPROM geheugen volledig ongewijzigd tijdens procedure Chip wissen. Deze zekering kan soms nuttig zijn. Voor aanleg als u sommige belangrijke gegevens houden in het EEPROM geheugen zoals kalibratie waarden en moeten updateprogramma zonder verlies van deze gegevens, dan dit stukje program. Maar als u wilt dat altijd schoon chip na wissen, dan laat dit stukje ongerepte (ingesteld op 1).
3) WDTON-bit gebruikt om in eerste instantie ingesteld watchdog-timer. Als u dit programma zullen uw watchdog-timer worden gedwongen worden altijd op en houden chip regelmatig resetten als geen speciale zorg is genomen. Als geen noodzaak voor watchdog, dan laat het unprogammed.
4) SPIEN bits wordt gebruikt om te schakelen van seriële programmering modus ISP. Eigenlijk is het niet mogelijk om te schakelen van dit stukje van seriële modus. Het moet worden gedaan via hoogspanning programmering.
5) dezelfde situatie is met RSTDSBL bit. Wordt gebruikt voor het uitschakelen van reset functionaliteit die RESET converteert pin in voor I/O. Dit is in het algemeen niet aanbevolen. En het kan niet worden uitgeschakeld wanneer het apparaat is geprogrammeerd in de ISP modus.
6) CKOPT-bit gebruikt om oscillator opties te selecteren.
Lage zekeringen (lfuse)
Laat kijkt naar lage byte van zekeringen.
1) een groep van vier vergelijkbare bits die CKSEL0 naar CKSEL3 worden gebruikt om klokken opties te selecteren. CKSEL0 aan CKSEL3 zekeringen zijn standaard ingesteld om interne 8MHz RC-oscillator. Maar we weten dat AVR 's kunnen worden geklokt op meer manieren:
* Gekalibreerd interne RC-oscillator (standaard 8MHz)
* Externe RC-oscillator
* Externe kristal of crystal resonator
* Externe lagefrequentie-crystal
* Externe klok-signaalbron
Ik heb uitgelegd over SUT (start-up tijd) in de volgende stap.
Ik zou schrijven over hoe de berekening van deze waarden op onze eigen, later in dit instructable.
2) BODEN of bruine detectie inschakelen beetje kan bruin uit detectie. Brown uit detectie is over het algemeen uitgeschakeld (1). Programmering van deze bits laag (0) enanbles bruin uit detectie. De reden voor deze functie is dat wanneer de voedingsspanning lager is dan de spanning van de microcontroller voorgeschreven krijgt, begint onregelmatig gedragen. Het kan beginnen met zijn eigen geheugen wissen of willekeurige secties van de flitser kan worden uitgevoerd. Om dit te vermijden, heeft brown detectie functie gekregen. Zodra de levering spanning krijgt lager zijn dan het ingestelde niveau van BZV, de chip zal overschakelen van veilig. Wanneer de voedingsspanning keert weer terug naar normaal, wordt de chip opnieuw gestart.
BODLEVEL - met dit stukje wij annuleerteken troep naar de Brown Out detectie niveau. Voor voorbeeld - als de microcontroller uitgevoerd op 3,3 volt, kunnen we instellen de Brown Out detectie niveau 2.7 volt, zodat als de voedingsspanning dit lager wordt dan de microcontroller waas veilig dicht zal.
Een interessante functie hier op te merken is, andere AVR-microcontrollers zoals Atmega 32 hebben sommige verschillende zekeringen, zoals in de hoge fuse byte ze OCDEN en JTAGEN hebben en in de Atmega 328p er DWEN enz zijn.
Mijn excuses voor de slechte kwaliteit foto's want ik ben het maken van dit instructable van mijn android.