bascom:pulslängenerfassung bei 2 unterschiedlichen signalen

Gast #90191
Lesenswert?

hallo leute, wollte die frequenzen messen von zwei unterschiedlichen
leitungen zur selben zeit.

da es aber nur einen icp-pin gibt, müßte was anderes her.
ich hab zwar schon mit den bascom-eigenen sachen was probiert, aber die
funktionieren bei mir nicht (mc hängt) hat einer ne andere idee oder
kann bestätigen,daß es mit den von bascom vorgestellten varianten
(heißen wohl pulsin.bas und pulsin2.bas) funktioniert?
da bei dem ende des function-blocks "end sub" anstatt von "end
function"  steht,macht die sache nicht vertrauenswürdiger...

Gruß Kai
Gast #90192
Lesenswert?

Hi,

Du lässt einen Timer laufen, der garantiert seltener überläuft, als die
Impulse kommen.
Dann schliesst Du die Impulse an INT0 und 1 an.
Bei Flanke wird ein Interrupt ausgelöst.
In der ISR setzt Du ein Flag und schreibst den Stand des Timers in eine
Variable (time0 bzw time1).

Im Hauptprogramm fragst Du ständig die Flags ab.
Wenn eines gesetzt ist folgendes:
If time0 < oldtime0 then
                  zeit0 = 65536-oldtime0
                  zeit0 = zeit0 + time0
              else
                  zeit0 = time0 - oldtime0
              end if
oldtime0 = time0
flag0 = 0

Ersteres ist ein Überlauf des Timers.

Gruß,
Norbert
Gast #90194
Lesenswert?

Hi,

Ja, der Timer läuft ungerührt im Hintergrund und wenn eins der Signale
auftritt wird der Stand des Timers in time0 bzw time1 geschrieben und
das Flag0 bzw Flag1 gesetzt.

Dann fragst Du im Hauptprogramm immer die Flags0 bzw 1 ab und wenns
gesetzt ist berechnest Du wie oben beschrieben die Zeit vom letzten
Ereignis (oldtime0 bzw 1) zum aktuellen Ereignis (time0 bzw 1).

Gruß,
Norbert

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren