Hallo zusammen,
Das mit dem Array habe ich ausprobiert, und es hat funktioniert, das Störende waren wirklich die print Anweisungen.
Es reicht wenn man eine Flanke misst, da die low Zeiten immer gleich lang sind, und es somit egal ist auf welche Flanke man misst.
Ich habe den ATMEGA 16 auf 8Mhz.
Den Code von Günther konnte ich leider mangels freiem ICP nicht probieren.
Vielen Dank
CountryYankey
Hier noch der Code der jetzt funktioniert:
Code:
Config Timer1 = Timer , Prescale = 64
Enable Timer1
On Timer1 Ueberlauf1
Enable Interrupts
Config Int0 = Falling
Enable Int0
On Int0 Auslesen
N = 0
Do
Waitms 1000
Print Kanal(1) ; " Kanal1"
Print Kanal(2) ; " Kanal2"
Print Kanal(3) ; " Kanal3"
Print Kanal(4) ; " Kanal4"
Print Kanal(5) ; " Kanal5"
Print Kanal(6) ; " Kanal6"
Print Kanal(7) ; " Kanal7"
Print Kanal(8) ; " Kanal8"
Print Kanal(9) ; " Kanal9"
Loop
End
Auslesen:
Kanal(n ) = Timer1
Timer1 = 0
If Kanal(9) < 1000 Then N = 8
Incr N
If N = 10 Then N = 1
Return
Ueberlauf1:
Print "!"
Return
Lesezeichen