AVRGCC

Witam, uzywam biblioteki rprintf do wyswietlania na LCD. mam zainicjowana tablice wskaznikow jak ponizej

const u08 __attribute__ ((progmem)) *Te_ctrl[] = { "Off ", "Cool", "Heat" }; rprintfProgStr ( (u08 *) Te_ctrl[1]);

i lipa nic nie wyswietla, mial ktos z czyms takim doswiadczenie??? napomkne ze jezeli tablica jest umieszczona w RAM'ie jak ponizej

const u08 *Te_ctrl[] = { "Off ", "Cool", "Heat" }; rprintfStr ( (u08 *) Te_ctrl[1]);

to wszystko dziala bez problemu .....

Reply to
invalid unparseable
Loading thread data ...

Sat, 8 May 2004 10:59:47 +0200, na pl.misc.elektronika, Paweł Kurzawa napisał(a):

Wszyscy ;-) Avr-gcc ze swoim 2-bajtowym wskaźnikiem nie umie samoczynnie rozpoznawac uzytego obszaru pamieci. Do korzystania ze stalych w pamieci programu ( takze eeprom ) sluzy wiec szereg oddzielnych funkcji i makr - zajrzyj do manuala avr-libc.

Reply to
Jurek Szczesiul
Reply to
invalid unparseable

Dnia sob 8. maja 2004 12:07 Jurek Szczesiul napisał(a):

Zauważ, że przedpiśca podał dwie różne funkcje do odczytu z RAM i FLASH, więc ja założyłem, że twórca tej biblioteki ten problem ma jakoś rozwiązany, i siedziałem cicho ;-)

Ja stawiam na jakieś "obsolete" odwołanie w bibliotece. Przydałaby się wersja avr-libc, avr-gcc i jakiś link do wzmiankowanego pakietu. A najlepiej się takie proste rzeczy (jak wyświetlanie danych) pisze samemu - przynajmniej wiadomo, na kogo narzekać ;-P

Reply to
Marcin Stanisz

Po krotce wycinki zrodel uzyuwanych bibliotek do pozyskiwania danych z FLASH'a.

#define PRG_RDB(addr) pgm_read_byte(addr) #define pgm_read_byte(address_short) pgm_read_byte_near(address_short)

void rprintfProgStr(char str[]) { register char c; if (!str) return; while((c = PRG_RDB(str++))) rprintfChar(c); }

i tu chyba jest ten problem ze wskaznikiem char str[] kurcze jak to obejsc ....

Reply to
invalid unparseable

Dnia sob 8. maja 2004 12:31 Paweł Kurzawa napisał(a):

Nie masz :-) Sprawdź ponownie punkt "7.3.15 How do I put an array of strings completely in ROM?"

Pozdrawiam

Reply to
Marcin Stanisz

Dzieki, trzeba jednak wiecej czasu przeznaczyc na sen :)) za duzo kombinowania kod robi sie nieczytelny poki co pozostawie te stringi w RAM'ie jak zacznie brakowac bede sie bawil ... albo poczekam az ktos poprawi biblioteke "rprintf".

Reply to
invalid unparseable

Dnia sob 8. maja 2004 14:11 Paweł Kurzawa napisał(a):

Eee, biblioteka może jest OK - to ty źle zadeklarowałeś łańcuchy. I poprosimy o odpowiedzi pod cytatem ;-)

Pozdrawiam i snu życzę - ostatnio wyspany

Reply to
Marcin Stanisz

Sat, 8 May 2004 13:14:22 +0200, na pl.misc.elektronika, Paweł Kurzawa napisał(a):

To wyglada raczej OK. Ale jest jeden niuans : jesli wskaznik na flash string pobierasz z rowniez flashowej tablicy ( a tak cos pamietam z przebiegu watku ), to najpierw trzeba z tej tablicy sczytac wartosc potrzebnego elementu ( napis = (char*)pgm_read_word(&tablica_napisow[k]); ) i dopiero tego odczytanego wskaznika uzyc do pobrania wlasciwego tekstu.

Reply to
Jurek Szczesiul

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.