Do maniakow avr-gcc - pytanko
Masz problem? Zapytaj na forum elektroda.pl
From: "Pelos _at_nospam_ HOME" <pelos_at_nospam_pelos.pl>
Subject: Do maniakow avr-gcc - pytanko
Date: Thu, 26 Dec 2002 23:26:28 +0100
Czesc,
Mam taka potrzebe zeby duzo tekstu wypisywac przez UARTa. Poniewaz tekst ten
nie bedzie ulegal modyfikacjom warto by nie zajmowal sekcji data - czyli
wewnetrznego sramu. W przypadku 8515 to 512B.
Warto by go wpakowac np. do Flasha, wykombinowalem sobie cosik w ponizszym
stylu:
u08 Skanning[] _attribute_ ( ( section(".text") ) ) = {"Skannning...
\0"};
Ale to chyba nie do konca jest to... Podczas kompilacji dostaje full bledow
"internal error: out of range error"
W innych kompilatorach wystarczalo dodanie "const" zeby umieszczal np.
tablice na stale we flashu.
Z gory dziekuje za pomoc
Pelos
http://www.pelos.pl
From: "Michał Lankosz" <nie_at_nospam_lubie.spamu>
Subject: Re: Do maniakow avr-gcc - pytanko
Date: Thu, 26 Dec 2002 23:28:12 +0100
Mam taka potrzebe zeby duzo tekstu wypisywac przez UARTa. Poniewaz tekst
ten
nie bedzie ulegal modyfikacjom warto by nie zajmowal sekcji data - czyli
wewnetrznego sramu. W przypadku 8515 to 512B.
Warto by go wpakowac np. do Flasha, wykombinowalem sobie cosik w ponizszym
stylu:
u08 Skanning[] _attribute_ ( ( section(".text") ) ) = {"Skannning...
\0"};
Ja robię tak:
static char P_Uncalibrated[] PROGMEM = "BRAK KALIBRACJI!\0";
main()...
strcpy_P(string, P_Uncalibrated);
lcd_putstr(string);
albo pojedyncze bajty funkcją x = PRG_RDB(...)
potrzebne dodanie biblioteki progmem.h
--
Michał, SQ9FQQ http://sq9fqq.prv.pl/
GG:374157 http://free.ngo.pl/sp9zcj/
mike2001 (malpa) tlen.pl
From: "Pelos _at_nospam_ HOME" <pelos_at_nospam_pelos.pl>
Subject: Odp: Do maniakow avr-gcc - pytanko
Date: Fri, 27 Dec 2002 09:14:55 +0100
Użytkownik Michał Lankosz <nie_at_nospam_lubie.spamu> w wiadomości do grup
dyskusyjnych napisał:aufvp4$9cl$1_at_nospam_news.tpi.pl...
Mam taka potrzebe zeby duzo tekstu wypisywac przez UARTa. Poniewaz tekst
ten
nie bedzie ulegal modyfikacjom warto by nie zajmowal sekcji data - czyli
wewnetrznego sramu. W przypadku 8515 to 512B.
Warto by go wpakowac np. do Flasha, wykombinowalem sobie cosik w
ponizszym
stylu:
u08 Skanning[] _attribute_ ( ( section(".text") ) ) =
{"Skannning...
\0"};
Ja robię tak:
static char P_Uncalibrated[] PROGMEM = "BRAK KALIBRACJI!\0";
main()...
strcpy_P(string, P_Uncalibrated);
lcd_putstr(string);
albo pojedyncze bajty funkcją x = PRG_RDB(...)
potrzebne dodanie biblioteki progmem.h
Hej Michale,
Wielkie dzieki zaraz patrze czy bedzie OK.
Ale sam przyznasz, ze rozwiazanie jest troche na okolo - bo i tak trzeba
skopiowac to spowrotem do internal sramu.
Ale pewnie inaczej sie nie da bo probowalem juz na rozne sposoby.
pozdrawiam
--
Pelos
http://www.pelos.pl
From: "Michał Lankosz" <nie_at_nospam_lubie.spamu>
Subject: Re: Do maniakow avr-gcc - pytanko
Date: Fri, 27 Dec 2002 11:00:16 +0100
Ale sam przyznasz, ze rozwiazanie jest troche na okolo - bo i tak trzeba
skopiowac to spowrotem do internal sramu.
Ale pewnie inaczej sie nie da bo probowalem juz na rozne sposoby.
Nie jest na około, ponieważ w pamięci programu mozesz mieć dużo różnych
tekstów o długości nie przekraczającej x i jeden bufor w RAM o długości x.
Natomiast funkcja PRG_RDB odczytuje pojedyncze znaki do bufora w RAM o
długości 1 bajta :-)
Powinno również wyjść coś takiego, np
for (i=0; i<x; i++)
outp(PRG_RDB(&NAPIS[i]), UDR); // tu kompilator zapewne użyje jako
rejestr pośredniczący tylko R0
Ja stosuję bufor, ponieważ często dopisuję lub podmieniam niektóre znaki
zanim wylądują na LCD.
--
Michał, SQ9FQQ http://sq9fqq.prv.pl/
GG:374157 http://free.ngo.pl/sp9zcj/
mike2001 (malpa) tlen.pl