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?

grüße,
Basti