Forum: Mikrocontroller und Digitale Elektronik Externe Interrupts


von Dieter G. (krnfxd)


Lesenswert?

Hi Leute,
ich möchte eine LED tooglen.Also wenn ich den Schalter lege(Kontakt an 
INT1 verbinde) soll er aus gehen und so bleiben.Nochmal: Soll an gehen 
und so bleiben.

Mit MCUCR ISC11=0 und ISC10=0 (the low level of INT1 generates an 
Interrupt) habe ich das bereits hingekriegt,in dem ich den PIN von INT1 
auf Input gestellt habe.

Will es aber mit allen möglichen Kombinationen aus ISC11 und ISC10 
hinkriegen.

Wenn ich ISC11=0 und ISC10=1(Any logical Change of INT1 generates an 
Interrupt). Dabei ist es egal ob ich den PIN von INT1 auf input oder 
output stelle.. die ISR wird ohne das ich was mache ständig aktiviert... 
die LED tooglet ständig von alleine..
Was mache ich falsch?

Das selbe Problem habe ich mit den steigenden/fallenden Flanken an den 
PIN von INT1.(Die beiden anderen Kombinationen aus ISC11 und ISC10).
Wie darf man steigende/fallende Flanke eigentlich  verstehen?
ggf. mit Beispielen erklärt wäre nice!!

Bedanke mich im Voraus!

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Dieter Glockenbach schrieb:
> Hi Leute,
> ich möchte eine LED tooglen.Also wenn ich den Schalter lege(Kontakt an
> INT1 verbinde) soll er aus gehen und so bleiben.Nochmal: Soll an gehen
> und so bleiben.

Mach es nicht über externen Interrupt, Thema Entprellung, gibts hier 
einen sehr guten Artikel dazu. Und man merkt, du hast die Suche nicht 
benutzt.

http://www.mikrocontroller.net/articles/Entprellung


MfG Dennis

von Jim M. (turboj)


Lesenswert?

> den Schalter lege(Kontakt an INT1 verbinde)

Blöde Idee. Schalter und Taster prellen, d.h. man muss sie in Software 
entprellen. Der externe Interrupt ist dafür nicht geeignet: Er wird beim 
Prellen sehr oft hintereinander aufgerufen.

>  [...] die ISR wird ohne das ich was mache ständig aktiviert

Schaltplan? Die Kristallkugel sagt: Offener Eingang fängt sich 
"Elektrosmog" ein und toggelt daher dauernd.

> steigenden/fallenden Flanken
1
Steigende Flanke: __/--
2
                     
3
4
Fallende Flanke:  --\__

von Dieter Glockenbach (Gast)


Lesenswert?

(Schreibe von nem anderen PC aus)

Ich möchte das nur zu Lernzwecken mit externen Interrupts machen.Deshalb 
fände ich es gut,wenn man doch auf meine Fragen eingeht.

Kannst du mir das genauer mit Elektronensmog erklären?^^
Und wieso taucht das gerade nur bei den Externen Interrupts auf?

Ich hab einfach nur ein freies Kabel direkt vor dem INT1 Pin und ein 
anderes auf GND.. und "schalte" die LED auf nem anderen PIN in dem ich 
beide Kabel einfach berühre..

von Cyblord -. (cyblord)


Lesenswert?

> Kannst du mir das genauer mit Elektronensmog erklären?^^
> Und wieso taucht das gerade nur bei den Externen Interrupts auf?

Kurz:
Der Port darf nie offen sein. Also mach einen Pullup oder Pulldown 
Widerstand hin. Und das tritt bei ALLEN offenen Eingängen auf. AVRs 
haben eingebaute PullUp Widerstände. Die kann man auch nehmen.

von Dieter Glockenbach (Gast)


Lesenswert?

Gehen externe Interupts überhaupt mit z.b. INT1 als Output-PIN?

von Cyblord -. (cyblord)


Lesenswert?

Dieter Glockenbach schrieb:
> Gehen externe Interupts überhaupt mit z.b. INT1 als Output-PIN?

Wieso denn jetzt Output-Pin? Der sollte natürlich Eingang sein. KA was 
du meinst.
Ich rate dir, poste mal deinen kompletten(!) Code und den Schaltplan.

von Dieter G. (krnfxd)


Lesenswert?

#include <avr/io.h>
#include <avr/interrupt.h>


int main(void)
{
sei();
DDRB |= (1<<DDB2);  // hier liegt die LED
PORTB |= (1<<PB2);
DDRD &= ~(1<<DDD3);  //hier liegt das Kabel
GIMSK |= (1<<INT1);
MCUCR |= (1<<ISC10);


    while(1)
    {

    }
}

ISR(INT1_vect)
{
  PORTB ^= (1<<PINB2);
}

___________________________________________________________
Atmega 8:
PB2-----LED----GND
PD3-----O      O--------GND
Also das sind die zwei Kabel.. das "o" stellt die Enden der Kabel dar.

von Cyblord -. (cyblord)


Lesenswert?

Sieht mal gut aus alles. Jetzt machst du noch:
1
PORTD |= (1<<PD3);  //Pullup Aktivieren

Und testest nochmal.
Jezt ist der Pullup aktiviert und der Port hat High-Pegel solange er 
offen ist. Wenn du ihn mit GND verbindet bekommt er Low-Pegel.


gruß cyblord

von Dieter G. (krnfxd)


Lesenswert?

Omg ja natürlich.. total vergessen..
jetzt klappt es mit allem^^

Danke.

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.