INT0 zieht pin auf High

Gast #4504656
Lesenswert?
• ▲
▼
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
Gast #4504665
Lesenswert?
• ▲
▼
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.
Gast #4504686
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
Gast #4504688
Lesenswert?
• ▲
▼
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?
Gast #4504706
Lesenswert?
• ▲
▼
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?
(Firma: matzetronics) #4504707
Lesenswert?
• ▲
▼
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.
Gast #4504735
Lesenswert?
• ▲
▼
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

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