Witam,
Oto problem:
ATMega16 z zewnętrznym kwarcem 4MHz. Korzystając z uisp (w linuksie) wszystko mogłem zrobić. Zaprogramować, odczytać fuse bity itp. Napisałem program testowy. Następnie chciałem wyłączyć JTAG i pomyliłem górny i dolny bajt z fusami. Zamiast do górnego wpisałem do dolnego 0xD9 co sprawiło że procesor przestawił się na kwarc o niskiej częstotliwości i zmienił ustawienia SUT1..0 na 01. Po tej operacji straciłem kontrolę nad procesorem, a program nie wykonywał się. UISP wyświetla komunikat: Probably the AVR MCU is not in the RESET state.
Zmieniłem kwarc na 32kHz i zostawiłem 22p kondensatory. Program rusza i działa tak jak działał, ale nie mogę ani zaprogramować ponownie ani zmienić fuse_bitów, a UISP ciągle wyświetla ten sam komunikat.
O co chodzi??
Dodano po 26 [minuty]:
Sam sobie odpowiadam.
Problem rozwiązany. Okazało się że należało wydłużyć czasy dla sygnałów SCK ponieważ był za szybki dla kwarcu 32kHz. UISP umożliwia taką zmianę.
Oto problem:
ATMega16 z zewnętrznym kwarcem 4MHz. Korzystając z uisp (w linuksie) wszystko mogłem zrobić. Zaprogramować, odczytać fuse bity itp. Napisałem program testowy. Następnie chciałem wyłączyć JTAG i pomyliłem górny i dolny bajt z fusami. Zamiast do górnego wpisałem do dolnego 0xD9 co sprawiło że procesor przestawił się na kwarc o niskiej częstotliwości i zmienił ustawienia SUT1..0 na 01. Po tej operacji straciłem kontrolę nad procesorem, a program nie wykonywał się. UISP wyświetla komunikat: Probably the AVR MCU is not in the RESET state.
Zmieniłem kwarc na 32kHz i zostawiłem 22p kondensatory. Program rusza i działa tak jak działał, ale nie mogę ani zaprogramować ponownie ani zmienić fuse_bitów, a UISP ciągle wyświetla ten sam komunikat.
O co chodzi??
Dodano po 26 [minuty]:
Sam sobie odpowiadam.
Problem rozwiązany. Okazało się że należało wydłużyć czasy dla sygnałów SCK ponieważ był za szybki dla kwarcu 32kHz. UISP umożliwia taką zmianę.