úterý 30. prosince 2008

Problémy s atmega64

Atmega64 použitá v řídicím modulu mě zase trochu potrápila. Pořád jsem nemohl přijít na to, proč nefunguje ani jednoduchý program ovládající podsvětlení lcd. Pin spínající tranzistor zkrátka jakoby na nic nereagoval. Několikrát jsem překontrolovat nastavení všech registrů, fuse bitů a... Nic. Po řádné chvíli googlení se mi podařilo odhalit příčinu. Řešení je např. zde:
Za všechno může fuse bit m103c. Naprogramováním tohoto bitu (nastavením na nulu) se mikroprocesor uvede do režimu, kdy je kompatibilní se starším procesorem atmega103. Vše (téměř) funguje normálně - omezeno je jen několik funkcí. Mimo jiné lze například piny portu G používat jen jako vstupní atd. V datasheetu je tento kompatibilní mód dobře popsán, ale nikde ani slovo o tom, že je defaultně zapnutý.
By programming the M103C Fuse, the ATmega64 will be compatible with the ATmega103 regards to RAM, I/O pins and Interrupt Vectors as described above.
Stačí tedy jeden příkaz:
#avrdude -p m64 -c usbasp -U efuse:w:0xFF:m
a vše je rázem v pořádku. Atmega64 se pak chová (a hlavně funguje) jako atmega64 :-)


Žádné komentáře:

Okomentovat