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

Błąd weryfikacji przy programowaniu Atmegi16 - avrdude content mismatch

waski78 01 Sie 2005 16:58 3052 15
REKLAMA
  • #1 1697973
    waski78
    Poziom 20  
    Posty: 398
    Pomógł: 26
    Ocena: 89
    Przy próbie zaprogramowania Atmegi16 na koniec wyskakuje mi cosik takiego:

    avrdude: verifying ...
    avrdude: verification error, first mismatch at byte 0x0002
    0x2a != 0x00
    avrdude: verification error; content mismatch
    avrdude done. Thank you.

    > Process Exit Code: 1
    a ponieważ nie jestem zbyt doświadczony to co to może oznaczać ?
  • REKLAMA
  • #2 1698000
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 55
    To znaczy, że przy weryfikacji nie zgadza się zawartość pamięci z tym co w niej powinno być.

    Podczas programownaia masz podłączone zailanie uC?
  • REKLAMA
  • #3 1698075
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    waski78 napisał:
    Przy próbie zaprogramowania Atmegi16 na koniec wyskakuje mi cosik takiego:

    avrdude: verifying ...
    avrdude: verification error, first mismatch at byte 0x0002
    0x2a != 0x00
    avrdude: verification error; content mismatch
    avrdude done. Thank you.

    > Process Exit Code: 1
    a ponieważ nie jestem zbyt doświadczony to co to może oznaczać ?
    Następny,... wróżki to na google... ;) Jakie parametry dostaje AVRDude i przy programowaniu jakiego typu pamięci to wyskakuje ? Przeglądałeś manuala od programu (jest w formacie pdf) ?
  • REKLAMA
  • #4 1698130
    waski78
    Poziom 20  
    Posty: 398
    Pomógł: 26
    Ocena: 89
    Co do zasilania to jest przyłaczone (no chyba że masa na nóżce 31 tez musi być - to jej nie mam przyłączonej). Poza tym fusy odczytuje:

    Atmel AVR ATmega16 is found.
    Fuse Low Byte = 0xe3
    Fuse High Byte = 0x99
    Fuse Extended Byte = 0xff
    Calibration Byte = 0xb5 -- Read Only
    Lock Bits = 0xff
    BLB12 -> 1
    BLB11 -> 1
    BLB02 -> 1
    BLB01 -> 1
    LB2 -> 1
    LB1 -> 1
    > Process Exit Code: 0

    Co do tego co napisałeś LightI to napisałem że jestem początkujący i z leksza zielony. Zrobiłem jakiś czas temu programator taki jak na stronie: www.patron.net.pl/AVRintropl.htm z atmegą8. Ostatnio wpadła mi w ręce at16 wyszedłem z założenia że at16 też zaprogramuję w ten sam sposób - ale przeliczyłem się. I no i nie za bardzo wiem co dalej z tym zrobić.
    Po prostu wpisałem do WinAVR:
    #include <avr/io.h>
    int main(void)
    {
    while(1)
    {
    sbi(DDRB,PB7);sbi(PORTB,PB7);
    }
    return 1;
    }
  • REKLAMA
  • #6 1698184
    waski78
    Poziom 20  
    Posty: 398
    Pomógł: 26
    Ocena: 89
    Dzięki za pomoc, tylko jak to zrobić (XP) ?
  • #7 1698553
    tajwoj
    Poziom 26  
    Posty: 560
    Pomógł: 106
    Ocena: 102
    Hej,
    Jeżeli udawało Ci się programować Atmega8 i jeśli nie zmieniłeś:
    - komputera
    - płyty głównej
    - ustawień w Biosie trybu pracy portu równoległego
    oraz masz dokładnie ten sam (nie taki sam) programator (bsd)
    to powinno bez problemu programować i ATmega16.
    Komunikat Avrdude wskazuje, że kontroler jest widziany z Twojego PC czyli ustawienia portu w Biosie są OK.
    Odłącz wtyczkę programatora od peceta i wyjmij kontroler z podstawki.
    Nie odłączaj kabelka programatora od płytki kontrolera.
    Zgodnie ze schematem ze wspomnianej przez Ciebie strony sprawdź omomierzem przejścia między MOSI, MISO, RESET, SCK na podstawce kontrolera i odpowiednimi stykami wtyczki LPT. Zwróć szczególną uwagę czy masz połączenie masy między podstawką ATmega i i odpowiednimi stykami wtyczki LPT.
    Jeśli jest OK to poproś kogoś, żeby podczas pomiaru ruszał kabelkiem szczególnie w okolicy złącza na płytce kontrolera.
    Pozdrowienia
  • #8 1698835
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    waski78 napisał:
    Co do zasilania to jest przyłaczone ...

    No właśnie , zasilanie.Czy proca zasilasz z pinów portu LPT , czy z osobnego zasilacza.Jeśli zasilanie masz z LPT , to być może ATMega16 "konsumuje" więcej miliAmperków niż ATMega8 i ... klops ;)

    Piotrek
  • #9 1699316
    waski78
    Poziom 20  
    Posty: 398
    Pomógł: 26
    Ocena: 89
    Zasilanie mam z odzielnego zasilacza - tak jak jest to na tej stronce - czyli zamiast baterii mam zasilacz (ok 500mA). No chyba, że faktycznie dużo żre to prądu bo mam jeszcze podłączony LCD a 7805 dość mocno się nagrzewa. Problem w tym że teraz to tak namieszałem w Bios-ie że nawet at8 nie mogę zaprogramować. Poza tym Dzięki tajwoj za jak zwykle wyczerpującą odpowiedź. Popróbuję jeszcze po południu.
    Co do kompa, płyty głównej itp to nic się nie zmieniało.
  • #10 1701258
    waski78
    Poziom 20  
    Posty: 398
    Pomógł: 26
    Ocena: 89
    Więc tak:
    -przywróciłem poprzednie ustawienia w BIOS-ie; efekt: Atmega8 programuje sie normalnie więc wstawiłem atmege16 na swoje miejsce i w pliku Makefile zmieniłem at8 na at16

    - sprawdziłem przewody - OK; sczytałem fusy z at16 - efekt:

    Atmel AVR ATmega16 is found.
    Fuse Low Byte = 0xe1
    Fuse High Byte = 0x99
    Fuse Extended Byte = 0xff
    Calibration Byte = 0xb5 -- Read Only
    Lock Bits = 0xff
    BLB12 -> 1
    BLB11 -> 1
    BLB02 -> 1
    BLB01 -> 1
    LB2 -> 1
    LB1 -> 1
    > Process Exit Code: 0

    - zmieniłem f wewnetrznego oscylatora na 2MHz - efekt:

    Atmel AVR ATmega16 is found.
    Fuse Low Byte set to 0xe2
    > Process Exit Code: 0

    - nacisnąłem "programuj" - efekt:

    C:\AVR-proj>REM Plik procedury programowania ATMega8
    C:\AVR-proj>avrdude -p m8 -c bsd -e -U flash:w:led.hex
    avrdude: AVR device not responding
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.
    avrdude done. Thank you.
    > Process Exit Code: 1

    Kurcze, sznur i wieszać się bo chwile wczesniej wyskoczyły komunikaty o których pisałem wyżej:

    avrdude: verifying ...
    avrdude: verification error, first mismatch at byte 0x0002
    0x2a != 0x00
    avrdude: verification error; content mismatch
    avrdude done. Thank you.
    > Process Exit Code: 1

    i sam juz nie wiem co dalej ??????????????????????????

    Zmieniłem w pliku wsadowym m8 na m16 wyłączyłem i właczyłem kompa i....
    SUKCES !!!!!!!!!!! Działa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
  • #11 1701307
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 55
    C:\AVR-proj>REM Plik procedury programowania ATMega8
    C:\AVR-proj>avrdude -p m8 -c bsd -e -U flash:w:led.hex
    avrdude: AVR device not responding
    avrdude: initialization failed, rc=-1

    Nie powinno byc m16?
  • #12 1702240
    waski78
    Poziom 20  
    Posty: 398
    Pomógł: 26
    Ocena: 89
    Nio, powinno być m16 i trzeba zrestartować kompa.

    Temat zamknięty.
  • #13 1735715
    kafka
    Poziom 22  
    Posty: 662
    Ocena: 17
    U mnie problem jest taki. Używam tego samego programatora. Program raz go widzi, raz nie... Raz dobrze odczytuje sygnatury, raz źle... Ale jak już dobrze to jest cos takiego:

    F:\Projekty\preamp>REM Plik procedury programowania ATMega8

    F:\Projekty\preamp>avrdude -p m16 -c bsd -e -U flash:w:main.hex

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.01s

    avrdude: Device signature = 0x1e9403

    avrdude: safemode: Verify error - unable to read lfuse properly. Programmer may not be reliable.
    avrdude: safemode: To protect your AVR the programming will be aborted

    avrdude done. Thank you.

    Co trzeba zrobić?

    P.S. Jak odczytać fusy? I jakie powinny być? I ewentualnie kto ma w Lublinie programator zdolny je przeprogramować?
  • #14 1736579
    waski78
    Poziom 20  
    Posty: 398
    Pomógł: 26
    Ocena: 89
    Ja za pomocą tego "programatora" odczytuje fusy w taki sam sposób jak to jest opisane na stronie: http://www.tkdami.net/~voytek/programy/programy.html. Jest tam opisane jak pod Windem to zrobic i u mnie buja. Mogę zmieniać f pracy uP i przestawiac go na zewnętrzny kwarc. Co do bardziej zaawansowanych zastosowań to się nie wypowiadam bo nie wiem.
    Pozdrawiam , Waski78
    Moderowany przez Light-I:

    Bardzo proszę o nie używanie wyrazów nie do końca zrozumiałych i utrudniajacych późniejsze wyszukiwanie (slang młodzieżowy).

  • #15 2560243
    fedain
    Poziom 13  
    Posty: 45
    Pomógł: 2
    Ocena: 3
    Używam w/w programatora bsd i napotkałem na podobny problem przy veryfikacji zapisu. Błąd pojawia się za każdym razem, kiedy to fuse bity były odczytywane, bądź zapisywane. Po zabawie z fuse bitami nie można już niczego zaprogramować. Po restarcie komputera wszystko wraca do normalności. To chyba nie jest normalne, prawda?
  • #16 2562181
    kotu
    Poziom 14  
    Posty: 140
    Pomógł: 2
    Ocena: 2
    Ja od początku bawię się tym najprostszym programatorem.
    Praktycznie zawsze działa, jednak jeśli wyskakuje błąd weryfikacji to
    zwykle nie styka mi RESET. Poza tym przy przypinaniu do programatora
    innego procka niż Atmega8 (np 16), warto pamiętać o zmianie w makefile
    wpisu "Atmega8"na "Atmega16" oraz komenda programująca procka
    powinna mieć następującą postać:
    avrdude -p m16 -c bsd -e -U flash:w:nazwa_programu.hex
    Warto też od czasu do czasu sprawdzić miernikiem, czy wszystkie kabelki
    stykają tam gdzie trzeba i czy przypadkiem nie ma zwarcia.
    Oprócz tego należy pamiętać o install_giveio.bat w pakiecie WinAvr dla
    Windows2000 - WindowsXP. Chociaż powiem wam że pod XP nigdy
    nie udało mi się zaprogramować proca, na takiej samej maszynie
    chodzącej pod 2000 chodzi idealnie ale tylko po odpaleniu install_giveio.bat
    a tak w ogóle to złożyłem sobie ze starych części kompa, na którym
    chodzi Windows95 i komp służy tylko do programowania proców.
    Pozdrawiam.
    KoTu.

