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.

atmega16a - Martwy atmega16a po zmianie JTAGEN (czyli ustawieniu na 1)

Metalista 21 Mar 2014 22:31 1023 2
  • #1 21 Mar 2014 22:31
    Metalista
    Poziom 2  

    Cześć

    Szukam pomocy po wyłączeniu JTAGa w ATmega16a.

    Próbowałem użyć pinów PC2 i PC3 w procesorze ATmega16a.
    Nie działały - stwierdziłem, że może to być związane z włączonym JTAG.
    Użyłem więc Burn-O-Mat i ustawiłem fuse bit JTAGEN na 1 (czyli go wyłączyłem).
    Od tego momentu procek jest martwy ;(

    Używam programatora USBASP.
    avrdude daje komunikat:
    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    Czy jest jakaś metoda aby go ożywić ?

    Pozdrawiam i prosze o pomoc.

    0 2
  • #2 22 Mar 2014 10:43
    kamyczek
    Poziom 34  

    W zasadzie temat wielokrotnie wałkowany i powinieneś użyć opcji "szukaj " jednak jesteś tu nowicjuszem w ilości postów ;) więc troszkę ci pomogę . Jeśli programator nie rozpoznaje procesora ani przez spi , ani przez Jtaga pozostaje HVPP czyli wysokonapięciowy programator równoległy lub układ który w taki sposób ustawi prawidłowe "fusy" możesz jeszcze sprawdzić czy przez przypadek nie ustawił się oscylator na zewnętrzny generator podając zewnętrzny sygnał zegarowy np. 4MHz z generatora np. na układzie 74HC04 lub innego...

    0
  • #3 22 Mar 2014 21:14
    Metalista
    Poziom 2  

    Mam tylko programator USBASP (nie mam JTAGa) dlatego tylko przez usbasp mogę testować połączenie z uC - właśnie to nie działa.

    Zanim napisałem mój post przejrzałem forum i inne strony - niestety podobnego przypadku nie spotkałem - tzn. wg. mojej wiedzy wyłączenie JTAGEN w fuse bitach nie powinno było zablokować uC.

    Zastosowałem następujący sposób gdy ustawiałem fuse-y:
    (wszystko przy pomocy Burn-O-Mat i usbasp)
    - odczytałem fuse-y z działającego uC
    - zmieniłem tylko i wyłącznie bit JTAGEN (wyłączyłem go)
    - i wgrałem fuse-y do uC
    Od tego momentu dostawałem błąd avrdude o którym poprzednio napisałem.

    Hmmmmm.... chyba, że faktycznie stało się coś innego niż mi się wydaje (mogłem się gdzieś pomylić...).

    Acha - do procka mam podłączony zewnętrzy kwarc 8MHz - nic to nie daje ;(

    Rozumiem, że na teraz nie pozostaje nic innego jak znalezienie programatora JTAG lub równoległego i przy jego pomocy ustawienie fuse-ów na default-owe.

    BTW.
    Aby wykorzystać PC2 i PC3 w ATmega16 (zrobiłem to na innym - żywym układzie) wyłączyłem JTAG programowo poprzez użycie 4 takich samych instrukcji (jedna nie wystarczyła) - to kawałek kodu w C:
    MCUCSR|=(1<<JTD);
    MCUCSR|=(1<<JTD);
    MCUCSR|=(1<<JTD);
    MCUCSR|=(1<<JTD);

    Pozdrawiam !

    0