PIC PWM-Periode Servoansteuerung

Gast #1088712
Lesenswert?

Hallo Leute ! Hab vorhandene Beiträge zum Thema durchforstet und bin 
leider nicht ganz auf meine Frage gestoßen, deshalb stell ich sie hier!

Also ich möchte ein handelsüblichen Modellbauservo ansteuern. Die 
PWM-Periode ist sodann 20ms und die Duty-Cycle-Dauer 1-2ms.
Ich habe ein PIC 16F627 mit 4Mhz Quarz und möchte den hardwaremäßigen 
vorhandenen PWM-Erzeuger nutzen.
Nach diverser Lektüre von Microchip hab ich eine Formel gefunden um die 
PWM-Periode auszurechnen. So tat ich dies.

PWM-Periode = [(PR2)+1]  4  Tosc * (TMR2 prescale value)

20ms = [(PR2)+1]  4  1/4Mhz * 16 (höchster Teiler)

20ms = [(PR2)+1] * 16µs

20ms/16µs = (PR2)+1

1250 = (PR2)+1

1249 = PR2

also müsste ich die Zahl 1249 ins PR2 Register laden. und nu kommts da 
dieses Register nur 8 Bit groß ist kann ich die Perioden dauer gar nicht 
erreichen. die maximalste Periode die ich erreichen kann wäre 4,1ms. 
dies reicht leider nicht. erkennt ihr ein fehler in meiner rechnung? wie 
wird das den üblicherweise gemacht? wenn ich den PIC mit 1Mhz Quarz 
betreibe würd ich zumindest bis 16,4ms kommen..
Würd mich sehr um Kommentare und Anregungen freuen...
Gast #1088975
Lesenswert?

Hallo Tobi,

deine Rechnung stimmt.

Nimm am besten den Timer 1 und lass alle 20 ms einen Interrupt auslösen 
der dir dann deinen Ausgang setzt.

Ist der Ausgang gesetzt, startest du Timer 2, der nach der benötigten 
Periodendauer (1 - 2ms) den Ausgang wieder löscht.

Diese Methode benötigt zwar zwei Timer, aber alles läuft 
interruptgesteuert ab, und so hast du genügend Zeit für andere Aufgaben.
Gast #1234722
Lesenswert?

Kann mir irgendwer helfen? Ich will einen Servo ansteuern aber ich hab 
keine ahnung wie ich das verhältniss richtig einstelle... es geht um die

void main (void)
{

OpenTimer2( TIMER_INT_OFF &
T0_8BIT &
T0_SOURCE_INT &
T0_PS_1_8 );
OpenPWM2(0xff);
SetDCPWM2(31); <---- welche zahl???? (Verhältnis)

}

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