Forum: Mikrocontroller und Digitale Elektronik Externen Interrupt über AVRSim2 auslösen


von dost0011 (Gast)


Lesenswert?

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?

von spess53 (Gast)


Lesenswert?

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

von dost0011 (Gast)


Lesenswert?

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?

von spess53 (Gast)


Lesenswert?

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

von dost0011 (Gast)


Lesenswert?

Ja klar! Mann, PortB ist ja auch dämlich. Steht ja überall.
Habs getestet. Funktioniert.
Danke Dir vielmals!!!

von spess53 (Gast)


Lesenswert?

Hi

>Danke Dir vielmals!!!

Nichts zu danken. Mit größerem Abstand zu Problem nimmt auch die 
Betriebsblindheit ab.

MfG Spess

von dost0011 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.