ATMega8 16 bit Timer

Gast #3425719
Lesenswert?

Hallo zusammen,

ich bin relativ neu was mC anbelangt und komme gerade einfach nicht 
weiter.
Ich möchte einen Servo mit dem 16bit Timer des ATMega8 steuern. Die 
Datenleitung des Servos (Modelcraft RS-2) hängt am OC1A Pin des 
Microcontrollers. Hier ist mein Code zur Initialisierung des Timers:
1
void init_timer(void)
2
{
3
  DDRB |= (1<<PB1);                //  Set OCRA1 to output
4
  
5

6

7
  ICR1 = 2499;          //  der Endwert (TOP) 
8
                  
9

10
  OCR1A = 110;           
11
              
12
  TCCR1A = (1<<COM1A1) | (1<<WGM11);              //  Modus 14: Steuerung des Ausgangsport: Set at BOTTOM, Clear at match
13
  TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS11);   // Prescaler auf 8
14
}

Man sollte den Servo jeweils mit den Befehlen
1
OCRA1 = 110;
 bzw.
1
OCRA1 = 210;
maximal in beide Richtungen auslenken können. Beim Einschalten jedoch 
zuckt er nur kurz.
Ach ja: Mein mC läuft mit 1MHz.
Was mache ich falsch?

VG
Sebastian
#3425809
Lesenswert?

Und immer wieder gerne übersehen:
1
The ICR1 Register can only be written when using a Waveform Generation mode that utilizes
2
the ICR1 Register for defining the counter’s TOP value. In these cases the Waveform Generation
3
mode (WGM13:0) bits must be set before the TOP value can be written to the ICR1
4
Register.
Gast #3426392
Lesenswert?

Hallo,

danke für die schnellen Antworten!

@Wolfgang:
Ja, LED mit delay togglen funktioniert. Als Spannungsquelle hab ich ein 
5V Handynetzteil mit 700mA. Ich weis, das ist ein bisschen wenig, aber 
der Servo sollte sich doch im Unbelasteten Fall trotzdem drehen oder?

@spess53:
Ja, Masse von µC und Servo sind verbunden.

@Stefan Ernst:
Okay, vielen Dank, ich tausch mal die Codezeilen aus.

MfG
Sebastian
Gast #3427020
Lesenswert?

Habe das Problem nach einigem Rumprobieren nun gelöst:

Ich habe zu Debugzwecken eine LED blinken, lassen. Der Code dazu hat das 
Datenrichtungsbit des Pins B1 (OCA1) immer auf 0 gesetzt, was dazu 
geführt hat dass sich nichts mehr bewegt.

Trotzdem vielen Dank für die schnelle Hilfe!

MfG
Sebastian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren