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