Externen Interrupt über AVRSim2 auslösen

Gast #2653340
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?
Gast #2653363
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?
Gast #2653459
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ß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren