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

ATtiny13 - błąd podczas programowania "Mismath at location 0x00000000"

^Rachel 21 Cze 2011 00:03 3918 11
REKLAMA
  • #1 9634945
    ^Rachel
    Poziom 21  
    Dobry wieczór !

    Napisałem prosty program, który po podaniu na wejście przetwornika ADC2 napięcia wyższego od 800mV zmienia stan wyprowadzenia PB0 na przeciwny.
    Oto kod źródłowy :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Wyniki kompilacji :
    
    > "make.exe" all
    
    -------- begin --------
    avr-gcc (WinAVR 20100110) 4.3.3
    Copyright (C) 2008 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    
    Size before:
    AVR Memory Usage
    ----------------
    Device: attiny13
    
    Program:     102 bytes (10.0% Full)
    (.text + .data + .bootloader)
    
    Data:          0 bytes (0.0% Full)
    (.data + .bss + .noinit)
    
    
    
    
    Compiling C: program.c
    avr-gcc -c -mmcu=attiny13 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./program.lst  -std=gnu99 -MMD -MP -MF .dep/program.o.d program.c -o program.o 
    
    Linking: program.elf
    avr-gcc -mmcu=attiny13 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=program.o  -std=gnu99 -MMD -MP -MF .dep/program.elf.d program.o --output program.elf -Wl,-Map=program.map,--cref     -lm
    
    Creating load file for Flash: program.hex
    avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock program.elf program.hex
    
    Creating load file for EEPROM: program.eep
    avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
    	--change-section-lma .eeprom=0 --no-change-warnings -O ihex program.elf program.eep || exit 0
    
    Creating Extended Listing: program.lss
    avr-objdump -h -S -z program.elf > program.lss
    
    Creating Symbol Table: program.sym
    avr-nm -n program.elf > program.sym
    
    Size after:
    AVR Memory Usage
    ----------------
    Device: attiny13
    
    Program:     102 bytes (10.0% Full)
    (.text + .data + .bootloader)
    
    Data:          0 bytes (0.0% Full)
    (.data + .bss + .noinit)
    
    
    
    -------- end --------
    
    
    > Process Exit Code: 0
    > Time Taken: 00:02
    


    Używam programatora USBasp i programów "khazama AVR Programmer" oraz "eXtreme burner AVR". Oto co otrzymuję po próbie wgrania programu :
    ATtiny13 - błąd podczas programowania "Mismath at location 0x00000000" ATtiny13 - błąd podczas programowania "Mismath at location 0x00000000"

    Czytałem także ten temat :
    https://www.elektroda.pl/rtvforum/topic1711074.html

    atom1477 napisał:
    ATTiny13 ma tylko 1024B Flasha.
    Po prostu program się nie mieści.


    W moim przypadku program raczej się mieści, nie wykonuje żadnych operacji na liczbach wielo bajtowych. Więc czym może być to spowodowane ?

    I jeszcze jedna ciekawa bardzo ważna rzecz !!!
    ATtiny13 - błąd podczas programowania "Mismath at location 0x00000000"

    To pamięć EEPROM po jej odczytaniu. W dziwny sposób nie zapisały się dokładnie 1,2,5,6 rząd rejestrów.
    Może pamięć uległa uszkodzeniu ? ( wcześniej potraktowałem go FuseBit doctorem zbudowanego zgodnie z projektem "Manekinen")

    Proszę o pomoc.
    Pozdrawiam !
  • REKLAMA
  • Pomocny post
    #2 9635095
    manekinen
    Poziom 29  
    ^Rachel napisał:
    To pamięć EEPROM po jej odczytaniu

    Flash :)

    Programowanie obydwiema nakładkami kończy się takim błędem? Jaka wersja AVRDUDE? Próbowałeś użyć linii poleceń?

    A błąd
    ERROR: address 0x0050 out of range at line 5

    może też sugerować że jest coś nie tak z plikiem HEX, możesz go wrzucić?

    Twój plik ma (powinien) 102 bajty więc powinno być ok.
  • #3 9635561
    ^Rachel
    Poziom 21  
    Oto plik hex :
    
    :1000000009C00EC00DC00CC00BC00AC009C008C09A
    :1000100007C012C011241FBECFE9CDBF02D021C03E
    :10002000EFCF78948FE187BB82E687B98DEE86B9F2
    :1000300013B880E284BBFFCF1F920F920FB60F92CE
    :1000400011248F939F9385B1893B20F088B391E071
    :10005000892788BB9F918F910F900FBE0F901F90A3
    :060060001895F894FFCF93
    :00000001FF
    


    Nie mam Avrdude, ale dzisiaj sciągnąłem z tej stronki :
    http://www.prprogramatory.yoyo.pl/index.php?o...n=com_remository&Itemid=17&func=fileinfo&id=6

    I co ciekawe, program został poprawnie zapisany !
    Jak narazie nie blokuje rozmów w tym temacie, może jeszcze ktoś miał taki problem i pomoże go rozwiązać ;)
    Ponieważ Avrdude bez GUI jest strasznie niewygodny.

    Dodano po 1 [godziny] 5 [minuty]:

    Jednak kolejny program przez Avrdude się nie wgrywa, oto co otrzymuję :
    
    
    avrdude.exe: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.02s
    
    avrdude.exe: Device signature = 0x1e9007
    avrdude.exe: reading input file "C:\Users\Bartosz\Desktop\Smieci z pulpitu\Projekty\oswietlenie\program.hex"
    avrdude.exe: input file C:\Users\Bartosz\Desktop\Smieci z pulpitu\Projekty\oswietlenie\program.hex auto detected as Intel Hex
    avrdude.exe: writing flash (100 bytes):
    
    Writing | ################################################## | 100% 0.52s
    
    avrdude.exe: 100 bytes of flash written
    avrdude.exe: verifying flash memory against C:\Users\Bartosz\Desktop\Smieci z pulpitu\Projekty\oswietlenie\program.hex:
    avrdude.exe: load data flash data from input file C:\Users\Bartosz\Desktop\Smieci z pulpitu\Projekty\oswietlenie\program.hex:
    avrdude.exe: input file C:\Users\Bartosz\Desktop\Smieci z pulpitu\Projekty\oswietlenie\program.hex auto detected as Intel Hex
    avrdude.exe: input file C:\Users\Bartosz\Desktop\Smieci z pulpitu\Projekty\oswietlenie\program.hex contains 100 bytes
    avrdude.exe: reading on-chip flash data:
    
    Reading | ################################################## | 100% 0.44s
    
    avrdude.exe: verifying ...
    avrdude.exe: verification error, first mismatch at byte 0x0002
                 0x0e != 0x08
    avrdude.exe: verification error; content mismatch
    
    avrdude.exe done.  Thank you.
    
    


    A zmieniłem tylko
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    na :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    ale to pewnie nie od tego zależy. Spróbuję jeszcze programatorem równoległym STK200.
  • REKLAMA
  • Pomocny post
    #4 9635774
    manekinen
    Poziom 29  
    Czy w linii poleceń nie dopisujesz przypadkiem przełącznika "-D"? Lub nie wyłączasz gdzieś opcji "auto erase"?

    Co do pliku HEX, prawidłowy, nie wiem o co chodziło w tym błędzie (który wczęsniej cytowałem), być może avrdude wtedy źle rozpoznał plik (to jest Intel Hex, a może wziął go za "motorola s-record" albo inne dziwactwo).
  • #5 9636161
    ^Rachel
    Poziom 21  
    Zdaje mi się, że uszkodzone są komórki pamięci, bo nie mogę do nich nic zapisać :

    Wsad do zapisu :
    
    :1000000009C00EC00DC00CC00BC00AC009C008C09A
    :1000100007C011C011241FBECFE9CDBF02D020C040
    :10002000EFCF78948FE187BB82E687B98FEE86B9F0
    :1000300080E184BBFFCF1F920F920FB60F92112465
    :100040008F939F9385B1813F20F088B391E08927FA
    :1000500088BB9F918F910F900FBE0F901F901895A6
    :04006000F894FFCF42
    :00000001FF
    


    Odczyt z pamięci :
    
    :2000000009C00EC00DC00CC00BC00AC009C008C007C011C011241FBECFE9CDBF02D020C0EA
    :20002000EFCF78948FE187BB82E687B98FEE86B980E184BBFFCF1F920F920FB60F92112485
    :200040008F939F9385B1813F20F088B391E0892788BB9F918F910F900FBE0F901F901895F0
    :04006000F894FFCF42
    :00000001FF
    


    Dodano po 44 [sekundy]:

    Jutro kupię nowy uC i zobaczymy.
  • Pomocny post
    #6 9636308
    manekinen
    Poziom 29  
    Po mojemu to oryginał i odczyt to to samo. Tyle że w jednym masz 10 bajtów w linii a w drugim 20 - ale to bez różnicy. Pod adresem 02 jest wartośc 0E. Niewiem skąd avrdude wziął tam 08. Jakieś błędy lecą, spróbuj zwolnić prędkość, przewody posprawdzaj, zimne luty itp.
  • REKLAMA
  • REKLAMA
  • #8 9638210
    ^Rachel
    Poziom 21  
    Przewody mają długość 15 cm, dokładnie to jest taśma taka od CD-ROM-u , tyle że trochę obcięta. Polutowane to jest w miarę dobrze, ale jutro jeszcze poprawię niektóre luty.

    Programując takim prostym "programatorem":
    ATtiny13 - błąd podczas programowania "Mismath at location 0x00000000"

    Wszystko programuje się bez problemu, a więc wina zapewne leży po stronie programatora, chociaż nie do końca, bo np ATmega16 lub ATtiny2313 programują się bez problemów.
  • #10 9638273
    manekinen
    Poziom 29  
    Nic też nie napisałeś co masz do tego układu dołączone. Jeśli masz coś na stałe na pinach SCK lub MOSI, to pamiętaj że guzik zaprogramujesz, bo:
    1.napięcie Ci siądzie na tych rezystorach szeregowych
    2.port LPT i tak ma niską wydajność prądową.

    Do układu musi dojść minimum 3V. Jeśli jest poniżej to stan wysoki nie będzie prawidłowo rozpoznany i stąd błędy.
  • #12 10285764
    rWania
    Poziom 12  
    Temat nie tak stary więc odkopię, ponieważ miałem teraz identyczny problem podczas próby programowania ATtiny13A (mismath at ...). W moim przypadku USBasp + eXtreme Burner zawsze źle zapisywał flash'a. Po "przesiadce" na Khazama AVR Programmer procesor ładnie się zaprogramował i poprawnie pracował.
    Pozdrawiam.
REKLAMA