Forum: Mikrocontroller und Digitale Elektronik M32 Timer läuft nicht


von Der Zeitlose (Gast)


Angehängte Dateien:

Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Pullups aktiv?

von Der Zeitlose (Gast)


Lesenswert?

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?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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]);

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.