Forum: Mikrocontroller und Digitale Elektronik DOGS102-6 Beispielcode von EA - compiler changes


von Anselm 6. (anselm68)


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

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Anselm 6. (anselm68)


Angehängte Dateien:

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

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


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.

von Au Weia (Gast)


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.

von Jim M. (turboj)


Lesenswert?

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

Du hast oben im 1. Beitrag ein "static" entfernt.

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.