Forum: Mikrocontroller und Digitale Elektronik Timerinterrupt Problem bei ARM7 LPC2106


von Josef H (Gast)


Lesenswert?

Hallo Leute, ich hab schon fleißig im Forum gesucht, hab aber leider für 
mein Problem keine Lösung gefunden. Daher hoffe ich, dass mir irgendwer 
weiterhelfen kann. Hab leider mit ARM Kontrollern noch keine Erfahrung.

Ich versuche schon seit längerer Zeit bei einem LPC2106 den Timer0 so zu 
konfigurieren, dass dieser bei 5 Mikrosekunden einen IRQ auslöst. Der 
ARM stellt den Mikrokontroller von einer CMUCam3 dar, welche um 
zusätlich Funktionen erweitert wurde. Nur leider gibt es Probleme mit 
dem Timer wenn dieser in Kombination mit Interrupts genutzt wird. Der 
Timer wird aktuell nur für eine "wait()" Funktion benützt - ohne 
Interrupts.

//Grundeinstellung des Timer0 bei der CMUCam3
TIMER0_TCR = 0;
TIMER0_MCR = 0;
TIMER0_TC = 0;
TIMER0_PC = 0;
TIMER0_PR = (int)(((FOSC*PLL_M)/1000)/1000); // jede us
TIMER_TCR = 1;

//Interrupt Init für Timer0
VICIntEnClear = 0xFFFFFFFF;
VICIntSelect = 0x00000000;
VICINtEnable = 16; //Kanal 4
VICVectAddr4 = (unsigned long)timertickISR;
VICVectAddr4 = (1<<5) | 4;

//Timer0 (der Timer läuft bereits; soll lediglich neugestartet werden 
und um die Interrupt-Funktionalität erweitert werden)
TIMER0_TCR = 0; //turn off timer
TIMER0_TC = 0; //clear counter
TIMER0_PC = 0; //clear prescale count
//TIMER0_TCR = 2; hab ich auch schon versucht ... sollte ja das gleiche 
bewirken wie die zwei Zeilen darüber
TIMER_MC0 = 5; //5 mikros
TIMER_MCR = 3; //enable interrupt, clear MCO reg

TIMER0TCR = 1; //sollte den Timer0 wieder starten ....

Leider gibt es ein Problem, wenn ich den Timer0 wieder starten will. 
Nach der Zeile "TIMER0TCR = 1" kommen keine meiner Debug-Ausgaben mehr 
an, bzw. mein Programm macht nicht mehr was es sollte....

Gibt es eine Reihenfolge die eingehalten werden muss, wie man Timer oder 
Interrupt initialisieren sollte?

Muss ich meine StartUp.s-Datei anpassen um Interrupts zu enablen? Wenn 
ja, wie???

Ist der hier aufgeführte Code soweit richtig?

Hoffentlich kann mir jemand weiterhelfen .... hab schon soviel erfolglos 
rumprobiert!!!

Viele Grüße
Josef

von Arm Guru (Gast)


Lesenswert?

Die Reihenfolge stimmt nicht ....

Interrupts müssen im StartUP.s File global eingeschaltet werden!

von Josef H (Gast)


Lesenswert?

Kann mir sonst keiner weiterhelfen??? Wäre über ein paar konstruktive 
Vorschläge oder Hinweise echt dankbar!!!

Gruß
Josef

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.