Array auslesen.

Gast #2451927
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
#2451955
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.

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