Natrafiłem na dziwny problem;
Chodzi o atmegę128.
Fusy 3F D4 FF (lata na kwarcu 14Mhz).
Do tego jest bootloader 1kb na wejściu (przerobiony MCS bootloader do bascoma),
no i sam program w bascomie.
"normalna" procedura wygrywania softu jest taka:
Za pomocą AVRDRAGON, spod Atmel Studio ustawiam sobie fusy.
Następnie wgrywam plik HEX bootloadera. Wgrywa się OK, weryfikacja OK (z ISP clock 2Mhz) - bootloader działa poprawnie.
Potem, spod bascoma , już z użyciem bootloadera, przez RS232 wgrywam "główny" program. No i gitara - wszystko hula.
No i dalej zaczynają się problemy.
Chciałbym zrobić sobie "zrzut" całego flasha, żeby go potem wgrywać "w całości".
Zatem znowu z użyciem AVRDRAGONA odczytuję sobie zawartość flasha. Dla pewności z wolniejszym ISP clock - np. 250 kHz.
Niby odczytuje się ok, zapisuje mi pliczek.
Jednak próba weryfikacji już nie jest OK :
"Verifying Flash...Failed! address=0x0000 expected=0xff actual=0x0c"
Kiedy to samo robię z pamięcią EEPROM - problemu nie ma. Dane odczytane się poprawnie weryfikują. Nawet przy ISP clock 2 Mhz.
Czyli nie jest to problem z programatorem raczej.
Aha, oczywiście lockbity są powyłączane...
Żeby było śmieszniej, to pod adresem 0x0000 POWINNO być 0C.
Kiedy zaglądam do pilku hex - tak właśnie jest zarówno w pliku wynikowym z bascoma, jak i w pliku odczytanym z MCU. Oczywiście plik z "samym programem" jest krótszy niż plik odczytany z MCU już z bootloaderem.
Ale akurat początki są oczywiście takie same - i w obu plikach jest pod adresem 0000 wartość 0C.
Zatem skąd on bierze to "expected=0xff" podczas weryfikacji ??
__________________
przed chwilą sprawdziłem jeszcze - korzystając z USBASP i programu Sinaprog - plik odczytany z flasha przez AVRDRAGON weryfikuje się z procesorem POPRAWNIE.
__________________
Po odłączeniu na chwilę dragona, i podłączeniu ponownie - teraz działa poprawnie. znaczy przynajmniej zapisuje flash i eeprom i poprawnie weryfikuje...
Już nic nie rozumiem...
Chodzi o atmegę128.
Fusy 3F D4 FF (lata na kwarcu 14Mhz).
Do tego jest bootloader 1kb na wejściu (przerobiony MCS bootloader do bascoma),
no i sam program w bascomie.
"normalna" procedura wygrywania softu jest taka:
Za pomocą AVRDRAGON, spod Atmel Studio ustawiam sobie fusy.
Następnie wgrywam plik HEX bootloadera. Wgrywa się OK, weryfikacja OK (z ISP clock 2Mhz) - bootloader działa poprawnie.
Potem, spod bascoma , już z użyciem bootloadera, przez RS232 wgrywam "główny" program. No i gitara - wszystko hula.
No i dalej zaczynają się problemy.
Chciałbym zrobić sobie "zrzut" całego flasha, żeby go potem wgrywać "w całości".
Zatem znowu z użyciem AVRDRAGONA odczytuję sobie zawartość flasha. Dla pewności z wolniejszym ISP clock - np. 250 kHz.
Niby odczytuje się ok, zapisuje mi pliczek.
Jednak próba weryfikacji już nie jest OK :
"Verifying Flash...Failed! address=0x0000 expected=0xff actual=0x0c"
Kiedy to samo robię z pamięcią EEPROM - problemu nie ma. Dane odczytane się poprawnie weryfikują. Nawet przy ISP clock 2 Mhz.
Czyli nie jest to problem z programatorem raczej.
Aha, oczywiście lockbity są powyłączane...
Żeby było śmieszniej, to pod adresem 0x0000 POWINNO być 0C.
Kiedy zaglądam do pilku hex - tak właśnie jest zarówno w pliku wynikowym z bascoma, jak i w pliku odczytanym z MCU. Oczywiście plik z "samym programem" jest krótszy niż plik odczytany z MCU już z bootloaderem.
Ale akurat początki są oczywiście takie same - i w obu plikach jest pod adresem 0000 wartość 0C.
Zatem skąd on bierze to "expected=0xff" podczas weryfikacji ??
__________________
przed chwilą sprawdziłem jeszcze - korzystając z USBASP i programu Sinaprog - plik odczytany z flasha przez AVRDRAGON weryfikuje się z procesorem POPRAWNIE.
__________________
Po odłączeniu na chwilę dragona, i podłączeniu ponownie - teraz działa poprawnie. znaczy przynajmniej zapisuje flash i eeprom i poprawnie weryfikuje...
Już nic nie rozumiem...