Gast
#465518
Hi
Texte ans LCD senden ist kein Problem, das funktioniert einwandfrei.
Doch leider liegen die Texte ja immer im RAM, deswegen würd ich die nun
gerne in den Flashbereich verlagern.
Habe dafür meine Routine angepasst:
void lcd_ausgabe(unsigned char zeile,unsigned char *text)
habe ich zu
void lcd_ausgabe(unsigned char zeile,const unsigned char *text)
gemacht.
Nun hier mein Test mit den Strings:
char Text1[] PROGMEM="Test 1 bla da blubb blubb";
char Text2[] PROGMEM="Test 21234";
//Die beiden Strings müssten doch im Flash liegen, oder?
int main(void)
{
lcd_initialisieren(); //starte LCD
_delay_s(1); //selbstprogrammierte delay-Routine für Sekunden
char ausgabetext[25];
strcpy(ausgabetext,Text1);
lcd_ausgabe(1,ausgabetext); //Test 1: Kopiere Text vom Flash in RAM,
gebe dann aus
_delay_s(1);
lcd_ausgabe(2,Text2); //Test 2: Gebe Flashtext direkt aus
_delay_s(1);
strcpy(ausgabetext,PSTR("blubb")); //Test 3: Der Text müsste doch auch
aus dem Flash kommen und direkt in den RAM gehen?
lcd_ausgabe(1,ausgabetext);
_delay_s(1);
lcd_ausgabe(2,"blubbb"); //Test 4: Direktausgabe aus dem RAM
while (1) //Endlosschleife, damit das Programm nicht beendet wird und
unkontrollierte Zustände auftreten
{
}
return 1;
}
Nur der 4. Test gibt eine lesbare, sinnvolle Ausgabe auf dem LCD.
Woran kann das liegen?
Ciao Tobias