mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC1115, wie spielt man mit dem Timer


Autor: monem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Ich habe neulich angefangen mit den Timern zu exprimentiern. Folgender 
Code soll den 32bit Timer/Counter des LPC1115 aktivieren und bis zu 
einer gewisser Zahl hier (0x2000) hochzählen lassen und stoppen. Um zu 
schauen ob es funktioniert möchte ich den Inhalt des Counters als den 
Register (TC) lesen können, doch im Debug modus ist der Inhalt immer 
gleich 0.
Kann jemand drüber schauen und sagen was ich da falsch mache?? Danke



int main(void)
{
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<9);  //Clock(power) to the Timer
LPC_TMR32B0->PR = 0x0;  //When the Prescale Counter (PC = PR), clock
                        //increments the TC and clears the PC.

LPC_TMR32B0->MR0 = 0x2000;
LPC_TMR32B0->CCR = 0x0;      //Timer mode
LPC_TMR32B0->TCR |= (1<<1);    //Timer reset
LPC_TMR32B0->TCR |= (1<<0);    //Timer on
LPC_TMR32B0->MCR |= (1<<2);    //Stop Timer on match with MR0;
LPC_TMR32B0->TCR &= ~(1<<0);

  while(1)
    {



    }

    return 0 ;
}

Autor: Jim Meba (turboj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuviele magische Zahlen. Es gibt sicher auch Definitionen für die ganzen 
Timer Flags in einem Header.


Dann wäre vermutlich aufgefallen, dass Du hier
LPC_TMR32B0->TCR &= ~(1<<0);

den Timer aussschaltest. So zählt der nich hoch.

Autor: monem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke. Das stimmt leider. Das war ein Versehen weil ich ein anderes 
Code-Beispiel bei dem ein PWM programmiert wurde zum Teil übernommen 
hatte.


int main(void) {

//Set up 16 bit timer for PWM operation

 LPC_IOCON->PIO0_8 = (LPC_IOCON->PIO0_8 & ~(0x3FF)) | 0x2; // pin for 
PWM use
 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7); //enable clock signal to 16 bit 
timer0
 LPC_TMR16B0->PR           = 0x0;    //set prescaler max value, not used 
here
 LPC_TMR16B0->MCR          = 0x10;   //set for reset on counter match
 LPC_TMR16B0->EMR          |= 0x20;  //set pin 27 to 1 on match
 LPC_TMR16B0->CCR          = 0;      //set to timer mode
 LPC_TMR16B0->PWMC         = 0x1;    //set channel zero to PWM mode
 LPC_TMR16B0->MR1          = 0x32;   //set value for period
 LPC_TMR16B0->MR0          = 0xC;    //set value for duty cycle
 LPC_TMR16B0->TCR          |= 0x3;   //enable and reset counter
 LPC_TMR16B0->TCR          &= ~(0x2); //clear reset bit

    while(1){                     //infinite loop
    }
    return 0 ;
}


Aber theoretisch könnte man schon mit LPC_TMR32B0->TC den Inhalt von TC 
auslesen, oder?? Das wäre auch mal eine Frage.

Autor: Nico W. (nico_w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
monem schrieb:
> Aber theoretisch könnte man schon mit LPC_TMR32B0->TC den Inhalt von TC
> auslesen, oder?

Ja

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.