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

Atmega1284 - Avrdude odczytuje tylko raz, uszkodzony mikrokontroler?

fgfd 15 Mar 2015 15:08 1563 18
  • #1 14531777
    fgfd
    Poziom 9  
    Mam Atmegę1284, zewnętrzne taktowanie. Wszystko ładnie działało, aż do niedawna. Nic nie grzebałem w fusebitach, a z Atmegą coś się stało. Nie chce wykonywać programu, nawet są problemy z jego wgraniem.

    Przez program mkAVR Calculator próbuję odczytać podłączony mikrokontroler. Za pierwszym razem się udaje, gdy próbuję drugi raz bez ruszania elektroniki zawsze wyskakuje taki błąd:
    
    avrdude.exe: set SCK frequency to 187500 Hz
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude.exe: Device signature = 0x000102
    avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07
    avrdude.exe: current erase-rewrite cycle count is -50462977 (if being tracked)
    avrdude.exe: reading signature memory:
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude.exe: writing output file "C:\Users\Ja\Documents\mkAVRCalculator\sig_tmp.hex"
    
    avrdude.exe: safemode: Fuses OK
    
    avrdude.exe done.  Thank you.
    
    Compiled special for http://forum.atnel.pl (v5.11.1)
    


    Za każdym razem treść konsoli jest identyczna. Dopiero po odłączeniu i podłączeniu zasilania znowu raz mogę odczytać. Próbowałem wgrać prosty program za pierwszym podłączeniem do zasilania, jednak nic się nie dzieje. Podobna czynność na Atmedze8 wychodzi pomyślnie, więc chyba programator jest sprawny.

    Czy Atmega1284 jest uszkodzona? Jak można to sprawdzić, aby mieć 100% pewności?
  • #3 14532206
    fgfd
    Poziom 9  
    Częstotliwość to 10MHz i próbowałem Slow SCK.
    Układ wcześniej działał, i dlatego myślę, że atmega może być zepsuta, ale nie wiem jak to sprawdzić, aby być na 100% pewnym
  • #4 14533174
    Konto nie istnieje
    Poziom 1  
  • #5 14533231
    tmf
    VIP Zasłużony dla elektroda
    emarcus napisał:
    fgfd napisał:
    Mam Atmegę1284, zewnętrzne taktowanie.
    ...........
    Podobna czynność na Atmedze8 wychodzi pomyślnie, więc chyba programator jest sprawny.

    Czy Atmega1284 jest uszkodzona?


    Najprawdopodobniej nie jest.....
    Nie używam tego "MKAVR" - ale ze zwróconych błędów wynika że próbujesz tymsamym 'wsadem' (plik hex) programowac dwa różne processory.
    Jeżeli plik został skompikowany pod ATmega8 to zrozumiałe jest że avrdude go odrzuci przy próbie programowania m1284, zwracając komunikat o takiej właśnie treści:

    
    ...............
    
    avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07
    ............... 
    


    Zauważ, że on używa pliku hex, który nie zawiera informacji o tym dla jakiego MCU został przygotowany. Ani pliki hex ani elf nie zawierają sygnatury MCU.
    Problemem jest to, że podłącza Atmega1284, ale AVRDude dostaje jako parametr wywołania ATMega8 - z tego co pamiętam to ten MKCalculator w wersji bezpłatnej obsługuje tylko M8 i może coś jeszcze. Prościej po prostu użyć AVRDude i to też jakąś standardową kompilację.
  • #6 14533467
    Konto nie istnieje
    Poziom 1  
  • #7 14533666
    fgfd
    Poziom 9  
    Odczytałem program komendą:
    avrdude -c usbasp -p m1284 -U flash:r:program.hex


    Wynik:
    C:\avrdude>avrdude -c usbasp -p m1284 -U flash:r:program.hex
    
    avrdude: warning: cannot set sck period. please check for usbasp firmware update
    .
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.03s
    
    avrdude: Device signature = 0x1e9706
    avrdude: reading flash memory:
    
    Reading | ################################################## | 100% 74.90s
    
    
    
    avrdude: writing output file "program.hex"
    avrdude: output file program.hex auto detected as Intel Hex
    
    avrdude: safemode: Fuses OK
    
    avrdude done.  Thank you.
    


    W pliku program.hex było:
    :2000000045C000004BC0000049C0000047C0000045C0000043C0000041C000003FC00000B8
    :200020003DC000003BC0000039C0000037C0000035C0000033C0000031C000002FC0000010
    :200040002DC000002BC0000029C0000027C0000025C0000023C0000021C000001FC0000070
    :200060001DC000001BC0000019C0000017C0000015C0000013C0000011C000000FC00000D0
    :200080000DC000000BC0000009C0000011241FBECFEFD0E4DEBFCDBF02D010C0B1CF269A70
    :2000A00090E485B1892785B92FEF34E38CE0215030408040E1F700C00000F3CFF894FFCFB2
    :00000001FF


    Odczytywanie tak samo się zachowuje, czyli mogę odczytać raz, aby odczytać kolejny muszę odłączyć i podłączyć zasilanie. Najgorzej, że kiedy wgrywam program to on się nie wykonuje.

    Program mkAVR Calculator bezpłatny nie współpracuje z Atmegą1284, ale potrafi ją rozpoznać i wyrzuca informację, o kupnie programu
  • #8 14533758
    michalko12
    Specjalista - Mikrokontrolery
    Pokaż pełny log AVRDUDE tzn. z udanej operacji i nieudanej. Program mkAVR najlepiej usuń jeśli nie nadaje się do tego procesora.

    Sprawdź dobrze połączenie USBASP<-> CPU zwłaszcza sygnał resetu. Jak masz możliwość to pokaż schemat.
  • #9 14534099
    tmf
    VIP Zasłużony dla elektroda
    emarcus napisał:
    tmf napisał:

    Zauważ, że on używa pliku hex, który nie zawiera informacji o tym dla jakiego MCU został przygotowany. Ani pliki hex ani elf nie zawierają sygnatury MCU.


    Heh....
    A ja mylałem że w 'Ladyada.net ' (link wyżej) pracują fachowcy a nie harcerze..
    Pomyślec, że ich obdarzyłem zaufaniem i autorytetem, polecając innym tutorial z ich strony !!!

    Wystarczy przeczytac ostatnie zdanie tego tutorialu...
    (-) dalszy kommentaż byłby tu zbędny.

    e marcus


    To ostatnie zdanie znaczy tylko tyle, że program zawarty w pliku hex dla procesora XX wgrany do procesora YY zapewne nie zadziała poprawnie. I to programista musi wiedzieć dla jakiego MCU został przygotowany hex. AVRDude tego wiedzieć nie może z powodów o których napisałem wcześniej, kontrola, która jest przeprowadzana to czy sygnatura programowanego mikrokontrolera pasuje do typu mikrokontrolera, który został podany jako parametr wywołania AVRDude.
    Inaczej sytuacja może wyglądać jeśli programujemy z jakiegoś IDE - np. Atmel Studio lub Bascoma. Korzystając z niego IDE ma wiedzę na jaki target jest kompilowany program i podczas programowania może sprawdzić czy użyty MCU jest odpowiedni.
  • #10 14534549
    Konto nie istnieje
    Konto nie istnieje  
  • #11 14535382
    fgfd
    Poziom 9  
    Ogólnie korzystam z Atmel Studio 6. Program wgrywam przez avrdude. Na programatorze mam jedynie zworkę od napięcia zasilania. Do tej pory cały czas mi się wyświetlał ten komunikat ale wszystko działało, dalej działa bo atmegę8 mogę zaprogramować bez problemu:
    avrdude: warning: cannot set sck period. please check for usbasp firmware update


    Teraz wgrywam program przez avrdude:
    c:\avrdude>avrdude -c usbasp -p m1284 -U flash:w:Projekt.hex
    
    avrdude: warning: cannot set sck period. please check for usbasp firmware update
    .
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.03s
    
    avrdude: Device signature = 0x1e9706
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
    
             To disable this feature, specify the -D option.
    avrdude: erasing chip
    avrdude: warning: cannot set sck period. please check for usbasp firmware update
    .
    avrdude: reading input file "Projekt.hex"
    avrdude: input file Projekt.hex auto detected as Intel Hex
    avrdude: writing flash (192 bytes):
    
    Writing | ################################################## | 100% 0.13s
    
    
    
    avrdude: 192 bytes of flash written
    avrdude: verifying flash memory against Projekt.hex:
    avrdude: load data flash data from input file Projekt.hex:
    avrdude: input file Projekt.hex auto detected as Intel Hex
    avrdude: input file Projekt.hex contains 192 bytes
    avrdude: reading on-chip flash data:
    
    Reading | ################################################## | 100% 0.11s
    
    
    
    avrdude: verifying ...
    avrdude: 192 bytes of flash verified
    
    avrdude: safemode: Fuses OK
    
    avrdude done.  Thank you.
    
    Compiled special for http://forum.atnel.pl (v5.11.1)


    Wgrany program jednak nie chce się wykonywać. Gdy wgram drugi raz bez ruszania niczego wychodzi to:
    
    c:\avrdude>avrdude -c usbasp -p m1284 -U flash:w:Projekt.hex
    
    avrdude: warning: cannot set sck period. please check for usbasp firmware update
    .
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.03s
    
    avrdude: Device signature = 0x000102
    avrdude: Expected signature for ATMEGA1284 is 1E 97 06
             Double check chip, or use -F to override this check.
    
    avrdude done.  Thank you.
    
    Compiled special for http://forum.atnel.pl (v5.11.1)
    


    Będzie się to wyświetlać, dopóki nie odłączę i podłącze zasianie.

    Układ jest prosty, jest to zasilanie atmegi i programator oraz parę diod podłączonych do linii programatora:
    Atmega1284 - Avrdude odczytuje tylko raz, uszkodzony mikrokontroler? Atmega1284 - Avrdude odczytuje tylko raz, uszkodzony mikrokontroler?

    Program również jest prosty:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #12 14535451
    Konto nie istnieje
    Konto nie istnieje  
  • #14 14535589
    fgfd
    Poziom 9  
    Diody raczej nie przeszkadzają, po ich wyjęciu efekt jest taki sam.

    Podłączenie do programatora też jest dobre, sygnatura czasami jest odczytywana prawidłowo zawsze za pierwszym razem po podłączeniu do zasilania.
    Dodatkowo próbowałem programować atmegę w gotowej płytce drukowanej i efekt jest identyczny.

    Wydaję mi się, że Atmega jest uszkodzona i niedługo zamówię nową.
  • #15 14535663
    michalko12
    Specjalista - Mikrokontrolery
    Odpowiedz na pytanie zadane przez @szczywronek
  • #16 14535791
    fgfd
    Poziom 9  
    Gniazdo IDC nie robi zwarcia, nie było widać tego na zdjęciu ale jest polutowane to w ten sposób:
    Atmega1284 - Avrdude odczytuje tylko raz, uszkodzony mikrokontroler?

    Najładniej luty może nie wyglądają, ale działa, bo inną atmegę programowałem bez problemu
  • #17 14535822
    michalko12
    Specjalista - Mikrokontrolery
    A jak masz w fusach ustawione źródło taktowania? Ten obwód rezonatora na zdjęciach nie wygląda na poprawnie podłączony. Gdzie są kondensatory? Może problemem jest ponowny start oscylatora po resecie.
  • #18 14535978
    fgfd
    Poziom 9  
    Fusy są ustawione na zewnętrzne taktowanie, wcześniej działało bez kondensatorów.
    Wkładałem atmegę też w płytkę drukowaną, na której są kondensatory i tam też tak samo się dzieje
  • #19 14536008
    michalko12
    Specjalista - Mikrokontrolery
    Dodaj te kondensatory i odczytaj fusy.
REKLAMA