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
Warum denn pgm_read_byte()? Deine Tabelle liegt doch gar nicht im ROM. volatile muss übrigens weder die Tabelle noch der Zeiger sein.
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
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.