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

[C][WinAVR/VMLAB]pgm_read_byte - ostrzeżenie przy kompilacji

gregy 21 Paź 2009 22:45 1559 2
  • #1 7158950
    gregy
    Poziom 11  
    Witam,

    próbuje skorzystać z pamięci programu do przechowywania tablicy stałych.
    Środowisko: WinAVR-20090313, VMLAB 3.14, atmega88. Fragment mojego kodu:

    ...
    #include <avr/pgmspace.h>           //obsługa pamięci programu
    ...
    uint8_t kod[] PROGMEM = {2,3,6,2,1,0xff};
    ...
    int main(void)
    {
    ...
    while(1)
     {
      ....
      kod_element = pgm_read_byte(kod+przycisk_licz);
      ....
      kod_element = pgm_read_byte(&kod[przycisk_licz]);
      ...
     }
    }

    Podczas kompilacji otrzymuje ostrzeżenia:
    Cytat:
    Repeated variable name __result within block. Rename it
    Repeated variable name __addr16 within block. Rename it

    Takich par ostrzeżeń otrzymuje n-1, gdzie n - ilość użyć makra pgm_read_byte.
    Próbowalem zmieniac sposób zapisu adresu bajtu do odczytania, zadeklarowałem też drugą tablice i próbowałem odczytywać do innej zmiennej - efekt ten sam.
    Korzystałem z internetowych tutoriali i wyglądało, że powinno być bezproblemowo.
    Przy obsłudze EEpromu nie ma problemu.
    Do tej pory tablicę tę deklarowałem standardowo, czyli umieszczana była w SRAMie i program działał.
    W czym zatem może być problem?
  • #3 7159033
    gregy
    Poziom 11  
    Nie - to akt desperackich prób :) , początkowo ich nie było, a efekt był ten sam.
    (już poprawiam - coby nie drażniło)


    Dodam, że wgrałem program i wygląda na to, że działa, tak jak działał jak tablica była w ramie, tylko o co chodzi kompilatorowi??
REKLAMA