Habe es jetzt noch mal mit 2 timern gemacht um zu schauen ob ich die richtigen werte bekomme lasse ich mal die werte printen
$regfile = "m32def.dat"
$crystal = 3686400
Dim Impulsdauer(3) As Word
Dim N As Byte
N = 1
Const Timervorgabe = 216

Config Timer1 = Timer , Prescale = 1
Config Timer0 = Timer , Prescale = 256

On Timer0 Timer_irq
'sync bei Timer-Overflow
Enable Timer1
Enable Timer0
Stop Timer0



Config Int1 = Change
On Int1 Flanke 'ISR bei Flankenwechsel
Enable Int1
Enable Interrupts


Do

Loop 'Hier läuft Dein Hauptprogramm


Flanke:
If Pinb.0 = 1 Then
Start Timer1
Start Timer0



Else
Stop Timer1
Stop Timer0

Impulsdauer(n) = Timer1
Print Impulsdauer(n)
N = N + 1
End If
Print "flanke"
Timer0 = 100
Timer1 = 25536

Return

Synchronisationsimpuls: 'Wechselt Kanal zutück auf 1
Print "sync"
Return

Timer_irq:
Stop Timer0
Timer0 = 100
N = 1 ' Wenn Timer überläuft handelt es sich um synchronisationsimpuls


Print "timer irq"
Stop Timer1
Stop Timer0
Return
Die Werte für Timer1 bleiben erst ein paar mal unverändert dann plötzlich ist timer1 = 0 und beim nächsten mal stimmt es wieder ..
ideen?
mfg
EDIT : DUMMER FEHLER !! liegtt daran dass es verscheidene impulsdauern gibt (1,2,3)