Forum: Mikrocontroller und Digitale Elektronik bascom:pulslängenerfassung bei 2 unterschiedlichen signalen


von Kai (Gast)


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

von Norbert (Gast)


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

von Kai (Gast)


Lesenswert?

mh, und ich kann mit einem timer 2 signale zu gleich messen?

von Norbert (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.