Hallo,
soetwas hab ich auch schon mal gemacht:
Code:
Dim Puls(10) As Word 'Syncimpuls plus 9 Servos
Dim Kanal As Byte
Kanal = 1
On Icp1 Messen Nosave 'Pulslänge messen mit ICP-Eingang
On Ovf1 Kreset Nosave 'Kanalzähler rücksetzen
Config Timer1 = Timer , Prescale = 1 , Capture Edge = Rising 'rising oder falling anpassen an das Signal
Enable Ovf1 'Overflow-Interrupt
Enable Icp1 'Capture-Interrupt
Enable Interrupts
Cursor Off
Cls
Do
Locate 1 , 1
Lcd Puls(2) ; " " ; Puls(3) ; " " ; Puls(4) ; " " 'Puls(2) ist Kanal 1, Puls(3) ist Kanal 2 usw.
Locate 2 , 1
Lcd Puls(5) ; " " ; Puls(6) ; " " ; Puls(7) ; " " 'Puls(x)=4000 entspricht 1ms, 8000 entspricht 2ms... (4 Mhz Prozessortakt)
Loop
Messen:
push r10
push r11
push r24
push r25
push r26
push r27
in r24,sreg
push r24
Puls(kanal) = Timer1
Timer1 = 50000 'gilt für 4 Mhz Prozessortakt
Incr Kanal
pop r24
!Out Sreg , R24
pop r27
pop r26
pop r25
pop r24
pop r11
pop r10
Return
Kreset:
push r24
in r24,sreg
push r24
Kanal = 1
pop r24
!Out sreg,r24
pop r24
Return
End
So funktioniert das ganze fehlerfrei.
Das ist mein erster Beitrag, mitlesen tue ich schon lange. Meine Interessen sind hauptsächlich Modellbau/Modellflug und AVR Microcontroller.
Gruß
Günter
Lesezeichen