externe Interrupts( Ansprechverhalten im INT1 ändern)

Gast #630118
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?
Gast
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
Gast
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
Gast
Ich denke mal, der Fototransistor wird nicht hochohmig genug. Das kann 
durch Resthelligkeit, Reststrom oder andere "Dreckeffekte" passieren.
Einfach mal messen!
Gast
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
Gast
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.
Gast
>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.
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.