-
-
Neuer Benutzer
Öfters hier
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)
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen