Man kann im AVR-Studio das Hex öffnen, wird dann als Assembler angezeigt und lässt sich auch in gewissen Maß simulieren. Auf jeden Fall geht die Simulation soweit bis die Timer initialisiert wurden, da schaut man sich dann die Register an und vergleicht ggf. mit dem Datenblatt. Auch die Interruptvektoren sind zu sehen, da kann man einen Haltepunkt drauflegen, dann sieht man ob der Timerinterrupt auslöst und der Vektor angesprungen wird. Einzelne Blöcke wie die Int0-ISR sind so auch leicht zu finden. Man kann nicht das komplette Hex testen, aber man nimmt für den Fehler sowieso bestimmte Fehlerquellen an und die überprüft man gezielt. Bis jetzt fiel mir nichts Verdächtiges auf.
Nimm einfach an daß der Timer2 wie vorgeschrieben läuft, auch wenn Timer0 PWM in Betrieb ist. Nimm ferner an, daß OC0A..B Störungen auf Int0 erzeugen, welche über die dann ausgelöste Measure-ISR zur Folge hat, daß Timer2 nie einen Überlauf bekommt. Dann wird Dir Timer2 als "nicht funktionierend" erscheinen, die Fehlerursache liegt aber woanders.Ein HW-Problem kann ich ausschließen, den wenn ich Timer0 (als PWM) auskommentiere, funzt Timer2
Deswegen mein Vorschlag zur Gegenprobe den Timer abzuschalten, die OC0A..B als Ausgang zu konfigurieren und im Programm einfach auf einen bestimmten Pegel zu setzen oder zu toggeln. Wenn das dann geht, dann kann man dies ausschließen. Wenn's dagegen da klemmt, sucht man an dieser Stelle weiter.
Bitte, gern geschehen.
Lesezeichen