Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[atmega128][usbasp] Verification error zależny od wielkości programu

Marc n 18 Dec 2013 23:02 2289 10
Wago
  • #1
    Marc n
    Level 10  
    Cześć!

    Od kilku dni walczę z atmega128 i wygrać nie mogę. W czym rzecz?
    Programuje atmege za pomocą USBASP (nie wiem jaka wersja firmware, nie mam obecnie drugiego programatora by zrobić update) i zauważyłem dziwną tendencję:
    Code:

    avrdude: input file /home/marcin/NetBeansProjects/AVR-128/main.hex contains 240 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 1.44s

    avrdude: verifying ...
    avrdude: 240 bytes of flash verified


    I wszystko smiga jak należy! Teraz dodam funkcję foo, która nie robi nic, oprócz zwiększenia wagi kodu...
    Code:

    avrdude: input file /home/marcin/NetBeansProjects/AVR-128/main.hex contains 262 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 2.87s

    avrdude: verifying ...
    avrdude: verification error, first mismatch at byte 0x0100
             0xff != 0xe9


    I procesor nie odpowiada, nie wykonuje nawet podstawowej operacji jak mryganie diodami na porcie z _delay_ms. Proszę o pomoc.

    Kabel powinien być ok, ale tryb szybki nie działa (zworka slow_clk na usbasp).


    Pozdr.
  • Wago
  • #2
    User removed account
    Level 1  
  • Wago
  • #3
    Marc n
    Level 10  
    Tutaj mam naprawdę goły procesor + diody, bo reszty płytki nawet nie lutowałem.

    Połączenia sprawdzone multimetrem - wszystko jak trzeba.
    Wszystkie podłączenia są dobrze, 100nF na każdym zasilaniu, reset pod Vcc z opornikiem, tak samo PEN. Korzystam z wewnętrznego oscylatora 1MHz. Na procku zwarć nie ma. Masa wylana na polygon. Wątpię, żeby to był błąd w projektowaniu i podłączeniu raczej sprawa stricte programowa.

    Nie wydaje mi się, żeby przypadkowo zwracał błąd przy pamięci 0x0100. Niezależnie od wielkości kodu programu i zawsze jest 0xFF odczytywane zamiast.
    Może to programator lub avrdude ?
  • #5
    mmacura
    Level 18  
    A jest ustawione kasowanie pamięci flash przed programowaniem?
  • #6
    Marc n
    Level 10  
    Cześć!

    [atmega128][usbasp] Verification error zależny od wielkości programu

    Code:

    avrdude: safemode: Fuses OK (H:FF, E:D9, L:C4)


    Code: c
    Log in, to see the code


    Po tym jak włączyłem zegar wew. 8MHz to tryb szybki programowania ruszył, ale błąd ciągle ten sam.
  • #7
    User removed account
    Level 1  
  • #8
    Marc n
    Level 10  
    Zasilam na razie z programatora. Wszędzie wisi 100nF, PORTF jest nieuzywany. Odczytując pamięć flash kontrolera:

    Code:

    avrdude -p m128 -c usbasp -U flash:r:"flash.bin":r


    To niezależnie od kodu zawsze jest to błąd 0x0100, zawsze w tym samym miejscu jest FF FF FF FF FF FF FF FF i dalsza część kodu.
  • #9
    Marc n
    Level 10  
    Cześć!

    Problem jest częściowo rozwiązany. Po zainstalowaniu windowsa, avrstudio i khazama avr programmer i wszystko śmiga jak się patrzy.

    Nie wiem czemu linuxowe avrdude ma problemy z atmegą128a. Wersje na obu systemach są niby te same itd. Jedyną różnicą jest to, że w windowsowym makefilu mam --mmcu=atmega128a, a w linuxowym --mmcu=atmega128, po dopisaniu "a" zwraca mi błąd, że nie zna takiego procesora.

    Pozdr.
  • #10
    e-mess
    Level 9  
    Mam podobny problem z urządzeniem na atmega64a. Gdy flaszuję z linuksa, na początku każdej strony mam 7-8 bajtów niezapisanych (wartości 0xff). Błąd występuje niezależnie od tego czy zapisuję w trybie szybkim czy wolnym, ani czy zasilam z programatora czy zewnętrznie.

    Spod windowsa natomiast hula bez problemu.

    Jest to dość upierdliwe, zważywszy na to, że windowsa nie posiadam i muszę się dosiadać do nie mojego kompa.

    Ktoś może wywęszył powód takiego zachowania?
  • #11
    e-mess
    Level 9  
    Kwestia nie polega na różnicy linux-windows.
    Pod linuksem miałem wersję 6.0.1, która wykazuje wspomniany błąd. Jest już zgłoszony:
    https://savannah.nongnu.org/bugs/?41561

    Downgrade do 5.11 (taką wersję miałem na windowsie) pomogło.
    Od razu ostrzegam, że wersja 5.11svn-20111009, dostępna na stronie projektu, jest też koncertowo zepsuta. Tylko pełne 5.11!