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

Atmega1284 - Avrdude odczytuje tylko raz, uszkodzony mikrokontroler?

fgfd 15 Mar 2015 15:08 1227 18
  • #1 15 Mar 2015 15:08
    fgfd
    Poziom 7  

    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:

    Code:

    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?

    0 18
  • Arrow Multisolution Day
  • #2 15 Mar 2015 16:02
    Zaquadnik
    Poziom 27  

    Jaka jest częstotliwość taktowania ATmegi ? Może masz zbyt dużą częstotliwość programatora (SCK) ustawioną ?

    0
  • Arrow Multisolution Day
  • #3 15 Mar 2015 17:27
    fgfd
    Poziom 7  

    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

    0
  • #4 15 Mar 2015 21:05
    emarcus
    Poziom 35  

    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:

    Code:

    ...............

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


    Spróbuj coś odczytac z tego processora; fusebity, albo sygnaturę, albo nawet aktualnie wgrany program, cokolwiek; ale nie przez mkAVR lecz bezpośrednio z linii poleceń Ardude w "cmd". Nie jest to takie trudne jakby się wydawało.
    Wzoruj się na tym tutorialu:

    http://ladyada.net/learn/avr/avrdude.html

    e marcus

    0
  • #5 15 Mar 2015 21:19
    tmf
    Moderator Mikrokontrolery Projektowanie

    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:

    Code:

    ...............

    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ę.

    0
  • #6 15 Mar 2015 22:09
    emarcus
    Poziom 35  

    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

    -1
  • #7 15 Mar 2015 23:09
    fgfd
    Poziom 7  

    Odczytałem program komendą:

    Code:
    avrdude -c usbasp -p m1284 -U flash:r:program.hex


    Wynik:
    Code:
    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:
    Code:
    :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

    0
  • #8 15 Mar 2015 23:51
    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.

    0
  • #9 16 Mar 2015 09:14
    tmf
    Moderator Mikrokontrolery Projektowanie

    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.

    0
  • #10 16 Mar 2015 13:00
    373522
    Użytkownik usunął konto  
  • #11 16 Mar 2015 18:34
    fgfd
    Poziom 7  

    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:

    Code:
    avrdude: warning: cannot set sck period. please check for usbasp firmware update


    Teraz wgrywam program przez avrdude:
    Code:
    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:
    Code:

    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
    Zaloguj się, aby zobaczyć kod

    0
  • #12 16 Mar 2015 18:50
    373522
    Użytkownik usunął konto  
  • #14 16 Mar 2015 19:20
    fgfd
    Poziom 7  

    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ą.

    0
  • #15 16 Mar 2015 19:38
    michalko12
    Specjalista - Mikrokontrolery

    Odpowiedz na pytanie zadane przez @szczywronek

    0
  • #16 16 Mar 2015 20:02
    fgfd
    Poziom 7  

    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

    0
  • #17 16 Mar 2015 20:08
    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.

    0
  • #18 16 Mar 2015 20:35
    fgfd
    Poziom 7  

    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

    0
  • #19 16 Mar 2015 20:41
    michalko12
    Specjalista - Mikrokontrolery

    Dodaj te kondensatory i odczytaj fusy.

    0