www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timerinterrupt Problem bei ARM7 LPC2106


Autor: Josef H (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Arm Guru (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Reihenfolge stimmt nicht ....

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

Autor: Josef H (Gast)
Datum:

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

Gruß
Josef

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.