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...