Hallo, ich möchte einen externen Interrupt auslösen (INT0 beim ATTINY85) und habe PORTB mit 0xFF initialiesiert und springe dann auf PORTB = 0 (fallende Flanke). Der Port macht exakt das, was ich möchte - ich kriege aber keinen externen Interrupt zustande... Was mache ich falsch? Konfiguriert habe ich den externen Interrupt so: /* The falling edge of INT0 generates an interrupt request */ sbi(MCUCR,ISC01); /* Interrupt Freischaltung INT0 -> Speed */ sbi(GIMSK,INT0); /* Schaltet den Interrupt frei */ sei(); Könnt ihr mir weiterhelfen?
Hi >ich möchte einen externen Interrupt auslösen (INT0 beim ATTINY85) und >habe PORTB mit 0xFF initialiesiert und springe dann auf PORTB = 0 >(fallende Flanke). Bezieht sich die Frage auf das Stimuli-File? MfG Spess
Du hast schon ganz viele Fragen von mir beantwortet, deshalb kein Wunder, dass Du durcheinander kommst :-) Jein. Ich weiss es nicht. PORTB = 0 funktioniert. Der Simulator macht es -> aber trotz fallender Flanke am PIN INT0 springt der Simulator nicht in die Interrupt Routine sondern macht einfach weiter. Wie gesagt: den PIN hat er verändert... Kann es sein, dass ich besser ein Interruptflag setzen sollte, anstatt den PORTB zu bewegen?
Hi >Kann es sein, dass ich besser ein Interruptflag setzen sollte, anstatt >den PORTB zu bewegen? Hast du es schon mal mit dem Eingangsregister PINB versucht? MfG Spess
Ja klar! Mann, PortB ist ja auch dämlich. Steht ja überall. Habs getestet. Funktioniert. Danke Dir vielmals!!!
Hi
>Danke Dir vielmals!!!
Nichts zu danken. Mit größerem Abstand zu Problem nimmt auch die
Betriebsblindheit ab.
MfG Spess
So, hoffentlich letzte Frage: :-) Mein Stimuli File sieht so aus: #1 PINB = 0xFF #2000000 PINB = 0x00 Dann kriege ich einen Interrupt nach 2000000 Zyklen. Soweit alles ok. Jetzt resette ich den Prozessor, Baue evtl. alles nochmal neu, lade das Stimuli File nochmal rein (leider muss man das jedes mal machen) und lasse das Ding wieder laufen (vorher noch schnell Reset Cycle Counter gemacht). Und siehe da: Er stoppt erst bei 4000000 Zyklen. und das nächste mal bei 6000000. Dabei ist die Simulationsdauer nicht etwa konstant, so dass man davon ausgehen kann, dass er einfach weiter macht. Nein es dauert jedesmal deutlich länger... Merkt AVR sich da irgendwas oder ist das ein Bug??? Gruß
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.