kriege Pointer auf String im Flash nicht übergeben...
Hi!
Ich bin grad dabei meine LCD-lib etwas aufzumöbeln und kriege einen Pointer auf einen String im Flash im zusammenspiel mit einer variablen Argumentenliste nicht übergeben.
Das Funktioniert einwandfrei:
Code:
void lcd_test_p(uint8_t x, uint8_t y, PGM_P test) {
char temp[LCD_WIDTH];
sprintf_P(temp,test);
lcd_gotoxy(x,y);
lcd_write(temp);
}
das allerdings garnicht (crashed mein Programm):
Code:
void lcd_printf_xy_p(uint8_t x, uint8_t y, PGM_P fmt, ...) {
char temp[LCD_WIDTH];
va_list argp;
va_start(argp, fmt);
vsprintf_P(temp, fmt, argp);
va_end(argp);
lcd_gotoxy(x, y);
lcd_write(temp);
}
hab probiert die argumente zu vertauschen (erst das PGM_P fmt, dann x und y, dann die variable Argumentenliste) aber das hat garnix gebracht.
aufgerufen hab ich die funktionen so:
Code:
lcd_test_p(0,0,PSTR("Test")); /* funktioniert */
lcd_printf_xy_p(0,0,PSTR("Test")); /* funktioniert nicht */
lcd_printf_xy_p(0,0,PSTR("test %i"),1); /* funktioniert nicht */
wie kriegt man das gelöst? :-k
grüße,
Basti