DOGS102-6 Beispielcode von EA - compiler changes

OP #5897030
Lesenswert?

Hallo,

das Example ist von 2011 und läuft auf dem aktuellen compiler nicht.

dass ich die Deklarationen
1
static uint8_t __attribute__ ((progmem)) font_6x8[font_6x8_LEN] =
in
1
const uint8_t __attribute__ ((progmem)) font_6x8[font_6x8_LEN] =
wechseln muss, habe ich schon herausgefunden.
jedoch ist noch ein  weiterer Fehler den ich nicht beseitigt bekomme:

Originalcode
1
const uint8_t *ptr_font_6x8 PROGMEM = font_6x8;
Nach einer FAQ muss ich hier den * verschieben:
1
const uint8_t * ptr_font_6x8 PROGMEM = font_6x8;
Dies scheint aber falsch, was muss ich machen um die Fehlermeldung:
1
error: variable 'ptr_font_6x8' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
los zu bekommen?

Gruß
Anselm
Persönliche Seite #5897183
Lesenswert?

Anselm 6. schrieb:
> Nach einer FAQ muss ich hier den * verschieben:

Das bewirkt exakt gar nichts.
1
const uint8_t *ptr_font_6x8 PROGMEM = font_6x8;
2
const uint8_t * ptr_font_6x8 PROGMEM = font_6x8;
3
const uint8_t* ptr_font_6x8 PROGMEM = font_6x8;

bedeuten nicht nur das gleiche, sondern sogar dasselbe.

Das Problem ist, daß Dein Pointer const ist, nicht aber das, worauf er 
zeigt.

1
uint8_t* const ptr_font_6x8 PROGMEM = font_6x8;

Hier ist das, worauf der Pointer zeigt, const, nicht aber der Pointer 
selbst.

Und das hier
1
const uint8_t* const ptr_font_6x8 PROGMEM = font_6x8;

macht sowohl den Pointer als auch das, worauf er zeigt, const.
OP #5897201
Lesenswert?

Hallo Rufis,

ich habe mal das Projekt komplett angehängt,

es ist nur der Beispielcode von EA mit den 2 Modifikationen.
Jetzt habe ich "multiple definitionen" und noch
1
/Source/main.c:69:2: warning: passing argument 4 of 'lcd_string' discards 'const' qualifier from pointer target type [enabled by default]
2
  lcd_string(0,5,"EA DOGS102-6!", ptr_font_8x16, INVERS); //Printing a line in big fonts, inverted

vielleicht magst du da mal rein schauen bitte.

Danke
Anselm
Angehängte Dateien:
Persönliche Seite #5897227
Lesenswert?

Anselm 6. schrieb:
> vielleicht magst du da mal rein schauen bitte.

Nö, ich hab' anderes zu tun.

Anselm 6. schrieb:
> Jetzt habe ich "multiple definitionen"

Hast Du möglicherweise irgendeine Variable in einer *.h-Datei definiert?

> und noch

Sieh Dir den Protypen der Funktion an, vergleiche den Typ jedes 
einzelnen Arguments mit dem, was Du beim Aufruf übergibst.
Gast #5897494
Lesenswert?

Anselm 6. schrieb:
> ich habe mal das Projekt komplett angehängt,

Nein hast du nicht.

Du hast nur ein paar Sourcen / Header geliefert.
Zu einem Projekt gehört mindestens eine Projekt-Datei.
Ob es dann komplett ist stellt sich erst noch heraus.

Nicht einmal den Controller-Typ hast du genannt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren