PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : aussteigen aus SIGNAL (SIG_OVERFLOW0)



pebisoft
27.04.2005, 18:47
hallo, ich habe ein signal SIGNAL (SIG_OVERFLOW0) auf 64us gesetzt.
wenn ich jetzt in dieser routine eine for-schleife habe, die länger als 64us sekunden, was macht die interrupt-routine mit der schleife in der interrruptroutine.
mfg pebisoft

Felix G
27.04.2005, 19:18
Was passiert weiss ich nicht...

Aber es gibt ein paar Grundregeln die man bei Interrupts unbedingt beachten sollte:
(dann hat man solche Probleme garnicht)
- niemals mehr Befehle als zwingend notwendig in die Interruptroutinen stecken
- wenn überhaupt, dann nur sehr kurze Funktionen innerhalb einer ISR aufrufen


Bei einem ADC-Interrupt z.B. liest man nur den neuen Wert ein, schreibt ihn in irgendeine Variable und verlässt die ISR sofort wieder...
Irgendwelche Berechnungen o.ä. erledigt man dann in Ruhe im Hauptprogramm

lekro
28.04.2005, 22:46
AFAIK ist das Interrupt-Enable-Flag in Interruptroutinen standardmäßig gelöscht (als ob cli() am Anfang der Routine stehen würde). D.h., unterbrochen wird deine Routine sicher nicht.
Aber sorg lieber dafür, dass deine Schleife niemals so lange dauert, oder noch besser: positionier die Schleife außerhalb der Interruptroutine. Dann hast du solche Probleme nicht, wie Felix schon gesagt hat.