Autor: Dondu
Artykuł jest fragmentem cyklu: Pułapki mikrokontrolerów AVR
Problem z fusebitami SPIEN i RSTDISBL pojawia się w przypadku:
- zabawa z fusebitami,
- świadome ich użycie.
RSTDISBL
Tomator.pl
Po drodze wyłączam RESET, bo jest mi nóżka potrzebna do czegoś innego...
No i mogę go tak zaprogramować tylko raz :-(
Po drodze wyłączam RESET, bo jest mi nóżka potrzebna do czegoś innego...
No i mogę go tak zaprogramować tylko raz :-(
Tomator pisze o wyłączeniu funkcji RESET pinu PB5 w mikrokontrolerze ATtiny13. Wyłączał funkcję RESET tego pinu, za pomocą fusebitu RSTDISBL:
Rys. ATtiny13 |
Problem polega na tym, że niektóre z fusebitów nie można wyzerować za pomocą niektórych programatorów. W tabelce przy RSTDISBL mamy przypis nr 4, który pod tabelką wyjaśnia, że:
ATtiny13 datasheet str. 103
Gdy zaprogramujesz fusebit RSTDISBL, będziesz musiał używać programatora wysokonapięciowego, by móc ponownie zaprogramować mikrokontroler.
Gdy zaprogramujesz fusebit RSTDISBL, będziesz musiał używać programatora wysokonapięciowego, by móc ponownie zaprogramować mikrokontroler.
Zobaczmy jak to jest w ATmega8:
Rys. ATmega8 |
ATmega8 datasheet str. 223
Gdy zaprogramujesz fusebit RSTDISBL, będziesz musiał używać programatora równoległego, by móc zmieniać fusebity lub ponownie zaprogramować mikrokontroler.
Gdy zaprogramujesz fusebit RSTDISBL, będziesz musiał używać programatora równoległego, by móc zmieniać fusebity lub ponownie zaprogramować mikrokontroler.
SPIEN
Ten bit odpowiada, za możliwość programowania za pomocą programatora szeregowego. Podobnie jak RSTDISBL nie można przywrócić jego ustawienia domyślnego (wyzerowany czyli zaprogramowany), przy użyciu niskonapięciowego programatora szeregowego (najpopularniejsze programatory)
Jednak w przypadku fusebitu SPIEN projektanci AVR'ów wprowadzili dodatkowe zabezpieczenie (specjalnie lub nie) polegające na tym, że za pomocą z niskonapięciowego programatora szeregowego nie można zmienić ustawić tego bitu (jedynka czyli niezaprogramowany). innymi słowy w większości przypadków nawet gdybyś chciał, to nie zmienisz tego fusebitu:
Rys. ATmega8 |
Ale jeżeli dysponujesz odpowiednim programatorem, możesz ten bity ustawić blokując możliwość programowania szeregowego. Dopóki jest to świadomy wybór dopóty nie ma problemu :-)
Zobacz pozostałe pułapki AVR
- Pułapki AVR: Spis treści
Prosto i dokładnie napisane. Nie ma ogólników tylko konkrety np "za pomocą z niskonapięciowego programatora szeregowego nie można zmienić ustawić tego bitu". Gdyby było "za pomocą USBASP nie można zmieniać tego bitu", to pojawiłyby się pytania. Wiedząc o istnieniu HVPP lub HVSP tamto pełniejsze zdanie ma sens. Dzięki za ten i inne artykuły!
OdpowiedzUsuń