winavr, pgm_read_byte_far()

11/01/2013 - 14:32 von Stefan | Report spam
Moin,

wir haben hier ein Problem mit dem folgenden Programmschnipsel wenn wir
das für einen ATmega32 compilieren. Das selbe Konstrukt setzen wir ohne
Probleme bei einem ATmega128 ein:

#include <avr/io.h>
#include <stdio.h>
#include <stdlib.h>
#include <pgmspace.h>


void LCD_printtxtfromflash(char line, char *FlashSTR)
{ uint8_t c=0;
do
{
c = pgm_read_byte_far(FlashSTR++);
if (c) LCD_printchar(line++,c);
}
while (c);
}

-

Der compiler meldet:

lcd.h: In function 'LCD_printtxtfromflash':
lcd.h:313: warning: implicit declaration of function 'pgm_read_byte_far'

und dann:

undefined reference to `pgm_read_byte_far'

Ich hab die pgmspace.h schon ins Projektverzeichnis kopiert, aber
irgendwie komme ich nicht weiter.

Gruß

Stefan
 

Lesen sie die antworten

#1 Uwe Hercksen
11/01/2013 - 15:06 | Warnen spam
Stefan schrieb:

Der compiler meldet:

lcd.h: In function 'LCD_printtxtfromflash':
lcd.h:313: warning: implicit declaration of function 'pgm_read_byte_far'

und dann:

undefined reference to `pgm_read_byte_far'

Ich hab die pgmspace.h schon ins Projektverzeichnis kopiert, aber
irgendwie komme ich nicht weiter.



Hallo,

das sieht danach aus als gibt es pgm_read_byte_far für den Processor
nicht und man muß was anderes benutzten, z.B. pgm_read_byte_near oder
pgm_read_byte oder wie auch immer das heißt für das dort benutzte Memory
Modell.

Bye

Ähnliche fragen