Forum: Mikrocontroller und Digitale Elektronik externe Interrupts( Ansprechverhalten im INT1 ändern)


von Reinhold Bruder (Gast)


Lesenswert?

Hallo Freunde!

ich verwende die Externen Interrupts. Der INT1 löst bei einer postiven 
Flanke aus(1mal)... dann möchte ich im Interrupt das Ansprechverhalten 
auf negative Flanken umstellen.



SIGNAL (SIG_INTERRUPT1)
{
........
EICRA|= (1<<ISC11)|(0<<ISC10); //INT1 löst bei jeder pos. Flanke aus
.....
}//ende INT1


int main
{........
// irgendwo in INIT
EIMSK|= (1<<INT1);//aktiviere INT1
EICRA|= (1<<ISC11)|(1<<ISC10); //INT1 löst bei jeder positiven Flanke 
aus
sei();
.......
}

was mache ich falsch?

denn beim ersten Durchlauf wird das Ansprechverhalten(negative Fl. löst 
INT1 aus) nicht geändert?

von Steffen (Gast)


Lesenswert?

statt
1
 EICRA|= (1<<ISC11)|(0<<ISC10);

verwendest du den Zeile
1
 EICRA&= (1<<ISC11)|(0<<ISC10);

durch die log. ODER Verkünpfung ändert du das Verhalten nicht

von Jojo (Gast)


Lesenswert?

morgen!

ich wollte nicht extra ein neues thema aufmachen, und ich glaube, daß 
meine frage ganz schnell geklärt werden kann. hab irgendwie n brett vor 
kopf!

mein aufbau ist einfach: fototransistor mit collector an int0 und 
emitter auf gnd. das soll dann auf steigende flanken ansprechen (wenn 
was in den fototransi bedeckt). tut es auch, aber nur mit nem externen 
pullup. wie kann ich mit den externen interrupts die internen pullups 
benutzen oder geht das nicht? hab das entsprechende ddr auf 0 (eingang) 
und den port auf 1 (normalerweise pullups an).

würde mich über eine schnelle lösung freuen :)

danke und viele grüße,
Jojo

von Route_66 (Gast)


Lesenswert?

Ich denke mal, der Fototransistor wird nicht hochohmig genug. Das kann 
durch Resthelligkeit, Reststrom oder andere "Dreckeffekte" passieren.
Einfach mal messen!

von Jojo (Gast)


Lesenswert?

Hi nochmal und danke für die Antwort!

Also gemessen hab ich schon. Durchgeschaltet messe ich über dem 
IR-Fototransistor 0,3-0,5 V und sperrend volle 5V. Müsste von den Werten 
her also reichen, um High und Low Pegel zu erkennen. Tut es ja auch. Wie 
gesagt, mit externem Pullup funktioniert das ja auch super. Wenn er 
nicht verdeckt wird hab ich low-level an dem Pin, und wenn was 
dazwischen kommt wird er hochohmig genug, daß high erkannt wird (mit nem 
ext. Pullup von 0,5k). Ich weiß, daß das zu wenig ist, aber ich hatte 
grad nix anderes griffbereit ;) ...
Bei offen gelassenem Pin (der dann ja eigentlich durch den internen 
Pullup high-level haben sollte) werden außerdem unvorhersehbar 
Interrupts ausgelöst. Das verstärkt meinen verdacht, daß der interne 
Pullup nicht aktiviert ist...

Ich wollte meine Schaltung auch nicht zu eurem Problem machen :) . Ich 
wollte nur wissen, wie/ob ich die internen Pull-Ups benutzen kann, wenn 
der Pin für externe Interrupts benutzt werden soll. Laut Datenblatt 
sollten die internen Pullups 20-50k haben. Aber wenn ich vom 
Interrupt-Pin nach Vcc messe ist der Widerstand außerhalb des messbaren 
Bereichs.

Danke nochmal und vG,
Jojo

von Jojo (Gast)


Lesenswert?

Ich konnte im Datenblatt dazu nichts finden... werden die internen 
Pullups automatisch zu- oder weggeschaltet, wenn man das 
Ansprechverhalten der Interrupts ändert? Mein Interrupt soll ja auf 
steigende Flanken ansprechen. Werden da die internen Pullups vielleicht 
automatisch deaktiviert? Weil die machen ja am meisten Sinn, wenn der 
Interrupt auf fallende Flanken ansprechen soll... grübel 

VG

von Johannes M. (johnny-m)


Lesenswert?

Jojo wrote:
> Werden da die internen Pullups vielleicht
> automatisch deaktiviert?
Nein. Es gibt nur ganz wenige Peripheriefunktionen, deren Aktivierung 
die Einstellungen von PORTx bzw. DDRx überschreibt, und die 
Interrupt-Eingänge zählen nicht dazu.

von Klaus (Gast)


Lesenswert?

>Ich konnte im Datenblatt dazu nichts finden... werden die internen
>Pullups automatisch zu- oder weggeschaltet, wenn man das
>Ansprechverhalten der Interrupts ändert?

nein

>Weil die machen ja am meisten Sinn, wenn der
>Interrupt auf fallende Flanken ansprechen soll... grübel

quatsch

die Flanke ist dem Pullup (Portpin) völlich egal.

von Jojo (Gast)


Lesenswert?

Klar ist dem Pullup die Flanke egal, das ist schon klar. Aber einer der 
ersten Gedanken "könnte" ja sein: warum soll der Pullup aktiviert sein, 
wenn der auf positive Flanken ansprechen soll, weil der ist dann ja 
immer high... War ja auch nur ein Gedanke, weil es halt nicht so 
funktioniert, wie ich es mir vorgestellt habe.
Aber ok, wenn die Pullups nicht durch das Einstellen der Interrupts 
verändert werden bin ich schon mal weiter... danke erstmal!

von Johannes M. (johnny-m)


Lesenswert?

Jojo wrote:
> Klar ist dem Pullup die Flanke egal, das ist schon klar. Aber einer der
> ersten Gedanken "könnte" ja sein: warum soll der Pullup aktiviert sein,
> wenn der auf positive Flanken ansprechen soll, weil der ist dann ja
> immer high...
Bitte was? Bei einem Open-Collector-Ausgang oder einem normalen 
Schalter/Taster ist es völlig wurscht, ob der eine fallende oder eine 
steigende Flanke erzeugen soll. Er braucht in beiden Fällen ein 
definiertes Potenzial in beiden Zuständen.

von Jojo (Gast)


Lesenswert?

ist klar! darum war ich verwundert, DASS es nicht funktioniert hat. Aber 
wie gesagt, ist geklärt und damit ist auch gut.

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.