Forum: Mikrocontroller und Digitale Elektronik Array auslesen.


von Bernd (Gast)


Lesenswert?

Hallo!
Ich habe aus dem LED-Fading Artikel folgendes Array:
1
uint16_t pwmtable_8D[32]  PROGMEM = {0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 10, 11,
2
                                    13, 16, 19, 23, 27, 32, 38, 45, 54, 64, 76,
3
                                    91, 108, 128, 152, 181, 215, 255};


Mit folgendem Funktionsaufruf werden die Arrayinhalte auf die PWM 
gepackt:
1
 OCR1A = pgm_read_word(pwmtable_8D+tmp);

Bedeutet es dass tmp für die auszulesene Stelle im Array steht?

Also z.B
1
 OCR1A = pgm_read_word(pwmtable_8D+31);

beudetet dass das Register OCR1A auf 255 gesetzt wird?

Gruss

Bernd

von Andreas B. (andreas_b77)


Lesenswert?

Sieht genau so aus. PROGMEM bestimmt nur, wo es abgelegt wird, ansonsten 
funktioniert das Array so wie immer (außer, dass die Daten hier nicht 
ohne den Umweg über pgm_read_word gelesen werden können).

Noch angemerkt: Wenn man in C eine Zahl auf einen Pointer addiert, wird 
der Pointer um Zahl*(sizeof *Pointer) weitergestellt. Deshalb ist 
&array[x] identisch zu array+x, unabhängig von der Größe des Datentyps 
im Array.

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.