Gast
#523818
Hallo Leute. Ich bin dabei mich in AVRs einzuarbeiten und wollte ein kleines Timingexperiment machen. Dazu habe ich zwei Tasten an die INT0 und INT1 Pins eines ATMega16 geklemmt und lasse mit der einen einen Multiplikator incrementieren, so das bei dem anderen nach Verstreichen einer Zeit 10ms*multiplikator eine LED angeht. Nicht wundern warum ich den Int genommen habe, ich hab absichtlich keine Entprellung genommen, da ich subjektiv testen will wieviel Reaktionszeit durch den Nutzer erkannt wird. Meine Frage ist folgende: Ich benutze AVR Studio mit GCC und bei Eintritt in die ISR werden die Ints gesperrt. Wenn ich den Int nun auf fallende Flanke konfiguriere, so wird die ISR zwei mal ausgeführt, obwohl laut Simulation bereits beim Springen zum INT Vector das I Flag gelöscht wird. Kann mir das einer erklären? Der Compiler sichert vor Ausführen der ISR noch einige Register, in der Simulation ist da aber schon (wie gesagt) das I Flag 0...