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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.