Witam
Już trochę czasu działam z mikrokontrolerem Atmega16. Ostatnio postanowiłem zrobić sobie nową płytkę testową, ale tym razem dla Atmega16L przystosowaną do zasilania 3.3V (planuję w najbliższym czasie zacząć zabawę z kartami SD a nie chcę używać niepotrzebnych konwerterów napięć). Płytka bardzo podobna do jej 5V-owego odpowiednika: zewnętrzny kwarc, po kondensatorze 22n przy każdej jego nóżce, rezystor 4k7 między reset a 5V i jakiś kondensator filtrujący zasilanie.
Dysponuję Atmegami w obudowie TQFP44, więc ewentualne rozlutowywanie jest bardzo utrudnione (nie mam lutownicy na gorące powietrze). Z tego powodu postanowiłem lutować do płytki tylko pierwsze 8 nóżek (6 do programowania i 2 do kwarcu). Poniżej zdjęcia jak to wygląda:
Procki są prezentem od kolegi, część jest nowa a część z demontażu, także nie wiem jak są ustawione fusebity. I właśnie tutaj zaczął się cały problem. Otóż podpinając płytkę przez USBasp do komputera nie jestem w stanie odczytać fusebitów (przez AVRdude). Na wszelki wypadek robię to przy zmniejszonym taktowaniu programatora. Ale przejdźmy do sedna. Po wklepaniu komendy: avrdude -p m16 -c usbasp wyświetla mi się strasznie dziwny komunikat...
Szukałem po Internecie, ale znajdowałem tylko przypadki gdy sygnatura była zerowa. A u mnie nie dość że taka nie jest, to jeszcze się zmienia! Zaliczyłem już 102, 103, 1E9402, 1E9603, i wiele wiele innych, których nie zapamiętałem. Od czasu do czasu zdarza się że odczytana zostanie poprawna sygnatura (0x1E9403). Oczywiście próbowałem to obejść dopisując argument -F. Oto rezultat:
Programator z całą pewnością działa - cały czas go używam i przy Atmedze16 nie ma żadnych problemów. Mogę dowolnie modyfikować fusebity, wgrywać i zgrywać pliki hex. A tutaj proszę - nie może się nawet dostać do fusebitów. Czasem zdarza się że AVRdude zwróci:
Odczytując fusebity przy pomocy AVRdude-gui zazwyczaj zwracane są błędy dotyczące złej sygnatury, a gdy już "uda się" je odczytać, to pola lFuse i hFuse pozostają puste.
Nie mam pojęcia dlaczego tak się dzieje. Póki co sprawdziłem 2 procki i za każdym razem były te same problemy. Co to w ogóle jest? Już sama zmieniająca się sygnatura jest dla mnie nie do ogarnięcia, co dopiero całość...
Pozdrawiam i proszę o jakiekolwiek wskazówki
mopsiok
Już trochę czasu działam z mikrokontrolerem Atmega16. Ostatnio postanowiłem zrobić sobie nową płytkę testową, ale tym razem dla Atmega16L przystosowaną do zasilania 3.3V (planuję w najbliższym czasie zacząć zabawę z kartami SD a nie chcę używać niepotrzebnych konwerterów napięć). Płytka bardzo podobna do jej 5V-owego odpowiednika: zewnętrzny kwarc, po kondensatorze 22n przy każdej jego nóżce, rezystor 4k7 między reset a 5V i jakiś kondensator filtrujący zasilanie.
Dysponuję Atmegami w obudowie TQFP44, więc ewentualne rozlutowywanie jest bardzo utrudnione (nie mam lutownicy na gorące powietrze). Z tego powodu postanowiłem lutować do płytki tylko pierwsze 8 nóżek (6 do programowania i 2 do kwarcu). Poniżej zdjęcia jak to wygląda:
Procki są prezentem od kolegi, część jest nowa a część z demontażu, także nie wiem jak są ustawione fusebity. I właśnie tutaj zaczął się cały problem. Otóż podpinając płytkę przez USBasp do komputera nie jestem w stanie odczytać fusebitów (przez AVRdude). Na wszelki wypadek robię to przy zmniejszonym taktowaniu programatora. Ale przejdźmy do sedna. Po wklepaniu komendy: avrdude -p m16 -c usbasp wyświetla mi się strasznie dziwny komunikat...
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x000103
avrdude: Expected signature for ATMEGA16 is 1E 94 03
Double check chip, or use -F to override this check.
avrdude done. Thank you.Szukałem po Internecie, ale znajdowałem tylko przypadki gdy sygnatura była zerowa. A u mnie nie dość że taka nie jest, to jeszcze się zmienia! Zaliczyłem już 102, 103, 1E9402, 1E9603, i wiele wiele innych, których nie zapamiętałem. Od czasu do czasu zdarza się że odczytana zostanie poprawna sygnatura (0x1E9403). Oczywiście próbowałem to obejść dopisując argument -F. Oto rezultat:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e9403
avrdude: safemode: Verify error - unable to read lfuse properly. Programmer may
not be reliable.
avrdude: safemode: To protect your AVR the programming will be aborted
avrdude done. Thank you.Programator z całą pewnością działa - cały czas go używam i przy Atmedze16 nie ma żadnych problemów. Mogę dowolnie modyfikować fusebity, wgrywać i zgrywać pliki hex. A tutaj proszę - nie może się nawet dostać do fusebitów. Czasem zdarza się że AVRdude zwróci:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e9403
avrdude: current erase-rewrite cycle count is -50462977 (if being tracked)
avrdude: safemode: Fuses OK
avrdude done. Thank you.Odczytując fusebity przy pomocy AVRdude-gui zazwyczaj zwracane są błędy dotyczące złej sygnatury, a gdy już "uda się" je odczytać, to pola lFuse i hFuse pozostają puste.
Nie mam pojęcia dlaczego tak się dzieje. Póki co sprawdziłem 2 procki i za każdym razem były te same problemy. Co to w ogóle jest? Już sama zmieniająca się sygnatura jest dla mnie nie do ogarnięcia, co dopiero całość...
Pozdrawiam i proszę o jakiekolwiek wskazówki
mopsiok