winavr, pgm_read_byte_far()

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 #include #include #include

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

Reply to
Stefan
Loading thread data ...

Stefan schrieb:

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

Reply to
Uwe Hercksen

Die findet er ja, aber die funktion ist nicht da(vermutlich weg #defined). Der mega32 hat weniger programmspeicher.... gibt's eine pgm_read_byte()? Probier' die.

Reply to
Johann Klammer

Es gibt ein pgm_read_byte_near(). Das läßt sich compilieren, liefert aber nicht die gewünschten Daten. Ich muss mal prüfen, ob da an anderer Stelle noch was faul ist.

near würde Sinn machen, weil der atmega32 im Gegensatz zum atmega128 eben weniger als 64k Flash hat.

Reply to
Stefan

Stefan schrieb:

Hallo,

der Zeiger char *FlashSTR muß natürlich auch passend definiert sein.

Bye

Reply to
Uwe Hercksen

Am 11.01.2013 15:38, schrieb Uwe Hercksen:

Ja, hab ich eh auf 16 Bit, liefert beim ATmega128 zwar ein warning, geht aber, aber vermutlich nur, solange mein Programm unter 64k bleibt.

Mit dem mega32 gehts jetzt auch mit pgm_read_byte(), pgm_read_byte_near() müsste ich noch testen

Danke erstmal

Gruß

Stefan

Reply to
Stefan

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.