Hallo zusammen, ich habe bereits die Forensuche benutzt, leider nichts passendes gefunden. Ich möchte mit dem AVR-GCC und Tiny24 einen Pointer auf ein Flash-array - für ein Blinken der LED zuständig - anlegen. prog_uint8_t blink_slow[] PROGMEM = { BLINK_GREEN, BLINK_NONE , BLINK_NONE, BLINK_NONE, BLINK_NONE, BLINK_NONE, BLINK_NONE , BLINK_NONE, BLINK_NONE, BLINK_NONE}; prog_uint8_t blink_med[] PROGMEM = { BLINK_GREEN, BLINK_GREEN , BLINK_GREEN, BLINK_GREEN, BLINK_NONE, BLINK_NONE, BLINK_NONE , BLINK_NONE, BLINK_NONE, BLINK_NONE}; prog_uint8_t blink_fast[] PROGMEM = { BLINK_GREEN, BLINK_GREEN , BLINK_GREEN, BLINK_GREEN, BLINK_GREEN, BLINK_GREEN, BLINK_GREEN , BLINK_GREEN, BLINK_NONE, BLINK_NONE}; prog_uint8_t* blinker; Wenn ich das Byte nun so lade. >readByte = pgm_read_byte(&blink_fast[blinker_pos]); geht alles prächtig. Ich möchte aber auf den Array per Pointer zugreifen. >blinker=&blink_fast; >readByte = pgm_read_byte(blinker[blinker_pos]); In diesem Fall motzt GCC und der Blinker funktioniert nicht. Wie muss ich nun den Pointer auf das Array definieren, dass es funktioniert? Vielen Dank für Eure Hilfe! Michael
Klar motzt der gcc. Im ersten Fall machst Du alles richtig und übergbist die Adresse des Chars: > readByte = pgm_read_byte(&blink_fast[blinker_pos]); Im zweiten fall wird aber der Char selbst übergeben, obwohl ein Zeiger datauf erwartet wird. > readByte = pgm_read_byte(blinker[blinker_pos]); Schreib also ein & vor blinker[blinker_pos] analog zur ersten Version, um seine Adresse zu bekommen. MfG Mark
Vielen Dank, das klappt jetzt schon mal. Aber GCC motzt immer noch wegen dem Assignment/Zuweisung auf meinen Pointer: main.c:103: warning: assignment from incompatible pointer type prog_uint8_t* blinker; blinker=&blink_lowbatt; readByte = pgm_read_byte(&blinker[blinker_pos]); Was kann ich gegen die Warnung unternehmen?
> main.c:103: warning: assignment from incompatible pointer type Zeig mal deine ganzen Datentypen Welches ist Zeile 103? > blinker=&blink_lowbatt; Der Name des Arrays alleine fungiert schon als Spezifikation für die Startadresse des Arrays blinker = blink_lowbatt; (Ein C-Buch wäre angebracht, da steht das und noch 1000 andere wissenswerte Dinge drinnen)
Hi, vielen dank für deine Hilfe, man lernt nie aus. Nun meckert er nicht mehr. Danke Michael
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.