Forum: Mikrocontroller und Digitale Elektronik Interrupt (INT0) wird nicht ausgelöst


von Zoltan (Gast)


Lesenswert?

Hallo,

Ich möchte mit Hilfe des PD2 (at90s4433, INT0) Eingangs Servo-Pulse 
messen. Mein Problem ist, dass der Interrupt nur auselöst wird, wenn ich 
mein Finger auf die Schaltung, bzw. auf den(die) PIN(s) mit dem 
Interrupteingang lege. Wenn ich meine Hand nun entferne läuft das 
Programm, von 0..bis max 1 Sekunde weiter, bis die einkommenden Siganle 
wieder nicht mehr erkannt werden. Weis jemand, woran das liegen könnte?

Danke
Zoltan

von Rainer (Gast)


Lesenswert?

Wackelkontackt/kalte Lötstelle?

von Zoltan (Gast)


Lesenswert?

Es ist definitiv kein Wackler oder kalte Lötstelle. Trotdem danke für 
den Tipp.

Wenn ich an den benachbarten Ports PD0,PD1 den UART anschliesse, werden 
die Interrupts, nachdem ich die Schaltung wieder unten angetippt habe, 
erkannt. So aber brechen die Signale nicht mehr nach eine Sekunde ab.

Ich poste hier mal einen Teil des Programmes, vielleicht liegt es ja 
daran.

outp(0x00, DDRD);        // use PortD PIN2 for input (signal)
outp(0x04, PORTD);   // pull up PIN2

outp((1<<INT0), GIMSK); // enable external int0 (PD2)
outp((0<<ISC01)|(1<<ISC00) , MCUCR);
          // any logical change creates interrupt0
Vcc 5V
GND 0V
Agnd 0V
Aref (poti-->) 4V
Avcc 10uH+100nF "Analog Ground Plane"

von Zoltan (Gast)


Lesenswert?

Hat sich erledigt!
Mein Programm hat sich nach dem Start immer aufgehängt, daran lag es. 
Mit dem Interrupt war alles in Ordnung.

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.