Hallöchen zusammen, ich möchte bei einem AtMega328 einen externen Interrupt bei steigender Flanke auslösen. Das Signal kommt von einem Operationsverstärker. Dessen Ausgang führt direkt auf den Interrupt Pin (PD2). Mein Problem ist nun, dass wenn die Flanke kam der Pin PD2 nicht mehr direkt auf LOW zurückfällt, bzw. erst nach einiger Zeit. Wenn ich mit dem Oszi messe, sieht man das wenn ich die Leitung von uC trenne, dass Signal sich verhält wie es soll, nur am uC angeschlossen eben nicht. Hier die Initialisierung: void EnableExternInterrupt0(){ EIMSK |= (1<<INT0); // External Interrupt Request 0 enable EICRA |= (1<<ISC01) | (1<<ISC00);// The rising edge of INT0 generates an interrupt request. } Hat jemand ne Idee? Gruß Tobi
Tobi schrieb: > Hat jemand ne Idee? Ja. Poste mal bitte wenigstens eine Schaltplan Auszug des Opamp Teils und den Teil des Programmes, in dem du die Ports initialisierst. Übersteuerte Opamps kleben gerne mal an den Betriebsspannungsgrenzen.
:
Bearbeitet durch User
Das ist ja klar. Das ist ein CMOS IC. Dessen Eingänge wirken wie Kondensatoren. Wenn du da mal kurz Spannung drauf legst und dann die Leitung trennst, dann bliebt der Kondensator noch lange geladen. Und irgendwann wirst du eine zufälligen Pegel haben, weil a) Die Spannung im illegalen Bereich zwischen 1V und 3V liegt, oder b) Der Eingang Radiowellen empfängt, denn er ist sehr hochohmig. Beschäftige dich mal mit pull-up und pull-down Widerständen, damit kannst du dein Problem vermutlich lösen.
Ah, das klingt schon mal einleuchtend. Kompletten Schaltplan gibts nicht nicht. Existiert gerade nur auf dem Steckbrett aber so wie auf dem Bild ist das ganze verschaltet. OP ist mit 5V und GND verbunden. Initialisierung ist wie im ersten Post und zusätzlich noch: DDRD = 0; PORTD &= ~(1<<PD2); // Pull Up an PD2 = INT0 aktivieren Vielen Dank schonmal
Stefan U. schrieb: > Das ist ja klar. Das ist ein CMOS IC. Dessen Eingänge wirken wie > Kondensatoren. Wenn du da mal kurz Spannung drauf legst und dann die > Leitung trennst, dann bliebt der Kondensator noch lange geladen. Und > irgendwann wirst du eine zufälligen Pegel haben, weil Sowas habe ich auch schon gedacht und einen Pull Down Widerstand (10k) an die Leitung gehängt. Hat aber nichts geändert. Oder verstehe ich was falsch?
LM358 und µC werden beide aus den selben 5V-Supply versorgt? Tobi schrieb: > Mein Problem ist nun, dass wenn die Flanke kam der Pin PD2 nicht mehr > direkt auf LOW zurückfällt, bzw. erst nach einiger Zeit. > Wenn ich mit dem Oszi messe, sieht man das wenn ich die Leitung von uC > trenne, dass Signal sich verhält wie es soll, nur am uC angeschlossen > eben nicht. kannst du die Oszi-Messungen mal zeigen?
Tobi schrieb: > PORTD &= ~(1<<PD2); // Pull Up an PD2 = INT0 aktivieren Die Programmzeile macht allerdings das genaue Gegenteil des Kommentars - sie schaltet den Pullup aus. Der Opamp ist als Komparator keine gute Wahl. Er ist, wie ich oben schon vermutete, völlig übersteuert (du hast ihn ja auf theoretisch unendliche Verstärkung geschaltet) und deswegen braucht er recht viel Erholungszeit. Wenn du ihn durch einen LM393 (der ist pinkompatibel) Komparator ersetzt, dann sollte das recht gut klappen. Der LM393 braucht allerdings zwingend einen Pullup, den du entweder im AVR aktivieren solltest oder besser, mit einem externen Widerstand machst.
Oh man... Matthias. Danke! Das wars :) Hatte mir sogar extra nen 393er besorgt. Dachte aber, dass dieser kaputt wäre (Pullup Widerstand?? Datenblatt?????) und hab deshalb den Op benutzt. Naja zumindest was über OPs gelernt ;) Vielen Dank an alle! Grüße
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.