Forum: Mikrocontroller und Digitale Elektronik LM3S6965 Timer2 für Single Shot konfigurieren


von Gast (Gast)


Lesenswert?

Nabend zusammen
Ich finde gerade meinen Fehler bei denn Eisntellungen für die Timer 
eines LM3s6965 (Cortex M3) nicht. Und zwar wollte ich denn Timer 2 als 
16 Bit Singleshot verwenden und ahbe ihn wie folgt initialisiert:
1
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2);
2
TIMER2_CFG_R= 0x04;
3
TIMER2_TAMR_R = 1;
4
TIMER2_TAPR_R = 200;
5
TIMER2_TAILR_R = 40000;

Die erste Funktion stammt aus eienr Driverlib die dazu dient den Timer 
zu aktivieren (Nur als Peripherie, er wird NICHT gestartet).

Nun folgt im späteren Verlauf des Codes folgender Teil:
1
 TIMER2_CTL_R |= 1;   //Start Timer
2
    //blinky LED   
3
    while(1)
4
    {
5
      GPIO_PORTF_DATA_R |= 0x01;  //Set PF0 High
6
      icheck=1;
7
      
8
      while(icheck==1){           // Run until Timer 2 has finished 
9
        icheck= TIMER2_CTL_R & 1;
10
      }
11
      
12
      GPIO_PORTF_DATA_R &= ~(0x01);
13
    }

Etwas weitere Erklärung:
Das erste Bit in TIMER2_CTL_R zeigt ob der Timer 2 gerade läuft oder 
nicht. Laut Datenblatt wird dieses Bit im One Shot Modus auf 0 gesetzt 
wenn der Controler einmal durchgelaufen ist und bleibt 0 bis es wieder 
Manuell auf 1 gesetzt wird.

Das problem das ich nun habe ist, das der Timer nicht herunterzählt. Er 
bleibt also bei 40000 stehen udn rührt sich nicht. Wenn ich jedoch 
continious Mode eisntelle zählt er herunter.

Habe ich was grundlegendes vergessen? Denn irgendwie hänge ich gerade.

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.