Moin,

Ich bastle gerade mit der Bascom-Demo an einem Projekt, wo ein ATtiny2313 vier LEDs per PWM dimmen soll. Das klappt auch soweit mit der PWM, aber leider sind jetzt dadurch Timer0 und Timer1 blockiert.
Ich muss jetzt noch irgendwie die Zeit messen, was ich über Timer2 mit einem Timeroverflow machen wollte, der der immer ein Flag auf 1 setzt und eine Variable hochzählt.
Mir ist leider jetzt erst aufgefallen, dass der Tiny ja gar keinen Timer2 besitzt.

Dann habe ich im Datenblatt nach einer Alternative gesucht und habe gelesen, dass der Watchdogtimer alternativ zum Reset auch einen Interrupt auslösen kann.

Über Bascom kann ich aber wohl nur den Watchdog starten, zurücksetzen und den Prescaler definieren. Eine Einstellung als Interrupt geht wohl nicht und ein Interruptvektor für den Overflow konnte ich auch nicht finden.

Ich glaube ich muss folgendes machen, um das Register des Watchdogs auf Interrupt umzustellen:

Code:
Wdtcsr = &B01010000
Wenn ich das richtig verstanden habe, dann sollte der WDTimer damit alle 16ms einen Interrupt auslösen und nicht resetten.

Aber wie mache ich das jetzt mit dem Interrupt?

Der Vektor dafür hat die Nummer 19, ist an Programmadresse "0x0012" und Source ist "WDT OVERFLOW", laut Datenblatt.

Normalerweise würde ich das ja mit...
Code:
Enable Interrupts
Enable Vektorname
On Vektorname Isr_wdovf
Isr_wdovf:
   Incr Zeit1
   Zeitflag = 1
Return
...machen, aber den Vektor kennt Bascom ja nicht.

Hat da schon wer Erfahrungen gemacht?
Kann mir da wer helfen?

MfG

Dunuin