Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zablokowana Atmega16 przez eXtreme Burner

Sław1980 03 Maj 2012 09:34 1952 14
  • #1 03 Maj 2012 09:34
    Sław1980
    Poziom 17  

    Witam. Mam problem z brakiem komunikacji z atmegą. Mianowicie programowałem atmegę16 przez eXtreme Burner i wszystko było ok do póki przy kolejnej próbie programowania nie zapomniłem załączyć zasilania. Extreme burner przeważnie informował, że nie może zkontaktować sie z chipem więc załączałem zasilanie i programowałem ponowinie i było ok. Przy kolejnej próbie programowania znowu zapomniałem włączyć zasilanie, ale mimo tego eXtreme Burner zaczął programować i po chwili wyświetlił błąd. Kiedy załączyłem zasilanie i chciałem ponownie zaprogramować atmege, program przestał komunikować się z chipem nie wiecie co jest? Mógł się zablokować? Podobny problem miałem kiedyś z atmega8. Proszę o pomoc kogoś kto miał już taki problem lub wie czy chip jest jeszcze sprawny czy nadaje się już tylko do śmieci?
    Z góry dzięki!

    0 14
  • #2 04 Maj 2012 18:48
    Szumlus
    Poziom 17  

    Elo,

    Procesor najprawdopodobniej tylko zablokowany. Programowanie jest możliwe bez podłączonego VCC, linie programujące są w stanie dostarczyć tyle energii aby procesor "ruszył"- zwłaszcza jeśli na PCB nie ma zbyt wielu odbiorników energii prócz procesora - jednak czasem skutki są takie jak u kolegi.
    Można spróbować odblokować przy pomocy ATmega fusebit doctor.
    Sam w ten sposób zablokowałem 3 uP :)

    Pozdrawiam,
    Marcin

    0
  • #4 06 Maj 2012 23:12
    Szumlus
    Poziom 17  

    Tak, 2 procki udało się odratować 3-ci padł całkiem :)

    0
  • #6 07 Maj 2012 11:40
    piotrva
    Moderator na urlopie...

    Raczej sposób jakiś dziwny. Najprostsza metoda to podanie przebiegu prostokątnego TTL o wypełnieniu 50% i f~1MHz na nogę XTAL1 zablokowanego procesora (można wygenerować ten sygnał programowo zmieniając w pętli nieskończonej non-stop stan jakiegoś pinu I/O skonfigurowanego jako wyjście) przy odłączonym kwarcu i kondensatorach i wtedy podpiąć się programatorem (jeśli to USBAsp to załóż zworkę SLOW_SCK) i zobaczyć czy da się zmienić fusebity na wewnętrzny rezonator RC.
    Najprostszy generator programowy sygnału do odblokowywania ;-):

    Code:

    //F_CPU=4 lub 8MHz
    int main(void){

       DDRB |= (1<<PB0);
       while(1){
          PORTB |= (1<<PB0);
          PORTB &= ~(1<<PB0);
       }

    }

    A fusebit doctora na prawdę warto zbudować - porządne i przydatne urządzonko.

    0
  • #7 07 Maj 2012 12:28
    Sław1980
    Poziom 17  

    Czyli jeśli dobrze rozumiem
    metoda 1:
    podpiąć sygnał 1MHz do xtal1 zablokowanego procesora potem podpiąć programator i spróbować odczytać fusebity jeśli się uda to zmienić na takie jak fabryczne

    metoda 2:
    wrzucić na jakiś procesor kod który podałeś podpiąć jego wyjście do xtal1 zablokowanego procesora i spróbować zmienić fusebity

    czy dobrze zrozumiałem? :)

    0
  • #8 07 Maj 2012 13:18
    piotrva
    Moderator na urlopie...

    Nie, to jest jedna i ta sama metoda. Po prostu sygnał o mniej więcej takich parametrach możemy wziąć skądś (np. generator laboratoryjny, generator na ne555, ...) lub wykorzystać w roli generatora inny procesor, który na jakimś pinie (np. w moim kodzie PB0) wygeneruje mniej więcej taki sygnał.

    0
  • #14 07 Maj 2012 19:38
    piotrva
    Moderator na urlopie...

    Już chyba po raz któryś piszę, najprostsza jest opcja z generatorem, ale nie na wszystkie dolegliwości "zablokowanego" tym uleczysz (tym tylko naprawisz problemy ze złym ustawieniem zegara, ale np. wartości fusebitów spoza zakresu - wartości reserved, czy bitu RSTDSBL nie naprawisz). Z kolei projekt fusebit-doctor to w pełni sprawdzony przeze mnie (robiłem a Autorem testy na różnych kostkach i różnych opcjach) i wielu innych użytkowników projekt, który, o ile w ogóle procesor jest do odratowania, pomaga na równi dobrze z profesjonalnym programatorem HVPP.

    0