Resetovač FUSE bajtů a ISP programátor
pro ATtiny


Úvod

Původní "vysokonapěťový" resetovač fuse bajtů jsem přepracoval a navrhnul na něj plošňák.
Není to sice nic, co by se nedalo "splácat" na nějaké univerzální destičce, nebo na nepájivém poli, ale na plošňáku to vypadá o dost líp a je to i mechanicky odolnější.
Teď tenhle přípravek dokáže nejen nastavovat FUSE, ale zároveň slouží i jako ISP programátor.
Součástí tohoto nového ReFusátoru je i Step-Up regulátor napětí (z 5V na 12V), takže nepotřebuje už žádný další zdroj.
Všechno je to postavené na malé desce 5x5cm a řízené jedním Arduinem NANO

Napájení si bere z USB portu z počítače a pomocí tohoto USB připojení také probíhá komunikace při nahrávání programu.

Požadované nastavení fuse bajtů se dá jednoduše změnit pomocí DIL přepínačů.
V programu je předpřipraveno několik variant, ze kterých je možné čtyři vybrat a přiřadit je čtyřem kombinacím přepínačů.
Defaultně je nastaveno toto:

Přepínač
1
Přepínač
2
LED signalizace [Hfuse], [Lfuse],
[Efuse]
Funkce
ON ON svítí zelená [0x7A] [0xFF]
[--]
Nastavení ATtiny13 tak, aby bylo možné s obvodem komunikovat (nahrát do něj program). Vývod PB5 má funkci RESET, vnitřní frekvence oscilátoru není dělená 8. 
1 ON bliká zelená [0x7A] [0xFE]
[--]
V ATtiny13 se funkce vývodu PB5 přepne do stavu, kdy je možné ho použít jako běžný vstupně/výstupní pin. V tomto nastavení už není možné s obvodem komunikovat. 
ON 2 svítí červená [0xE2] [0xDF]
[0xFF]
Nastavení ATtiny25 / ATtiny45 / ATtiny85 tak, aby bylo možné s těmito obvody komunikovat (nahrát do nich program). Vývod PB5 má funkci RESET, vnitřní frekvence oscilátoru není dělená 8.
1 2 bliká červená [0xE2] [0x5F]
[0xFF]
V ATtiny25 / ATtiny45 / ATtiny85  se funkce vývodu PB5 přepne do stavu, kdy je možné ho použít jako běžný vstupně/výstupní pin. V tomto nastavení už není možné s obvody komunikovat. 


Takže je možné například v jedné poloze přepínačů nastavit fuse bajty tak, aby mohla probíhat komunikace,
Ve druhém kroku se přes ISP programátor nahraje do ATtiny požadovaný program a v posledním kroku se přepne přepínač do polohy pro zrušení funkce pinu RESET a provede se další vysokonapěťový přepis fuse bajtů.

To všechno na jedno zasunutí ATtiny do patice. 


Schéma a popis elektroniky

 
Větší rozlišení po kliknutí na obrázek

Celé zařízení je řízeno pomocí Arduina NANO.
Toto Arduino je osazené v patici, takže v případě potřeby je možné ho vyjmout a použít na jiné projekty.

Programované ATtiny je možné vložit buď do patice, nebo se dá připojit přes standardní ISP konektor (MLW10) na boku desky.

K přeprogramování FUSE je potřebné zvýšené napětí 12V. Toto napětí se získává z modulu zvyšujícího (Step-Up) regulátoru.
Není tedy nutné připojovat další zdroj, jako tomu bylo u předchozích verzí resetovačů Fuse bajtů.
Modul jsem sehnal tady: eBay

