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
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
na huch, du machst ja auch mit Basic rum, stand ja inder Überschrift...ich such das mal raus. Ist ja fast gleich AxelR.
ja, wäre nett wenn du da waa finden könntest! besten dank Gruß Manuel
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.