Forum: Mikrocontroller und Digitale Elektronik LPC2103 ARM7 IRQ und FIQ Probleme


von henning (Gast)


Lesenswert?

Guten Abend,

ich klemme gerade hinter µVision und bin etwas genervt.
Ich habe einen FIQ auf den Timer 2 gelegt. Alle x ms wird eine Messung 
durchgeführt und etwas rumgerechnet. Klappt auch wunderbar.
Jetzt wollte ich mit Oversampling arbeiten und nur nach jeder vierten 
Messung die Berechnungen durchführen. Da die Berechnung zu lange dauert, 
um sie im FIQ der Messung durchzuführen habe ich die Berechnung in einen 
Software-Interrupt auslagern wollen. Nach jeder vierten Messung wird am 
Ende des FIQ ein Software-IRQ ausgelöst, der nach dem Beenden der 
FIQ-Routine auch abläuft. Wenn die Samplingrate so gering ist, dass der 
nächste FIQ erst nach der Beendigung der Software-IRQ-Routine ausgelöst 
wird, klappt alles wunderbar. Wird die Samplingrate höher unterbricht 
der FIQ wie geplant den Software-IRQ und geht danach wieder dahin 
zurück, aber am Ende des Software-IRQs wird in den Programmcouter 
0x4000'0004 geladen und das wars.

Initialierung
1
VICIntSelect = 0x04000000;
2
VICIntEnable |= 0x04000000; 
3
VICVectAddr0 = (unsigned int) &filter;
4
VICVectCntl0 = 0x20 | 31; 
5
VICIntEnable |= 0x80000000;

Ende Software-IRQ
1
VICSoftIntClr = 0x80000000;  
2
VICVectAddr = 0;

Ich hoffe auf schnelle Hilfe :-)
Vielen Dank
Henning

von Andreas K. (a-k)


Lesenswert?

Zu Fehlerbeschreibungen mit Codefragmenten dieser Art gibt es eine 
Daumenregel: Läge der Fehler exakt dort wo du ihn vermutest, dann 
hättest du ihn wohl selber schon gefunden. Also solltest du auch jene 
Teile offenlegen, wo du ihn selber nicht unmittelbar vermutest.

Mein erster Gedanke: FIQ Stack zu klein/vergessen und der überlappt 
daher mit den IRQ-Stack.

von henning (Gast)


Lesenswert?

Wieso geht doch auch so, NAchdem ich auch im startup.s die Wörtchen 
FIQ_Stack ... 0 gelesen habe hat es auch nach ändern des Wertes 
geklappt.

Dankeschön

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.