Forum: Mikrocontroller und Digitale Elektronik Bascom & Frequenz bei PWM einstellen


von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Irgendwie sehe ich vor lauter Bäumen den Wald nicht mehr; ich brauche 
für einen Motor eine PWM-Frequenz von ca 25 kHz. Wie stelle ich die ein? 
Ich blicke da mit den Registern nicht durch. Bis hierhin funktioniert 
erstmal alles:

$regfile = "attiny2313.dat"


$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40

Config Portb.3 = Output      'OC1A   Pin 15
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare_a_pwm = Clear_up

Pwm1a = 200                  '200 von 511 ~ 40% high (wegen Clear_up)

Do

Loop

End

Mit PWM=8 und Prescale=1 komme ich auf 16,~ kHz.

Kann mir evtl mal einer anfängerkompatibel zeigen, wie ich die Register 
einstellen muß (in BASCOM) um auf ca 25 kHz zu kommen.
Ich verstehe nicht, welches Register ich wie einstellen muß, damit er 
"vorzeitig" zurückspringt.

Danke Thomas

von Karl M. (Gast)


Lesenswert?

Thomas,

schau für den verwendeten Mode mal ins Datenblatt des attiny2313, dort 
steht etwas über das TOP-Register und der sich ergebenden PWM-Frequenz.

Mode 8 aus dem Datenblatt:
Register: WGM13 WGM12 WGM11 WGM10
Belegung: 1 0 0 0
Text: PWM, Phase and Frequency Correct
Top : ICR1 Register

f = fclk / (2 *N *TOP )

N := prescaler divider (1, 8, 64, 256, or 1024)
TOP := ICR1 Register

von Karl M. (Gast)


Lesenswert?

Zu Deiner Frage,
man stelle die Formel um und setze die Vorgaben ein:

fpwm = fclk / (2 *N *TOP)

fpwm = 25kHz
fclk = 8Mhz
N = 1
TOP ist gesucht.

TOP = fclk / (2 *N *fpwm) = 160

in das ICR1 Register wird dann der Wert (160-1) geschrieben.

von Karl M. (Gast)


Lesenswert?

Anm.:
Man sieht also, die PWM Auflösung beträgt nur noch 160 Schritte.
Wenn man mehr haben möchte muss die CPU Frequenz höher sein.

von laurel (Gast)


Lesenswert?

Thomas G. schrieb:
> Kann mir evtl mal einer anfängerkompatibel zeigen, wie ich die Register
> einstellen muß (in BASCOM) um auf ca 25 kHz zu kommen.

http://bascom-forum.de/mediawiki/index.php/Timer#PWM_mit_variabler_Frequenz

da mal lesen und "Fast PWM mit beliebiger Frequenz" wählen.
ICR1 auf 319, prescale = 1  (8000000/1/320=25000)

... und mit Datenblatt vergleichen. Beispiel müßte aber auch für den 
ATtiny2313 passen.

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.