Forum: Mikrocontroller und Digitale Elektronik Bascom: int0 und int1 zu gleich. entprellen?


von Manuel (Gast)


Lesenswert?

hallo leute, ich will 2 frequenzen mit int0 und int1 meines mega16
messen.

zur zeit bastle ich noch an der software, die bei mir nicht so richtig
laufen will. ob es an meiner programmierung liegt oder an der hardware
versuche ich gerade rauszufinden.

ich lasse einen counter im hintergrund laufen und bei einem
flankenwechselbei intX wird halt zur entsprechenden intX_isr gesprungen
und ein flag gesetzt
im hauptprogramm versuche ich dann den timerwert zu sicher und durch
vergleich mit dem vorigen wert auszwerten.

das alles wird dann auf einem display angezeigt.


problem ist, daß wenn ein signal an int0 anliegt auch int1 rumspringt
(wert auf dem display) und andersrum.
auch haben die timewerte (die ja nur belegt werden wenn ein interrupt
ausgelöst wurde) schon vom programmstart an einen wert - auch wenn gar
noch gar kein signal anliegt.

ich lasse den mc per timer einen port toggln um damit eine frequenz zum
messen zu erzeugen als test.

dabei kann ich sehen, daß beim verbinden von intX-port mit dem
toggelnden port munter der andere intX-port teilweise "mitmacht"

hab hier schon im forum was von 3,3k pulldown an die beiden intX-Ports

gelesen, aber bei mir hats keinen erfolg gebracht.

deswegen meine frage, kann ich die intXports irgendwie optimieren was
stabiliät und signalqualität angeht?

anstreben tue ich freuquenzen im kiloherz-bereich, also noch nicht all
zu viel

Besten Dank
Manuel

von Axel Rühl (Gast)


Lesenswert?

Alles klar, ich nochmal...

wie mache ich das?
ich nehme einen Timer,stelle den auf ca. das 10fache meiner zu
erwartenedenen Frequenz und frage portD ab. Immer lang hin.
wenn jetzt am INT0 ein signal anliegt (achso, die Interrupts INT0 und
INT1 sind garnicht aktiviert) habe ich im pinb-register eine4 zu
stehen,ist am INT1-Pin was an, habe ich im PINB-Register eine 8 zu
stehen, sind gerade beide an eine 12 sind beide gerade nich an, eine 0.
jetzt brauchste aber die Flanke und nicht den Pegel, stimmts?
dann merkste dir den PINB-Zustand in einem Register und machst ein XOR
mit dem neuen Zustand. Danach nochmal das Ergebnis deiner
XOR-Geschichte mit den akuellen Zustand, und du hast die steigenden
Flanken der beiden Eingänge vom INT0 und vom INT1 als Ergebniss.
Wie gesagt, Codeschreiben muss jemand anners, ich mache mit FastAVR und
will hier niemenden langweilen.
Ich habe diese Problematik aufgreifen müssen, da ich eine Lüfteranzeige
programmieren musste. Da waren 3 Lüfter mit Ihren Tachosignalen, die
alle drei auf einem LCD dargestellt werden sollten, (also die
Drehzahlen).

Mach jut
AxelR.
Potsdam
Gruß an die Runde

von Axel Rühl (Gast)


Lesenswert?

na huch, du machst ja auch mit Basic rum, stand ja inder
Überschrift...ich such das mal raus. Ist ja fast gleich
AxelR.

von Manuel (Gast)


Lesenswert?

ja, wäre nett wenn du da waa finden könntest!
besten dank

Gruß Manuel

von Axel Rühl (Gast)


Lesenswert?

war gestern schon spät, die Datei ist auf meinem anderen rechner.
Übrigens in Assembler geschrieben, ist schon eine Weile her, da hatte
ich noch kein Basic. Kann ich aber erst die Tage 'rüberspielen, weil
mein ach so toller neuer Computer kein Diskettenlaufwerk hat. Habe ich
garnicht gemerkt! Aller annerer Sch.. ist drinn aber kein
DiskettenLaufwerk!
Also bis denne
AxelR.

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.