Hallo zusammen! Im angehängten Coder soll durch einen Drehgeber (Panasonic EVEQDBRL416B) die 7-Segment-anzeige verändert werden. Funktionierte anfangs auch, abgesehen davon, dass die Anzeige machte was sie will. Neuerdings wird aber nichtmal mehr der Interrupt ausgelöst (getestet mit hochzählen einer Variable im Interrupt), sonder er Zeigt kontinuierlich "0" an. Nein, das mittlere Segment ist wirklich aus, ein schnelles Durcheinander ist es also nicht. Der Code ist aus http://www.mikrocontroller.net/articles/Drehgeber und siebzehn mal Kontrolliert. Wer kratzt mir die Tomaten von den Augen? MfG, Tomate
Sind aktiv, hatte ich nur mal zu Testzwecken ausgemacht. Änderte aber nichts ob mit oder ohne. Wie gesagt, der Timer läuft nicht, aber warum?
Kannst du diese Zeile in main() erläutern? Läuft auf Jörgs Frage hinaus :-) > PINA=0x00; Um das Programm im Simulator zu testen, wären Angaben zum Drehencoder hilfreich: Wie ändern sich PA6 und PA7 in etwa zeitlich. Mit dieser Info könnte man eine Stimuli-Datei anlegen. Wenn du bereits eine Stimuli-Datei hast, her damit. Die ISR( TIMER0_COMP_vect ) wird wie im Programm kommentiert im Sim alle 1ms aufgerufen. Watchdog ist aus, Brownout ist an, Stromversorgung OK? Findet ein Reset statt? Eventuell im Artikel Watchdog nachlesen wie man vor main() eine Resetursache ermittelt. Bei der Berechnung von enc_delta in der ISR würde ich einen Angstcast hinzufügen: enc_delta += (int8_t) pgm_read_byte(&table[last]);
Deine Vermutung, dass irgendwas mit dem Timer nicht stimmt, würde ich mal losgelöst vom Drehencoder verifizieren. In der ISR eine LED einschalten. Das genügt dann schon als Nachweis, dass die ISR aufgerufen wird. (Ich seh zwar keinen Grund warum das auch nicht so sein sollte, aber es beruhigt nun mal.)
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.