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?
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
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
Ich denke mal, der Fototransistor wird nicht hochohmig genug. Das kann durch Resthelligkeit, Reststrom oder andere "Dreckeffekte" passieren. Einfach mal messen!
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
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
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.
>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.
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!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.