Forum: Mikrocontroller und Digitale Elektronik Externe Interrupts Tiny2313 mach nicht was er soll in C


von Tino (Gast)


Angehängte Dateien:

Lesenswert?

Hi zusammen,

ich hatte mir ein Komplexeres Programm geschrieben für eine kleine 
Garagenalarmanlage. Leider funktionierte es überhaupt nicht. Nach testen 
stellte ich fest das der Externe Interrupt überhaupt nicht macht was er 
soll.
Habe den Tiny2313 auf 128K internen Timer laufen, damit er schön wenig 
Strom verbraucht und noch einen Sleeper aktuell programmiert.

So:
Ich habe den externen Interrupt über das GIMSK Register freigeschaltet 
und auch die Interrupts über den sei() Befehl. Dazu habe ich noch PORTD2 
gesetzt (ist der für den ext. Int0), damit dieser Intern High anlegt, da 
ich diesen über Masse setzen möchte (Deswegen ist auch in MCUCR nichts 
gesetzt, da ISC00 und ISC01 dafür 0 sein müssen). Der externe Interrupt 
kann also kommen.

Wenn ich das Gertät Einschalte und habe PD2 auf Masse leuchten alle LEDS 
PB0-2. Ziehe ich PD2 von Masse ab und lege es wieder drauf passiert 
nichts, egal ob ich es wiederhole. Schlussfolgerung. Er geht jetzt 
ständig in den Interrupt rein. Egal ob Masse am Interrupt Eingang oder 
nicht.

Wenn ich das Gerät nun Einschalte und lege am PD2 direkt an High, geht 
das Gerät auch nicht in den Interrupt und nur PB1 leuchtet, danach geht 
er in Sleep Mode (glaube ich).
Entferne ich jetzt die Brücke von High sollte eigentlich ncihts 
passieren, da er ja intern auf High geschaltet sein sollte. Jetzt 
leuchten allerdings auch noch PB0 und PB2 in High. Er macht also wieder 
ständig Interrupts (glaube ich). Ziehe ich jetzt  PD2 von High ab und 
stecke es wieder drauf, leuchtet PB0 oder PB2 (so wie es sein soll). 
Dummerweise ist das Problem das er ja auch Masse reagieren soll und 
nicht auf High.

Weiß jemand warum er auf High statt auf Masse reagiert? Auch wenn ich 
andere Kombinationen im MCUCR einstelle folgt kein Unterschied. 
Ebenfalls macht mich stutzig das manchmal alle leuchten. Heißt das ich 
habe keinen definierten Eingang an PD2 sobald ich High abziehe. Würde 
daraus schlussfolgern das Portd nicht richtig konfiguriert ist.


Danke für Hinweise/Hilfen.

VG

Tino

von spess53 (Gast)


Lesenswert?

Hi

>(Deswegen ist auch in MCUCR nichts
>gesetzt, da ISC00 und ISC01 dafür 0 sein müssen). Der externe Interrupt
>kann also kommen.

Dir ist aber bewusst, das dann Interrupts ausgelöst werden, solange der 
PIN auf Masse liegt.

MfG Spess

von Tino (Gast)


Lesenswert?

Er wird ja gerade nie ausgelöst bei Gnd. Es passiert immer nur was wenn 
ich den auf High lege, abziehe und wieder auf high. Wenn ich auf Ground 
anlege gibt es keine Wirkung... :(

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.