Schreiben von OCR1A

Gast #237846
Guten Abend,

ich habe wohl ein Problem mit der Zeigerarithmetik. Das Schreiben von
OCR1A schlägt fehlt, bzw. das erzeugte PWM entspricht keinesfalls dem
geschriebenen Wert:

CODE:
-----
#define TESTV1  10
#define TESTV2  120
#define TESTV3  180
#define TESTV4  240

volatile int lutTest[4] = {TESTV1, TESTV2, TESTV3, TESTV4 };
volatile unsigned char* PtrLutByte = lutTest;

SIGNAL(SIG_OVERFLOW1)
{
  // Schlägt fehl
  OCR1A = pgm_read_byte(PtrLut++);

  // ODER
  // dies schlägt auch fehl
  OCR1A  = PtrLutByte++;

}

Weiß hier jemand Rat? Mir fällt nichts ein. Danke!
grüße
boris
Gast
Hallo Jörg
das war mir eben unklar wo die Tabelle liegt. Trotzdem funktioniert der
Zugriff mit dem Zeiger nicht. Löse ich das Ganze über:
OCR1A = lutTest[x]
arbeitet der Code einwandfrei. Versteh ich nicht!
Gruß
Boris

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.