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

[Atmega32][USBasp][avrdude] Błąd przy ustawianiu SCK

bigben93 08 Lut 2011 18:53 41079 32
REKLAMA
MediaMarkt Black Week
  • #1 9122471
    bigben93
    Poziom 10  
    Witam

    Postanowiłem zagłębić się w świat mikrokontrolerów, ale jak to zwykle bywa początku są trudne. Zamówiłem procek Mega32 i programator USBasp (wszystko fabrycznie nowe). Znalazłem w internecie przykładowy schemat i program do niego (2 mrygające diody). Moim celem było sprawdzenie czy wszystko współpracuje ze sobą jak należy. O ile program jakoś się skompilował to problemy zaczynają się gdy chcę go wrzucić do procka. Avrdude wypluwa mi takie coś:

    
    
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1 
    avrdude: initialization failed, rc=-1
    avrdude: AVR device initialized and ready to accept instructions
    avrdude: Device signature = 0x000000
    avrdude: Yikes!  Invalid device signature.
    avrdude: Expected signature for ATMEGA32 is 1E 95 02
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
    


    Program wrzucam takim poleceniem:

     avrdude -c usbasp -F -p m32 -U flash:w:test.hex -B10 


    Cały dzień straciłem na szukaniu rozwiązania. Kontaktowałem się nawet przez GG ze znajomym elektronikiem, ale on też nie wie co zrobić (on wyznaje programator na LPT, ale ja mam laptopa i nie mogę sobie niestety pozwolić na taki "luksus" ).

    Jeśli komuś to jakoś pomoże o korzystam z linuksa (system rozpoznaje programator).

    Liczę na waszą pomoc i jeśli potrzebujecie jakiegoś dodatkowego loga to dajcie znać.

    Pozdrawiam
  • REKLAMA
    MediaMarkt Black Week
  • #2 9124579
    gmp
    Poziom 19  
    Ten programator korzysta z emulacj USB1.0(albo 1.1) teoretycznie powinien dzialc ,ale ma to mnostwo wad. Szkoda czasu i nerwow.
    Jak Cie stac to kup AVR-Dragon, ma JTAG'a - (= rewelacja)
    albo na serwisie aukcyjnym 'AVR PROG 4w1 ' - uzywalem go , bardzo przyjazny , profesjonalnie zrobiony programator.- moim zdaniem warto.
  • #3 9126097
    saper_2
    Poziom 18  
    Hej,
    -- OFF TOPIC: USBasp vs. AVR DRAGON :D --
    USBasp jest fajnym programatorem, sam go głównie używam.
    Ja tam wad nie widzę w nim - jest mały i tani - w sam raz dla hobbysty, nie trzeba wydawać 600zł na stk600 czy 300 na dragona z którego tylko używać się będzie ISP (jtag to taki gadżet jak dla mnie przynajmniej - nie miałem potrzeby nigdy debugowania programu "do tego stopnia"). I myślę ,ażeby zakończyć spór o to co jest lepsze, każda ze stron wygłosiła mowe obronną, sędzia zadecyduje :D

    Ale wracając do problemu autora tematu :), nowe procki mają ustawiony wewnętrzny oscylator na 1MHz, i żeby USBasp mógł je obsłużyć należy założyć zworkę Slow Sck w programatorze.
    Ty masz starą wersję firmware w swoim USBasp:
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    Nowa wersja fw usbasp potrafi sama "zwolnić" zegar ISP ,ażeby zaprogramować nowe procesory.

    Do sprawdzenia komunikacji możesz użyć tego, nie musisz programować:
    avrdude -p m32 -c usbasp

    Jeśli masz wszystko dobrze połączone powinieneś dostać coś takiego (ja też mam stary fw w swoim :D ):
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: AVR device initialized and ready to accept instructions
    Reading | ################################################## | 100% 0.02s
    avrdude: Device signature = 0x1e9502
    avrdude: safemode: Fuses OK
    avrdude done.  Thank you.
  • #4 9127362
    bigben93
    Poziom 10  
    @gmp

    Cena AVR Dragon jest dla mnie za duża. Może kiedyś jak wgłębię się w świat mikroprocesorów i bedzie to dla mnie zajęcie zarobkowe to sobie kupię taki sprzęt. W każdym razie na razie taki gigant odpada, a szkoda mi wyrzucać tego USBasp.

    @saper_2

    Niestety, ale u mnie nie jest tak różowo:
    
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1 
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.
    
    
    avrdude done.  Thank you.
    


    Połączenie programator->układ jest dobre (programator podłączałem już tyle razy, że na pamięć znam kolejność nóżek na procku i na złączu KANDA). Tasiemka od programowania też wydaję się dobra (sprawdzałem ją ohmomierzem).

    Działałem też na własną rękę i spróbowałem innego programu do programowania. Program eXtreme Burner AVR wyrzucił mi taki komunikat:

    
    Power On Failed
    Cannot Communicate with Target Chip
    


    Tutaj piszą żeby sprawdzić połączenie ISP, ale jak już mówiłem sprawdzałem je na wszelkie dostępne mi sposoby i wszystko wskazuje że jest OK.

    Zauważyłem też inną ciekawą rzecz. Kiedy przyłożyłem woltomierz do nóżek Vcc i GND procka te dwie diody jakoś magicznie zaświeciły. Kiedy odjąłem woltomierz świeciły one jeszcze jakiś czas, ale potem zgasły. Co jakiś czas przykładając woltomierz te diody uruchamiały się w różny sposób. Czasami migały, czasami świeciła tylko jedna (w każdym razie nie wyglądało mi to na "świadome" działanie programu). Kiedy już udało mi się osiągnąć efekt że obie diody świeciły spróbowałem się skontaktować z prockiem ale niezależnie jaką akcje wywołałem u avrdude diody wyłączały się, a program wypluwał mi błąd (żeby przywrócić to świecenie musiałem na chwilę odciąć zasilanie od procka, a po jego załączeniu od nowa bawić się z woltomierzem).

    Czekam na waszą opinię o tym, ale obecnie wydaję mi się że albo procek jest padnięty albo płytka stykowa na której całość zmontowałem nie nadaje się do takich rzeczy.
  • REKLAMA
    MediaMarkt Black Week
  • #5 9130138
    LordBlick
    VIP Zasłużony dla elektroda
    Po co opisujesz "inne dziwne/ciekawe rzeczy" i to co "się wydaje". To nie jest forum od wrażeń artystycznych, tylko od suchej technicznej wiedzy. Zapnij zworkę SLOW_CLK (jeśli nie ruszałeś świadomie lub nieświadomie fusebitów) i programowanie powinno ruszyć, dopiero po tym możemy rozmawiać o działaniu układu. Warunkiem niezbędnym prawidłowego programowania jest zapewnienie zasilania i zegara, czy to wewnątrz (fusebity) czy to na zewnątrz (fusebity + sygnał zegarowy lub oscylator RC lub rezonator kwarcowy z kondensatorami). Jeśli nie wiesz jak się to ustawia, to wpisujesz w google "fusebity ATmega32" i wiesz...
  • #6 9130565
    saper_2
    Poziom 18  
    bigben93,daj rysunki jak po podłączałeś wszystko (połączenia, zasilania) . I spróbuj zamienić MISO z MOSI mnie się to często zdarza ,że mylą mi się kierunki :).

    Podłączyłeś wszystkie nogi zasilania m32 ? AVCC,VCC, GND ? są przy nogach zasilaniach kondensatory blokujące ?
  • #7 9131544
    bigben93
    Poziom 10  
    @light-I

    Takie "wrażenia artystyczne" czasami pozwalają znaleźć rozwiązanie problemu.
    Jeśli chodzi o zworkę to próbowałem programować zarówno z włożoną jak i wyjętą. Efekt był identyczny.

    Fusebitów nie ruszałem (nawet nie wchodziłem do opcji odpowiedzialnych za fusebity). Procesor jest nowy więc powinien być ustawiony do pracy z wbudowanym oscylatorem 1MHz (przynajmniej tak podaje nota katalogowa).

    @saper_2

    Próbowałem zamienić MOSI i MISO ale efekt ten sam. Jeśli chodzi o schemat i połączenie to korzystałem z tej strony.

    Schemat ideowy
    Rysunek którym sugerowałem się przy łączeniu programatora

    Schemat był robiony dla ATMega8, ale kiedy podłączałem go do M32 miałem na ekranie notę katalogową mojego procka i podłączałem to tak aby zgadzały się oznaczenia pinów.

    Daję też fotkę zmontowanego przeze mnie układu (robione telefonem ale to co najważniejsze widać):
    [Atmega32][USBasp][avrdude] Błąd przy ustawianiu SCK

    Jeśli chodzi o zasilanie to prąd ciągnę z portu USB (obrobiłem sobie odpowiednio jeden kabel z wtyczką). Sprawdzałem woltomierzem i prąd dochodzi do procka (między Vcc i GND jest 5V).
  • #8 9131736
    saper_2
    Poziom 18  
    Wygląda dobrze, wierzę ,że podłączasz programator do PB5,PB6,PB7 (sck,mosi,miso), i oczywiście RST i GND i VCC programatora.
    Kondensator przy resecie jest nie potrzebny.
    I ja bym założył jakiś kwarc np. 4MHz tak dla świętego spokoju.
    Dobrze by było sprawdzić programator i procesor u kogoś, albo nawet jak byś miał jakiś jeszcze inny procesor (np. attiny2313/attiny26).

    Rozmontuj wszystko raz jeszcze, i podłącz jeszcze raz (ładniej :P ), ale samo zasilanie , kondensatory blokujące (i może kwarc) i programator i wtedy sprawdź.
    Aha i dorzuć gdzieś na płytkę stykową na zasilaniu elektrolit 100u/10V albo i nawet większy, bo same kondensatory ceramiczne to trochę mało.

    A tak to jakoś mi się już wyczerpały pomysły, co może być "nie halo".
  • #9 9132176
    LordBlick
    VIP Zasłużony dla elektroda
    Ot i przyczyna - kondensator przecz z RESET... Po tej operacji powinno spokojnie ruszyć w slow mode. No chyba, ze przez ten kondensator poszedł port w USBAsp - nie podaje się obciążeń pojemnościowych bezpośrednio na wyjście typu push-pull. Tego autora kursu na diodzie to ze ten schemat zdrowo zjechać... ;) Pewnie pomyślane bardziej pod STK200, gdzie ten kondensator nie gra roli, bo tam programowanie idzie woooolniej...
  • #10 9134157
    bigben93
    Poziom 10  
    Usunąłem ten kondensator z linii RESET i dalej to samo.

    W poniedziałek będę miał na chwilę dostęp do sprzętu i oprogramowania które działa na 100%. Sprawdzę ten procesor i programator. Mam nadzieję że tylko ten schemat był taki pechowy bo po przygodach z tym układem mam ochotę kupić jakiś zestaw startowy z allegrosz. Wydam kasę, ale oszczędzę sobie nerwów już na etapie nauki.
  • #11 9134208
    saper_2
    Poziom 18  
    Ostatni pomysł, wyjmij procesor z podstawki i wciśnij go bez niej w płytkę, i zobacz czy czasem też dobrze w niej siedzi bo ja mam taką jedną płytę stykową ,że układy z niej wyskakują :| i czasem nie widać ze nie kontaktuje.

    jak pisałem, rozbierz układ i podłącz raz jeszcze (to co napisałem: tylko zasilanie i programator).
    Ps. Wrzuć ze 2 fotki programatora :)
  • #12 9134388
    bigben93
    Poziom 10  
    Z tym podłączaniem to wstrzymam się do jutro bo obecnie jestem już zbyt zmęczony.

    Tutaj są dwie emo-fotki mojego programatora:
    [Atmega32][USBasp][avrdude] Błąd przy ustawianiu SCK [Atmega32][USBasp][avrdude] Błąd przy ustawianiu SCK
  • #14 9135555
    bigben93
    Poziom 10  
    @light-I

    Przyjrzyj się pierwszemu zdjęciu. Na górze po prawej masz wlutowaną zworkę. Z tego co wiem od sprzedawcy to właśnie ta zworka odpowiada za tryb wolnego programowania.
  • #15 9135601
    BoskiDialer
    Poziom 34  
    bigben93 Przyjrzyj się drugiemu zdjęciu, do zwory idzie gruba ścieżka oraz wychodzi na pin VCC od złącza układu docelowego, więc raczej to będzie od zasilania.
    Środkowa(J4) zwora ma połączenie z pinem reset, więc to będzie od aktualizacji firmware więc ta ostatnia(J5) będzie od slow sck
  • #16 9135643
    saper_2
    Poziom 18  
    BoskiDialer, uprzedziłeś mnie o parę minut :P. Tak jak piszesz zworka którą masz jest od podłączenia zasilania do programatora z docelowego układu. J4 podłącza reset procesora w programatorze na złącze (potrzebne do wgrywania FW). Zaś J5 to pozostaje SlowSCK.

    Więc jak zewrzesz J5 (np. włóż kawałek odizolowanego drutu w pady i go mocno skręć, tak ażeby obydwa punkty się zwierały) i wtedy spróbuj skomunikować się z procesorem docelowym.
    chodzi mi o coś takiego :) :
    [Atmega32][USBasp][avrdude] Błąd przy ustawianiu SCK
  • #17 9136650
    manekinen
    Poziom 29  
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.

    Avrdude prosi aby zaktualizować firmware samego programatora, bo stary nie obsługuje programowej zmiany prędkości SCK. Wymuszasz taką zmianę parametrem -B10. Jeśli to dopiszesz do komendy, to programator oleje ustawienie zworki. saper_2 już pisał aby wysłać komendę bez tego parametru, ale znów dostałeś wyżej zacytowany fragment, co jest niepokojące. Po zaktualizowaniu firmware'u, zamiast tego błędu powinieneś dostać coś takiego:
    set SCK frequency to xx kHz

    Więc proponuję założyć zworkę do aktualizacji i firmware zaktualizować.
  • #18 9136787
    saper_2
    Poziom 18  
    manekinen, tak było by najlepiej, tylko autor nie ma możliwości aktualizacji "bo" do tego potrzeba drugiego działającego programatora ,a bigben93 dysponuje tylko laptopem z usb. Zakładam ,że ten usbasp nie ma bootloadera (nie jest to klon usbasp). Poza tym zwarcie J5 i wykonanie:
    avrdude -p m32 -c usbasp
    nie zaboli.
  • #19 9139547
    bigben93
    Poziom 10  
    Wykonałem połączyłem tą zworkę, ale nadal nie ma komunikacji. Jedyne co się zmieniło to czas oczekiwania na odpowiedź; wcześniej dostawałem ją niemal natychmiast, a teraz muszę czekać 2-3 sekundy zanim dostanę ten komunikat z błędem więc podejrzewam że tryb wolnego programowania był włączony.
  • #20 9139794
    saper_2
    Poziom 18  
    Jeżeli musisz czekać na odpowiedź to znaczy ,że zegar linii SCK jest wolniejszy czyli programator pracuje w trybie SlowSCK (czy jak go tam zwać :) ). Jeśli nie działa to teraz ja bym szukał problemu z procesorem i założył ,że procesor nie jest nowy - chociaż ,że ze sklepu.
    A co zrobiłeś z tego co ci podpowiedziałem:
    Podłączyłeś jakiś kwarc (no może nie jakiś ,a 1-16MHz) ?
    Połączyłeś raz jeszcze wszystko (tzn. zasilanie i programator tylko) ?

    Zamień może teraz MISO z MOSI.
  • #21 9211127
    gregorr_
    Poziom 2  
    Witam.

    Mam dokładnie taki sam problem z tym samym programatorem z tym, że ja próbuję zaprogramować Atmegę328P. Przy standardowych parametrach avrdude wyrzuca mi to samo co autorowi wątku:

    
    C:\WinAVR\bin>avrdude -p m328p -P USB -c usbasp -U flash:w:mss.hex -U eeprom:w:mss.eep
    
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.
    
    
    avrdude done.  Thank you.
    


    Po wpisaniu parametrów umożliwiających omijanie sprawdzenie zegara wyskakuje mi takie coś:

    
    C:\WinAVR\bin>avrdude -F -B10 -v -c usbasp -p m328p
    
    avrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch
    
             System wide configuration file is "C:\WinAVR\bin\avrdude.conf"
    
             Using Port                    : lpt1
             Using Programmer              : usbasp
             Setting bit clk period        : 10.0
             AVR Part                      : ATMEGA328P
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PC2
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :
    
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               eeprom        65     5     4    0 no       1024    4      0  3600  3600 0xff 0xff
               flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
               lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
    
             Programmer Type : usbasp
             Description     : USBasp, http://www.fischl.de/usbasp/
    
    avrdude: set SCK frequency to 93750 Hz
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
    avrdude: AVR device initialized and ready to accept instructions
    avrdude: Device signature = 0x000000
    avrdude: Yikes!  Invalid device signature.
    avrdude: Expected signature for ATMEGA328P is 1E 95 0F
    
    avrdude done.  Thank you.
    

    Coś chyba jednak z połączeniem jest nie tak . . .

    Proszę kod umieścić w znacznikach.
    Robak
  • #22 9211325
    saper_2
    Poziom 18  
    Twój programator jak i programator autora wątku NIE obsługuje możliwości zmiany częstotliwości pracy interfejsu ISP z poziomu programu, musisz założyć zworkę SlowSCK w swoim programatorze, ponieważ domyślnie procesory są ustawione na 1Mhz intOSC, załóż zworkę slowSCK ,albo (i też) spróbuj zamienić ze sobą MISO z MOSI :)
    I używaj znacznika [ code ] dla "zrzutów" konsoli.
  • #24 9282203
    luxus19
    Poziom 15  
    Mam taki sam problem "avrdude: warning: cannot set sck period. please check for usbasp firmware update" ale tylko w programie Extream burner pod Windows 7 tylko że około 2 tyg. temu było wszystko ok :(
  • #25 9282223
    saper_2
    Poziom 18  
    Ale to jest tylko warning - ostrzeżenie... ja tam je "olewam" :)

    Jeśli możesz zaprogramować, to możesz zignorować to ,no chyba ,że bardzo ci przeszkadza to musisz aktualizować fw programatora.
  • #26 9283402
    luxus19
    Poziom 15  
    A co jeśli wyskakuje mi taki komunikat i nie mogę zaprogramować ??

    [Atmega32][USBasp][avrdude] Błąd przy ustawianiu SCK
  • #28 9283680
    luxus19
    Poziom 15  
    Odczytać mogę sygnaturę ale nie mogę tego olać bo program nie wpisuje wsadu do procesora, skąd to wiem bo porównuje wczytany wsad z pliku z odczytanym z procesora :(
  • #29 9284739
    saper_2
    Poziom 18  
    Hmmm... ciekawe, miałem podobny problem wcześniej przed aktualizacją ,że musiałem czasami po 2-3 razy wczytywać program do procesora bo avrdude dawał mi errory przy weryfikacji ,ale tym się nie przejmowałem - winną obarczałem to ,że mam lapka jakieś 30cm od płytki i kartę wifi chodzącą pełną parą.
    Ale dzisiaj po fw update jak na razie nie zauważyłem tego problemu ,a już ze 12 razy przeprogramowałem procesor...

    Czyli, musisz zaktualizować fw w programatorze na najnowsze (2009-coś tam) - jak -> drugi programator potrzeba ...

    Ja sam się przyznaję ,iż nie przypuszczałem ,że stary fw może powodować taki problem.
  • #30 9285158
    luxus19
    Poziom 15  
    Zagadałem z koleżką od którego to kupiłem kazał odesłać sprawdzi co i jak i odeśle naprawione mam nadzieję. :)
REKLAMA