Napětí na 12V zdroji je regulovatelné. Z toho důvodu jsem považoval za vhodné testovat jeho skutečnou velikost.
K testu dochází vždycky při resetu Arduina NANO. Když je napětí v toleranci 11,7 až 12,3V, program normálně naběhne.
Pokud je při startu napětí mimo toleranci, přejde program do režimu nastavení tohoto napětí.
V tomto režimu se rozsvítí modrá signalizační LED. Trimr na regulátoru se musí nastavit tak, aby modrá LED zhasla.
Modrá LED zhasne tehdy, když je výstupní napětí za regulátorem mezi 11,9 až 12,1V.
V tomto režimu je zároveň aktuální hodnota napětí odesílána po sériovém portu, takže je možné v případě potřeby tuto hodnotu sledovat. Z režimu nastavení je možné odejít pouze resetem.

Signalizace různých stavů je zajišťována pomocí 3-barevné SMD LED. Jako alternativu je možné použít i vývodovou trojbarevnou LED (THT), ale kvůli omylu při navrhování plošného spoje je nutné v programu přeházet barvy (viz níže).

Tlačítko pro přepis fuse bajtů je dvojité. To umožňuje připojit 12V na ATtiny jen v případě jeho sepnutí. V režimu ISP programátoru je 12V odpojených.

Pin RESET na ATtiny je ovládán přes FET tranzistor. Vychází to z původního zapojení restovače FUSE bajtů. Protože FET tranzistor v tomto zapojení obrací fázi signálu, bylo třeba upravit originální program pro ISP programátor, aby to obracení fáze zohlednil.

 

  

  


Plošný spoj

Plošný spoj jsem si nechal vyrobit u DirtyBoards: ODKAZ

horní strana

spodní strana

 

Tato první objednaná verze (označená jako Ver.3) má dva nedostatky, které je ale jednoduché opravit:

První problém byl v tom, že alternativní THT varianta tříbarevné LED má jinak uspořádané vývody, než jsem předpokládal. Takže barvy v SMD a THT verzi neodpovídají. Nejjednodušším řešením je změna přiřazení pinů pro THT LED v programu. Při použití SMD LED je všechno v pořádku.

Druhým problémem bylo, že jsem se při návrhu desky snažil zabránit tomu, aby se 12V nedostalo na boční konektor, na kterém by mohl být připojený třeba USBasp programátor.
Neuvědomil jsem si, že při přepisu fuse bajtů na obvodu v přídavné desce je těch 12V na bočním konektoru nutnost.
Oprava spočívá v přidání dvou drátových propojek na desku a provrtání jednoho prokovení.

 

Já už další desky vyrábět nebudu, ale pokud byste si chtěli nechat tyto desky vyrobit sami, tak tady je opravená verze plošného spoje, která by měla mít výše zmíněné nedostatky opravené: refuse_v4.zip

 

 

 


Software

Jádrem celého programu jsou dva bloky, které jsem z větší části opsal a trochu upravil.

První blok je resetovač FUSE bajtů. Byl převzatý z těchto stránek: https://sites.google.com/site/wayneholder/attiny-fuse-reset
Upravil jsem tam možnost výběru FUSE pro různé obvody pomocí DIL přepínačů. 

Druhý blok je ISP programátor, který je obsažen v příkladech ve vývojovém prostředí Arduino. V tomto bloku jsem upravil přiřazení pinů tak, aby to odpovídalo plošnému spoji. Další změnou bylo invertování signálu RESET (kvůli spínacímu FET tranzistoru).

K těmto dvěma blokům je přidán kus kódu pro testování napětí 12V zdroje a několik dalších jednodušších podprogramů pro signalizaci (blikání 3-barevnou LED).

 

Celý program pro Arduino NANO je ke stažení tady: isprefu.ino


Návody a videa


Popis jednotlivých prvků.

 


1) Nastavení FUSE pro nové ATtiny13 tak, aby bylo možné s obvodem komunikovat

Nové obvody ATtiny mají přednastavené fuse bajty tak, že dělí základní frekvenci 8 (v LowFuse je nastavený bit CKDIV8).
Kvůli tomu není možné běžnými programátory nahrát do ATtiny program.
Pro zrušení bitu CKDIV8 je třeba provést vysokonapěťový přepis FUSE bajtů.

