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

[atmega8][c] pełna atmega?

modymat 23 Gru 2011 20:43 1153 5
  • #1 10296978
    modymat
    Poziom 13  
    Witajcie,
    napotkałem dziś następujący problem. Do obsługi wyświetlacza skorzystałem z biblioteki radzia, która jest zamieszczona pod adresem:

    http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_norw_c.htm

    Fajnie wszystko działa, udało mi się wyświetlić jakieś tam teksty więc przeszedłem do pisania dalszej części aplikacji. Dopisałem trochę kodu (może kilkanaście lini) i przy kompilacji wywala mi taki błąd:
    collect2: ld returned 1 exit status

    Kiedy wyrzuciłem kilka linijek problem zniknął, jeśli podczas kompilacji zamiast atmega8 daję atmega16 to problem również znika.

    Wnioskuję zatem, że atmega8 ma zbyt mały flash na ten kod. Czy to prawda? Czy biblioteka, z której korzystam wykorzystuje mi prawie całą pojemność flash?

    Czy problem tkwi tylko w obiętości kodu i muszę go odchudzać, czy idzie jeszcze jakoś inaczej to rozwiązać?

    Z góry dziękuję za waszą, jak zawsze niezawodną pomoc.
  • #3 10297820
    modymat
    Poziom 13  
    A gdzie mogę takową informację sprawdzić? Korzystam z avrdude
  • #5 10297888
    modymat
    Poziom 13  
    kompilator i avr-gcc. Doświadczalnie wszystko jest ok, kiedy wyrzucam delay.h. Jak prosto zastąpić ta bibliotekę swoją funkcją do zwłoki czasowej. Mam taktowanie 1 MHZ. Jest jakaś lżejsza funkcja pod zwłokę?
  • Pomocny post
    #6 10297921
    dondu
    Moderator na urlopie...
    Oj, ale coś skaczesz z pytaniami z kwiatka na kwiatek :)
    1. Czy masz włączoną optymalizację -Os ?
    2. Po kompilacji w okienku z komunikatami, masz informację ile kod zajmuje pamięci.
    3. wykorzystuj bibliotekę delay.h.
REKLAMA