Forum: Mikrocontroller und Digitale Elektronik CC1110 (8051) - Problem mit Timer1, PWM für Servo


von Raoul (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit dem Timer1 bei einem CC1110-Mikroprozessor.

Ich möchte ein am P1_1-Pin angeschlossenes Servo mit dem Timer1 per PWM 
(20ms dutycycle, 1-2ms pwm-Länge) ansteuern. Dazu habe ich, dem 
Datenblatt Abschnitt 12.6.5 folgend angenommen, dass das wohl ohne 
selbstgeschriebene Interrupt-Routine funktioniert, sofern man den 
Anweisungen auf Seite 114 nach dem fettgedruckten "Edge Aligned" folgt 
und T1CCTL1.CMP auf 110 setzt.

Aus irgendeinem Grund funktioniert mein Code jedoch nicht, ich befürchte 
dass ich irgendeinen notwendigen Schritt übersehen habe.

Hier mein Code:
1
//  Pinbelegung konfigurieren:
2
//  -> USART 0 auf Alternative 1 (P0)
3
//  -> USART 1 auf Alternative 2 (P1)
4
//  -> Timer1 auf Alternative 2 (P1)
5
6
PERCFG = (PERCFG & ~PERCFG_U0CFG) | PERCFG_U1CFG | PERCFG_T1CFG;
7
8
P1SEL |= BIT2 | BIT1 | BIT0;
9
 
10
11
// TIMER SETUP  
12
13
// Channel 0 Compare Register setzen (nur zum Testen auf 3fff, wird später die gewünschte PWM-Impulslänge)
14
T1CC0L = 0xFF;
15
T1CC0H = 0x3F;
16
17
// Channel 1 Compare Register setzen (wird später die 50Hz des PWM-Signals für das Servo)
18
T1CC1L = 0xFF;
19
T1CC1H = 0x7F;
20
21
// Channel Control: CMP auf 110 setzen; Mode auf "Compare"
22
T1CCTL1 |= ((1<<BIT4) | (1<<BIT5)); 
23
T1CCTL1 &=~ (1<<BIT3);
24
    
25
T1CCTL1 |= (1<<BIT2);
26
27
// Interrupts aktivieren
28
IEN1 |= (1<<BIT1);
29
EA = 1;
30
  
31
// T1 Control: "Module Mode" setzen (10)
32
T1CTL |= (1<<BIT1);  
33
T1CTL &=~ (1<<BIT0);


Am Pin P1_1 ist das Signal einfach dauerhaft auf "Low". Leider habe ich 
mit Timern bei diesem Mikrocontroller keine Erfahrung, deswegen kann es 
gut sein, dass ich irgendetwas ganz einfaches übersehen habe.

Ich würde mich sehr freuen, wenn mir da jemand weiterhelfen kann :-)

- Raoul


Datenblatt zum CC1110f8:
http://www.ti.com/lit/gpn/cc1110f8 (PDF ca. 3,7 MB)

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.