Forum: Compiler & IDEs pgm_read_byte


von nils (Gast)


Lesenswert?

Guten Tag,

Ich habe für mein GLCD mehrere Fonts im Flash eines ATmega128,
auslesen tu ich das so,
1
by = pgm_read_byte(&strcut1->glyph_table[ offset+j+(i/8) ]);
sobalt ich aber über die 64K grenze im Flash komme funktioniert das 
ganze nicht mehr.

Mit
1
by = pgm_read_byte_far(0x10000UL + (uint32_t) (uint16_t)&strcut1->glyph_table[ offset+j+(i/8) ]);
Kann ich ja nur den Adressraum oberhalb von 64K ansprechhen.
Gibt es einen Befehl womit mann den kommpletten Adressraum ansprechen 
kann.

Vielleicht könnte jemand weiterhelfen .
mfg

von Rolf Magnus (Gast)


Lesenswert?

nils schrieb:
> Mit
> by = pgm_read_byte_far(0x10000UL + (uint32_t) (uint16_t)&strcut1- glyph_table[ 
offset+j+(i/8) ]);
> Kann ich ja nur den Adressraum oberhalb von 64K ansprechhen.

Ja klar, weil du die 64k ja selbst dazuaddierst.

von hp-freund (Gast)


Lesenswert?

Mach dir doch eine Funktion der Du die die Adresse übergibst und die den 
Bereich prüft und eine deiner Varianten benutzt und das Byte zurückgibt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.