avr-gcc und der Flash

Gast #76542
Hallo

Ich versuche grade den Atmel Beispiel Code für das PS2 Keyboard nach
avr-gcc zu portieren, es ist eigendlich schon fertig aber in einem der
Files wird der Type flash benutzt:

flash unsigned char unshifted[][2] = { ............ }

der Soll das arry direkt in den flash legen, das macht doch der gcc
generell oder gibt es einen ähnlichen Befehl?

Gruss Sven.
PS: Kann es im Moment nur Compiler testen ...
Gast #76543
Hallo Sven,
im avr-libc Manual ist es beschrieben, unter:
Modules --> Program Space String Utilities
Aber beim zugriff die Macros nutzen. Beschreibung an gleicher Stellt.

Mfg
Wolfgang
Gast #76544
Hallo Wolfgang,

eigentlich müste doch meine Frage hinfällig sein, denn das array wird
doch nicht in den RAM kopiert, oder?

so sieht das Original aus.
flash unsigned char unshifted[][2] = { ............ }

ich würde jetzt folgendes Schreiben
unsigned PGM_P unshifted[][2] = { ............ }

dabei habe ich aber das Problem es jetzt ein Pointer ist.

so sieht z.B. der Zugriff aus:
for(i = 0; unshifted[i][0]!=sc && unshifted[i][0]; i++);

Gruss Sven
Gast #76545
Du musst das so machen:

Deklaration/Definiton:
  static const unsigned char unshifted[][] PROGMEM = { ... };
  PGM_VOID_P index= unshifted;

Zugriff mit:
  pgm_read_byte( unshifted++ );

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.