Was ist denn dein Problem mit den zu kurzen Impulslängen? Wie zählst Du die?
Nur per Software und ner Abfrage an nem Port? Das könnte schiefgehen und das Ding könnte sich verschlucken. 30ms sind zwar ne Ewigkeit, aber manchmal langt es halt doch net um rechtzeitig da zu sein.
Bei softwaretechnischem Round-Robin und zusätzlich womöglich non-preemptive Multitasking (heut fast nur noch im µC-Bereich) muss das schief gehen!
Die auslesende am besten hardwaretechnisch zu realisierende) Instanz muss flankengetriggert sofort da sein und net nur gelegentlich vorbei schauen, wie es mit dem Pegel grad ist.
Die Software fragt dann nur gelegentlich (notfalls über nen über nen durch ne High-Watermark ausgelösen Interrupt) nach, was zwischenzeitlich passiert ist - Verstehste?
Erklär das mal genauer, denn Pulsbreiten verlängern ist meist die schlechteste Lösung - Denn schlimmstenfalls gibt es Überschneidungen der Impulse.
Aufgeschaltete Kondensatoren machen dir obendrein die Flanken kaputt und die sind wichtig, wenn man saubere und eindeutige Ergebnisse haben will.
Viele Grüße,
Uli