PROGMEM nie działa :/ (WinAVR + ATMega)

Mar 14, 2007 2 Replies

Witam wszystkich Chcę zadeklarować tablice w pamięci programu w ATmega 128. Program piszę w C pod WinAVR 20070122 (chyba najnowszym).



Robie to tak: #include <progmem.h>



const char PROGMEM *s = "jakis napis"; lub przez static static unsigned char PROGMEM ascii[] = {0x00,0x00,0x00 };



Oba przykłady z Googli. Dostaje takie komunikaty błedów:



simple.c:5:21: error: progmem.h: No such file or directory simple.c:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token simple.c:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ascii'



Jak widać nie widzi biblioteki progmem. Tu mam pytanie, czy coś w nowszej wersji kompilatora pozmieniali, by go zbliżyć do czystego C, tak jak to było z niektórymi poleceniami ustawiającymi pojedyńcze bity? Przeszukałem folder WinAVR i nie znalazłem pliku progmem.



Drugie pytanie, tak przy okazji, bo właśnie chciałem to przetestować. Czy jest duża różnica w prędkości pomiędzy odczytem z pamięci programu a z pamięci danych? Chce wykorzystać PRG_RDB(...);



Za wszelką pomoc dziękuję.



Pozdrawiam


Spinacz biurowy, Michał K. snipped-for-privacy@onet.pl!

Pliku nagłówkowego. To nie to samo.

Przeszukaj wszystkie pliki nagłówkowe pod kątem występowania słowa PROGMEM.

Nie znam WinAVR, ale u mnie (avr-gcc) jest to #include <avr/pgmspace.h>

W datasheecie powinno być napisane (przy okazji listy rozkazów).

Masz racje, google mnie w błąd wprowadziły. WinAVR jest oparty o kompilator avr-gcc, więc w gruncie rzeczy to to samo. Teraz się kompiluje ok.

Bardzo dziękuję za szybką odpowiedz i pozdrawiam.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required