Gast
#713175
Hallo, weiß jemand wie der Timer0 in der oben angehängter Programm funktioniert. Irgendwie komme ich nicht dahinter wie er funktioniert? Kann mir da jemand helfen?
|
Anzeige
|
Timer0 für Atmega8
Gast
#713175
Hallo, weiß jemand wie der Timer0 in der oben angehängter Programm funktioniert. Irgendwie komme ich nicht dahinter wie er funktioniert? Kann mir da jemand helfen? Ab wo verstehst du die Timerbehandlung nicht mehr? So wie ich das sehe, wird der Timer ganz normal als Overflow Timer benutzt, d.h. in regelmäßigen Zeitabständen wird der Overflow Interrupt ausgelöst. Da diese regelmäßigen Zeitabstände noch zu klein sind, werden daher in der ISR weitere Zähler benutzt um den Zeittakt für die eigentliche Anwendung noch herunterzuteilen. So nach em Muster: Wenn man 60 mal 1 Sekunde wartet, hat man in Summe auch 1 Minute gewartet.
Gast
#713399
Ja das habe ich auch so verstanden, und eigentlich sollte dann irgend wann mal der Interrupt angesprungen werden, das passiert leider nie. Und auf STK500 passiert da leider auch nichts. Ich meine Blinken und Einschaltverzögerung! Der Code ist grauenhaft formatiert und es ist ein klassisches Beispiel dafuer, wie man den Praeprozessor in C nicht verwenden sollte... und die Registerwerte sind auch noch hart codiert, das fiesel ich jetzt nicht auseinander. Michael Martina wrote: > Ja das habe ich auch so verstanden, und eigentlich sollte dann irgend > wann mal der Interrupt angesprungen werden, das passiert leider nie. Das mag durchaus sein. Aber der Timercode ist so erst mal in Ordnung. 0x02 in TIMSK ist der Overflow Interrupt im Timer 0, ein 'sei' wird gemacht, der Timer hat einen Vorteiler eingestellt Das sind dann eigentlich schon alle Bedingungen, damit der Timer läuft und einen Interrupt beim Overflow auslöst. > Und > auf STK500 passiert da leider auch nichts. Ich meine Blinken und > Einschaltverzögerung! Setz doch einfach mal zusätzlichen Code in die Overflowfunktion und lass dort eine LED einschalten, dann weist du ob der Timer läuft und einen Overflow auslöst oder nicht. Zwischen dem Timer und den 'SPS Ausgängen' sitzt ja noch eine Softwareschicht die ebenfalls Fehler enthalten kann. Die will ich mir jetzt aber nicht antun :-) Die ist grauenhaft geschrieben. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|