Was mach ich falsch, das lauter wirre Zahlen bei rauskommen?
Erst mal nur ein INT der Kanäle 1,3,5...
Code:
$regfile "m32def.dat"$baud = 9600
$crystal = 16000000
$framesize = 32
$swstack = 32
$hwstack = 64
Config Porta.0 = Output
Config Timer0 = Timer , Prescale = 256 'Läuft etwa alle 4 ms über
Config Int0 = Rising
On Int0 Int0_isr
On Timer0 T0_ovf
Dim Ch_cnt As Byte
Dim Sig(3) As Byte
Enable Int0
Enable Timer0
Start Timer0
Enable Interrupts
Do
Waitms 200
Print Sig(1) ; "," ; Sig(2) ; "," ; Sig(3)
Loop
End
Int0_isr:
If Ch_cnt > 0 Then Sig(ch_cnt) = Timer0 'Bei erster Flanke soll erst mal nur der Timer auf 0 gestellt werden, bei weiteren dann Wert gespeichert werden
Timer0 = 0 'Timer auf 0 stellen
Incr Ch_cnt 'Kanal Zähler erhöhen
If Ch_cnt = 3 Then Config Int0 = Falling 'Wenn alle 3 Pulse durch sind, INT0 auf fallende Flanke setzen für letzten Puls
Return
T0_ovf:
Config Int0 = Rising 'Wieder auf steigende Flanke
Ch_cnt = 0 'Kanalzähler auf 0
'um auf dem Oszi einen Überlauf des Timers zu sehen
Porta.0 = 1
Waitus 25
Porta.0 = 0
Return
Lesezeichen