Dann müsste man ja sagen <=6? richtig? also dann für 12 Kanäle auch <=12 ?
...genau, oder < 13. Ich weiß nicht, ob das auf ASM-Ebene einen Unterschied macht.
20ms sind 20ms und die beleiben auch so (außer FASST da sind es 16ms)
Den hab´ ich allerdings nicht vertanden. Macht aber auch nix 
Ich hab das mit den Summensignalen immer mit einem auf Change konfigurierten Interrupt gemacht. In der ISR wird dann abgefragt, ob die Flanke steigend (Eingang High) oder fallend war. Je nachdem wurde der Timer entweder gestartet, oder aber angehalten, ausgelesen, zurückgesetzt und der Kanalzähler um 1 erhöht. Und bei einem Timer-Überlauf wurde der Kanalzähler auf 1 zurückgesetzt.
Also etwa so:
Code:
Config INTX = change
On INTX Flanke
Enable INTX
Enable Interrupts
Config timer0=timer, prescale = XX
On timer0 Synchronimpuls
enable timer0
Dim Impuls(12) as word
Dim Channel as Byte
Channel =1
Do
...
...
Loop
Flanke:
If PINX.Y = 1 then
Start Timer0
Else
Stop Timer0
Impuls(Channel) = Timer0
Timer0=0
Channel = Channel + 1
End if
Return
Synchronimpuls:
Stop timer0
Timer0=0
Channel = 1
Return
Hat eigentlich immer bestens funktioniert...
Lesezeichen