AVRGCC

May 08, 2004 8 Replies

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 .....


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.

Wlasnie manuala mam juz w palcu i nie ma tam zadnych informacji. Jezeli masz jakis pomysl podziel sie prosze ...

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

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 ....

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

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".

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

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.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required