V případě THT varianty obvodu ATtiny13 ho stačí zasunout do patice, přepnout DIL přepínače do polohy ON-ON (zelená LED trvale svítí) a podržet tlačítko tak dlouho, než se rozsvítí modrá LED. Tím jsou FUSE bajty přepsány.

Pro obvody ATtiny25, ATtiny45 a ATtiny85 se FUSE resetují podobně, akorát DIL přepínač se při použití těchto obvodů nastaví do polohy ON-2 (trvale svítí červená LED)


Video s ukázkou přepisu fuse bajtů pro ATtiny13

 


Video s ukázkou přepisu fuse bajtů pro ATtiny85

 


2) Nastavení FUSE pro ATtiny, které je osazené na jiné desce s ISP konektorem

Pokud je ATtiny osazené na externí desce nebo je v SMD variantě (takže nejde zasunout do patice), připojí se tato externí deska pomocí standardního ISP konektoru. Navíc je nutné ještě propojit pin PB3, který není součástí ISP konektoru.

Pak se postupuje stejně, jako v předchozím případě.

Pomocí DIL přepínače se zvolí požadované FUSE a tlačítko se podrží tak dlouho, než se rozsvítí modrá LED.

 


3) Nahrání programu do ATtiny v režimu ISP programátoru

Pokud je ATtiny ve stavu, kdy je možné ho zasunout do patice, stačí připojit programovací přípravek k počítači.

V případě, že je ATtiny součástí externí desky, stačí propojit ISP konektory (tady už není nutné propojovat pin PB3).

Ve vývojovém prostředí vybrat typ programátoru "Arduino as ISP" a pak už jen příkazem "Nahrát pomocí programátoru" poslat program do ATtiny.
Pokud dojde k úspěšnému zápisu dat do ATtiny, vývojové prostření zahlásí "Konec nahrávání".


Ukázka vypálení programu do ATtiny13


4) Obnovení funkce pinu RESET v ATtiny, nahrání programu a opětovné přepnutí pinu RESET do funkce výstupu

 
Ukázkové video s ATtiny85 na externí testovací desce.


 

5) Přímé operace s EEPROM a FLASH pamětí pomocí režimu ISP programátoru (přes AVRDUDE)

Stejně, jako je možné do ATtiny poslat program přes vývojové prostředí Arduino, je možné provádět i přímé operace s EEPROM nebo FLASH.
O komunikaci s programátorem se stará DOSovský program avrdude (je součástí instalace vývojového prostředí Arduino).

Přes příkazovou řádku dokáže například přečíst obsah EEPROM z ATtiny a uložit ho do souboru, nebo naopak obsah souboru zapsat do FLASH paměti v ATtiny.

Má spoustu nastavení. Popis všech parametrů je třeba zde: http://www.nongnu.org/avrdude...

Protože ovládání přes příkazovou řádku je nepohodlné, existuje mnoho grafických nadstaveb, pomocí kterých je možné provádět operace pomocí klikání myši.
Pro ukázku jsem použil první grafickou nadstavbu, kterou mi nabídl Google. Jmenuje se "AVRDUDESS".

V nastavovacím formuláři je nejdůležitější zvolit správný typ programátoru a přenosovou rychlost (na obrázku níže označeno červeně). Tyto položky nastavte přesně tak, jak je uvedeno na obrázku.

Dále je třeba zvolit virtuální COM port (vytvoří se po připojení ISP programátoru k počítači) - na obrázku modře, ale u každého to může být jiné.

Další nastavení už snad nepotřebuje žádné komentáře. Zvolí se soubor ze kterého se mají načíst a odeslat data do ATtiny, nebo do kterého se má zapsat obsah příslušné paměti z ATtiny.

 

 


 

 




úvodní strana webu AstroMiK.org

width="0" height="0" alt="" border="0">

poslední úprava stránky 12.2.2017