ATtiny13

Práce s FUSE bajty

Jak už jsem se zmínil v předchozích článcích, ATtiny má v sobě několik speciálních paměťových buěk, pomocí kterých se dají nastavit různé hardwarové parametry obvodu.Tato paměťová místa jsou označována jako FUSE bajty ("HIGH Fuse" a "LOW Fuse") a "Lock" bajty.
Někdy se to překládá jako "pojistky", ale není to úplně přesný popis funkce.

Běžným způsobem (přes vývojové prostředí "Arduino") se tato paměťová místa nedají upravovat, ale existují programy které tyto FUSE dokáží měnit - například eXtreme Burner, nebo program AVRDUDESS



Problém je v tom, že když přenastavíte nějaké konkrétní bity v těchto "pojistkách", může to znamenat ztrátu možnosti komunikace - takže už do ATtiny nenahrajete žádný program.

Pokud se to stane, je nejjednodušším řešením použít přípravek na reset FUSE bajtů, který jsem popisoval zde. Po jeho použití se možnost komunikace obnoví, takže je možné do ATtiny například nahrát upravenou verzi programu.

 

Význam všech bitů ve FUSE bajtech je popsán tady: http://www.engbedded.com/cgi-bin/fcx.cgi?P=ATtiny13A

Pozor na to, že defaultní hodnota "LOW Fuse" bajtu v ATtiny13 je 0x6A.
To znamená, že je naprogramován bit č.4 (CKDIV8) do '0' - základní frekvence se tím dělí 8.
V tomto nastavení je sice možné s obvodem komunikovat, ale všechny operace a pauzy jsou pak 8x delší
Proto je vhodné ten bit CKDIV8 nastavit do '1' (to znamená NEDĚLIT hodinovou frekvenci). "LOW Fuse" tedy bude mít hodnotu 0x7A.

Podobně to platí i pro ostatní ATtiny (např. ATtiny85)

Asi nečastější úprava nastavení bude změna nultého bitu v "HIGH Fuse" (bit s názvem RSTDISBD) - tento bit umožňuje zrušení funkce RESET pinu PB5.
RESET je sice potřeba pro nahrání programu, ale když už je program v ATtiny nahraný, tak je možné změnou FUSE tento vývod použít jako obyčejný vstup / výstup.

Defaultní hodnota "HIGH Fuse" bajtu je 0xFF, pokud chcete zrušit komunikaci a použít pin PB5 například jako další výstup pro LED, změňte po nahrání programu hodnotu "HIGH Fuse" na 0xFE.

POZOR

Připravíte se tím o možnost nahrávání programu do ATtiny.

 Když zjistíte, že je v programu nějaká chyba, budete muset nejdřív přípravkem zresetovat všechny FUSE do defaultního nastavení a až teprve pak nahrát upravený program.

 

Dalším zajímavým FUSE bitem je 6. bit v "LOW Fuse" bajtu (bit s označením EESAVE). Defaultně je vypnutý (nastavený na '1'), takže při nahrávání programu do FLASH paměti dochází zároveň ke smazání obsahu EEPROM. Pokud ale EEPROM obsahuje nějaká důležitá data, je možné nastavením tohoto bitu na '0' zajistit, že se EEPROM při přehrávání programu ve FLASH nesmaže.

Tento bit nemá vliv na komunikaci, takže je možné ho měnit libovolně.
Když tedy předpokládám defaultní hodnotu "LOW Fuse" bajtu 0x7A a chcete, aby nedocházelo k mazání EEPROM, změňte tuto hodnotu na 0x3A.

Ostatní bity nastavují například čas mezi zapnutím napájení a spuštěním programu, frekvenci vnitřního oscilátoru, nebo určují napětí, při kterém se ATtiny zresetuje (Brown-out Detector).

Význam všech FUSE bitů je popsaný v katalogovém listu:

 

 

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 18.8.2015