logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

atmega8 - Zablokowane atmega - generator zewnętrzny

altym12119 28 Lis 2012 07:29 2637 4
REKLAMA
  • #1 11583773
    altym12119
    Poziom 11  
    Posty: 12
    Witam.
    Postanowiłem zająć się ostatnio tematem związanym z "zablokowanymi' mikrokontrolerami. Mam kilka egzemplarzy Atmega8 i atmega 168, które w jakiś tam sposób podczas programowania zostały "zablokowane. Poczytałem w necie posty na temat fuse doktor'ów i innych metod ich reanimcaji. Ponieważ nie posiadam żadnego urządzenia typu resuerektor czy programator równoległy, zainteresowała mnie metoda polegająca na próbie podania zewnętrznego sygnału zegarowego dla procesora.
    Otóż metoda ta polega na podaniu na nóżkę XTAL1 sygnału z zewnętrznego generatora. Ponieważ można to zrobić korzystając z innego działającego układu mikroprocesora, to przygotowałem prosty programik powodujący generowanie przebiegu prostokątnego na jednym z wyjść działającego procka.
    Aby przekonać się, że na wyjściu faktycznie jest sygnał o przebiegu prostokątnym, ustawiłem najpierw jego "okres" na 1s, co powodowało zmianę stanu diody LED co 1s. OK, działa.
    Następnie zmieniłem parametry w programie, tak by otrzymać sygnał zbliżony do częstotliwości ok. 1Mhz. Na początku postanowiłem poeksperymentować z układem atmega sprawnym, tzn. takim który jest rozpoznawany np. przez program mkvKalkulator firmy Atnel.
    Przy włączonym rezonatorze kwarcowym (nawet bez kondensatorów włączonych do masy) program bez problemu wykrył procesor i odczytał stan jego fusebitów.
    No to teraz przystąpiłem do drugiego etapu eksperymentu i postanowiłem usunąć rezonator. Obie nóżki XTAL odłączyłem od rezonatora i do nózki XTAL1 (nóżka 9 dla Atmega8) podłączyłem z działającego układu sygnał prostokątny wygenerowany programowo o częstotliwości ok. 1MHz.
    Oczywiście masy obu układów były połączone ze sobą.
    Niestety wspomniany wcześniej program nie był w stanie odczytać procesora, ponieważ w takim połączeniu twierdził, iż nie można go zainicjować. Również device signature była nierozpoznana i wynosiła 0x000000.
    Jak należy zbudować generator zewnętrzny (poza oscylatorem kwarcowym) aby można było uruchomić sprawny mikrokontroler? Próbowałem również podać sygnał z nózki XTAL1 działającego mikrokontrolera ale bez rezultatu.
  • REKLAMA
  • #2 11583801
    tehaceole

    Poziom 28  
    Posty: 1224
    Pomógł: 102
    Ocena: 212
    A masy obydwu układów połączyłeś? :)

    Najprostszy generator:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Sposób z generatorem zewnętrznym działa na 100%. Pod warunkiem, że nie wyłączyłeś pinu RST fuskami... Ale u Ciebie ten pin nie jest wyłączony skoro normalnie możesz odczytać procka.
    Konto firmowe:
    ST - SYSTEM
    Maszkowo 24 B, Maszkowo, 75-558 | Strona WWW: www.stsystem.pl
  • REKLAMA
  • #3 11583822
    altym12119
    Poziom 11  
    Posty: 12
    Masy oczywiście połączone. Mój kod generatora to:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jak wspomniałem, dałem również sygnał z XTAL1 działającego prawidłowo układu atmega32. Częstotliwość kwarcu atmega32 to 16MHz.
  • REKLAMA
  • #4 11583951
    mmacura
    Poziom 19  
    Posty: 215
    Pomógł: 28
    Ocena: 16
    Nie jestem pewien czy dobrze rozumiem ale zamiast kwarcu podłączasz zewnętrzny sygnał zegarowy i dziwisz się że nie działa bez zmiany FUSE.
    Nie może działać bo to nie to samo.

    Marek
  • #5 11584007
    altym12119
    Poziom 11  
    Posty: 12
    Faktycznie, dla kwarcu rejestr CKSEL ma inne ustawienia niż dla External Clock. Nie wziąłem tego pod uwagę. A tak dla pewności kupię jeden procek i ustawię CKSEL na 0000. Jeżeli nie będzie problemu z działaniem na zewn. generatorze, to moje "zablokowane" procesory będą musiały czekać na FuseDoktora.

    ----------------------------------------------------------------------------
    Doświadczenie się udało, dwie atmegi 8 przywrócone do życia. Problem jedynie pozostał z jedną atmegą 168p - nie bardzo chce zaskoczyć. Mam też jeszcze jeden układ atmega168p ale w obudowie smd i nie wiem czy będę próbował.
    W każdym razie dziwne, że atmega 168 nie działa dalej. Tak samo jak te dwie atm8 padła przy błędzie podczas wgrywania oprogramowania. Fusebity były ustawione tylko raz na poczatku.
REKLAMA