Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[ATMega8L][USBasp] Programm enable: target doesn't answer. 1

AceCraft 20 Sep 2009 12:46 4742 7
  • #1
    AceCraft
    Level 10  
    Witam!

    Mam problem z zaprogramowaniem mikrokontrolera za pomocą USBasp (produkcji protech-micro). Otóż wyskakuje mi taki błąd (przy użyciu avrduda avrdude -c m8 -p usbasp): programm enable: target doesn't answer. 1. Gdzieś w tutorialach znalazłem, że jest to związane ze złym połączeniem nóg procka. Problem w tym, że wszystko sprawdziłem - nie ma żadnych zwarć, wszystko połączone jak należy (sprawdziałem także czy jest napięcie - jest 4.8V między GND i VCC) ... Przesyłam schemat z którego montowałem układ (mikrokontroler pierwszy od góry obrazka):

    [ATMega8L][USBasp] Programm enable: target doesn't answer. 1

    Sprawdzałem procka - co ciekawe daje się zaprogramować przez ten sam programator ale umieszczony na innej gotowej płytce. Sprawdzałem fusebity - wszystko w jak najlepszym porządku (z resztą kolega programował ten sam procek przez SPI bez najmniejszych problemów). W takim razie podejrzewam, że coś nie tak podłączyłem... Oczywiście zworka na slow clocka włożona oraz korzystam z zasilania przez SPI. Może to jest problem - w readme do USBasp (http://www.fischl.de/usbasp/Readme.txt) znalazłem - Be careful with this option, the circuit isn't protected against short circuit!. Tylko co to jest ten short circuit?

    Dla porównania próbowałem też programować z pomocą eXtreme Burnera - to samo. Nie może uzyskać połączenia z procekiem (zupełnie tak jakby nie był wsadzony w podstawkę). Acha, może to istotne - procek nie jest wlutowany bezpośrednio, tylko siedzi w dwóch podstawkach po 14 pinów (ale tak jak napisałem wszystko kontaktuje).

    W dokumentacji ATMegi8L znalazłem, że pin SS powinien być na poziomie niskim przy programowaniu przez SPI (jeśli dobrze rozumiem to co czytam?), tylko nigdzie nie spotkałem się ze zwieraniem go do masy (zwykle pozostawał niepodłączony)...

    Gdyby ktoś znał rozwiązanie to proszę o odpowiedź.

    Pozdrowienia!
    AceCraft.
  • Helpful post
    #2
    manekinen
    Level 29  
    Pin resetu ma byc podciągnięty do VCC w czasie normalniej pracy, a ściągany do GND w czasie resetu - u ciebie jest odwrotnie. Masz cały czas zresetowany procesor, nic dziwnego że programator nie może uzyskać dostępu.
  • #3
    AceCraft
    Level 10  
    Wielkie dzięki!

    Nie zauważyłem ze schematu programatora, że na reset podawany jest wysoki poziom tylko przy samoprogramowaniu :P Ale gafa...

    Dobra, płytka do wyrzucenia :) chyba że uda mi się coś przerobić z tym przyciskiem (na razie jest stabilnie wyłączony, a chcę, żeby był włączony).

    Tak czy inaczej - jeszcze raz dzięki!
  • #4
    emarcus
    Level 38  
    AceCraft wrote:
    Wielkie dzięki!

    Dobra, płytka do wyrzucenia :) chyba że uda mi się coś przerobić z tym przyciskiem (na razie jest stabilnie wyłączony, a chcę, żeby był włączony).



    Nie! Plytka nie jest do wyrzucenia. Dwa/trzy male kosmetyczne zabiegi; max 10 min. pracy i masz OK.
    Jedynie co musisz zrobic to:
    1. od S3; pin 3,4 odciac od Vcc i podlaczyc do GND. (przycisk S3 powinien pozostac NO).
    2. R2 odciac od GND -> maly mostek do VCC
    3. C4 -> GND
    4. Tam gdzie masz VDD wstaw VCC a niestabilizowane (przed stabilizatorem) twoje "VCC" - nie stosuj (nie wiadomo czy ta bateria ma 1.5V, 3.6V czy 12V).

    Trzymaj napiecia w systemie na jednym poziomie, chyba ze zachodzi koniecznosc uzycia innych standardowych napiec np: 9V , 12V, itp., wtedy odpowiednio kompensujesz te roznice.
    Mostki mozesz zrobic mozliwie cienkim izolowanym przewodem ('hook-up wire') - jest to standardowa metoda napraw niewielkich bledow na plytkach drukowanych.
    Przydaloby sie takze dorzucic dwa male Caps przy XTAL 1/2 -> do GND.

    e marcus
  • Helpful post
    #5
    rpal
    Level 27  
    A ja bym sie nie zdziwił gdyby kolega napisał że poprawił reset i dalej nic. Myslę że kłopot jest w wadliwych połączeniach np. zasilania lub ew. zwarciach. Bo własnie aby zaprogramować procesor trzeba w czasie programowania utrzymywać niski poziom na końcówce reset. Inna sprawa że układ nie będzie działał mając niski potencjał na tym wejściu.Kiedyś borykałem się z takim własnie zwarciem i układ normalnie mi się programował ale używałem innego programatora bo STK200.
  • Helpful post
    #6
    manekinen
    Level 29  
    rpal wrote:
    Bo własnie aby zaprogramować procesor trzeba w czasie programowania utrzymywać niski poziom na końcówce reset.

    Pomiędzy kolejnymi operacjami programator musi "puszczać" na chwilę reset - sprawdzone w praktyce na usbasp. Gdy go ściagniemy na stałe albo w ogóle się nie połączy, albo połączy sie tylko raz, zczyta sygnaturę, i to będzie koniec komunikacji.
  • #7
    AceCraft
    Level 10  
    Zadziałało :D

    To znaczy udało się nawiązać komnunikację z prockiem i jak na razie zczytałem fusebity.
    Po prostu połączyłem kabelkiem reset z masą i viola :) Pierwszy sukces.

    Acha, bo jak na razie to wlutowałem tylko procka i port SPI (zapomniałem nadmienić) i w związku z tym reset był podłączony tylko do SPI.
  • #8
    emarcus
    Level 38  
    AceCraft wrote:
    Zadziałało :D


    Acha, bo jak na razie to wlutowałem tylko procka i port SPI (zapomniałem nadmienić) i w związku z tym reset był podłączony tylko do SPI.


    Nie "tylko do SPI" ; Jezeli S3 i R2 ne byly wlutowane, to i tak 'Reset' byl podciagniety wewnetrznie do VCC przez opornik 50k. Na dobra sprawe processor bedzie pracowal bez "MOCNEGO" podciagania R2 do VCC. (Moga wystapic przypadkowe resety systemu).
    I jezeli w takiej sytuacji nie miales komunikacji pomiedzy programatorem a uC to wskazywaloby to na problem na linii "RESET" od programatora do processora (pin5 na zlaczu 'Kanda'). Podczas programowania, to program/programator decyduje kiedy nalezy podac stan niski na reset, a po jego odlaczeniu uklad powraca do trybu "normalny" czyli pracy. To sa wlasnie ulatwienia ISP ("In System Programming").

    e marcus