Podsumowanie tematu

LABEL_AI_GENERATED
Podczas programowania mikrokontrolera Atmega16 za pomocą programatora bsd i narzędzia avrdude pojawia się błąd weryfikacji "content mismatch" wskazujący na niezgodność zawartości pamięci z zapisem. Problem może wynikać z nieprawidłowego zasilania układu, braku podłączenia masy (pin 31), złych połączeń sygnałów programowania (MOSI, MISO, RESET, SCK) lub nieodpowiednich ustawień portu równoległego w BIOS-ie (zalecane ustawienie EPP). Warto sprawdzić poprawność połączeń omomierzem oraz stabilność zasilania, zwłaszcza gdy używany jest zasilacz zewnętrzny zamiast zasilania z portu LPT. Przy programowaniu należy pamiętać o odpowiedniej konfiguracji fuse bitów i poprawnym wskazaniu modelu mikrokontrolera w poleceniu avrdude (parametr -p m16 dla Atmegi16). Problemy z programowaniem mogą ustąpić po restarcie komputera. Dodatkowo, w systemach Windows 2000/XP konieczne jest uruchomienie skryptu install_giveio.bat, aby uzyskać dostęp do portu LPT. W przypadku błędów weryfikacji często przyczyną jest niestabilne połączenie RESET lub nieprawidłowe ustawienia programatora i środowiska.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA