Forum: Mikrocontroller und Digitale Elektronik Externer Interrupt Beschaltung


von Christoph M. (hooch244)


Lesenswert?

Hallo zusammen,

habe eine kurze Frage zur Beschaltung des Interruptpins[INT0] eines
ATMEGA 16. Arbeite gerade mit einem Sensor der mir ein Signal an einen 
74HTC14(Schmitt-Trigger invertiert) liefert. Wenn ich diese Schaltung 
separat prüfe bekomme ich an einem Ausgang des 7414 0V bzw. 5V. Wenn ich 
diesen Ausgang direkt auf den ATMEGA 16 Interruptpin gebe bekomme ich 
nur eine Spannung von 0V bzw. 1,9V. Diese 1,9V reichen nicht um einen 
Interrupt auszulösen. Kann mir bitte jemand weiterhelfen und die interne 
Beschaltung dieses PINs erklären.

Vielen Dank

von Hc Z. (mizch)


Lesenswert?

Das deutet darauf hin, dass Du im Programm PD2 (INT0) als Ausgang 
initialisiert hast und 0 ausgibst.

Die interne Beschaltung steht zwar im Datenblatt, aber schau lieber erst 
in Deinem Programm nach.

von Christoph M. (hooch244)


Lesenswert?

Vielen dank für die schnelle Antwort.
Das ist richtig. Hab PD2 als Ausgang definiert. Im Datenblatt steht aber 
auch dass ich PD2 als Ausgang definieren muss wenn ich den externen 
Interrupt INT0 nutzen möchte.

von Karl H. (kbuchegg)


Lesenswert?

Christoph M. schrieb:
> Vielen dank für die schnelle Antwort.
> Das ist richtig. Hab PD2 als Ausgang definiert. Im Datenblatt steht aber
> auch dass ich PD2 als Ausgang definieren muss wenn ich den externen
> Interrupt INT0 nutzen möchte.

Wo genau?

Das ist unlogisch.
Ein Interrupt ist immer etwas, was von aussen an den µC herangetragen 
wird. Der Pin muss daher auf Input geschaltet sein. Bei manchen 
Funktionalitäten macht das die Hardware selbsttätig (zb wenn man den 
UART Empfangsteil einschaltet). Aber auf Ausgang schalten ist auf keinen 
Fall logisch. Wenn du so etwas liest, solltest du sofort stutzig werden. 
Ist es ein englisches Datenblatt, dann noch mal genau lesen, ob man sich 
nicht vertan hat und irgendwo ein not übersehen hat.

von Christoph M. (hooch244)


Lesenswert?

Ok,danke. Hat funktioniert. Werde das Datenblatt nochmal genauer lesen 
müssen.

von Hc Z. (mizch)


Lesenswert?

Wenn ich mich richtig erinnere, steht im Datenblatt, dass sich der INT0 
als software-generierte Interruptquelle nutzen lässt, wenn man ihn als 
Ausgang initialisiert.  Das heißt natürlich nicht, dass man es so machen 
muss.  Und natürlich kann der Pin dann nicht mit einem anderen Ausgang 
verbunden werden.

Scheint mir eh eine Funktionalität zu sein, für die es außerhalb 
akademischer Tempel keine sinnvolle Anwendung gibt.  Ein cli, gefolgt 
von einem (r)call zur Interruptroutine, machen dasselbe.

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.