Ich würde gern eine PWM mit 25KHz erzeugen, PWM an sich ist klar. Nur, komm ich bei 16MHz Quarz nur auf ca 7800KHz bei 8bit, ich will aber 25KHz. Mit 8bit, Prescale 8, PreLoad 173 komm ich auf 1,219% pro step ab 173 bis 255 100% also repräsentiert der Preload von 173 = 0% PWM bzw 100%, und 214 = 50%. Meine Frage ist jetzt, kann ich da überhaupt preloaden? oder läuft der Timer im PWM Modus immer von 0 hoch?
Atmega324, Timer1 und Timer2 nur mal um mein Verständniss zu überprüfen: pro Takt Zählt der Counter um 1 hoch, 256 Takte ein Zyklus/ Puls für 8Bit Counter. also maximal erreichbare Frequenz für PWM bei uC@16MHz = 62,5KHz? bei Prescale 8 = 7812,5KHz? oder blick ichs doch ned, dachte eigentlich Verstanden zu haben wie das funktioniert.
Prescaler heißt, dass die Eingangsfrequenz geteilt wird. Prescaler 8 : der Timer wird mit 16MHz / 8 = 2 MHz getaktet, also ist die Frequenz der Überläufe bei 8 bit (256 Takte) 2MHz / 256 ungefähr 8 kHz
Hi >...blick ichs doch ned, dachte eigentlich Verstanden zu haben wie das >funktioniert. Na ja, nicht ganz. Wenn du auf deinen 25kHz bestehst, hast du 2 Möglichkeiten -passenden Quarz nehmen. -PWM mit verkleinerter Auflösung. Bei den Timer-Mode 5/7 (Timer 0/2) oder den Timer-Mode 8/9 oder 14/15 (Timer1) lässt sich die Auflösung über ein Register (OCRx/ICRx) einstellen. Mit einem Top-Wert von $4F (Prescaler () bekommst du genau deine 25kHz. Beim Timer1 und Prescaler = 1 geht auch eine höhere Auflösung (Top $27F). MfG Spess
Danke, für die Antworten. es müssen nicht exakt 25KHz sein, +-4KHz ist laut Spezifikation drin. Ich Teste das ganze Prog im Mom. auf einem ATmega32, Angela liefert die 324 erst diese Woche irgendwann... Quintessenz ist, Preload geht. Ich habe nur keine Ahnung wie der richtige Bascom Befehl dazu lautet (Preload womöglich?), und muß ich den nach jedem Puls neu setzen oder bleibt der gesetzt? Oder muß ich das direkt in ein Register schieben? Bei dem Timer0 den ich als Zeitbasis mit 10ms (+0,16% oder so) verwende, muß ich bei jedem Interrupthandling den Preload neu setzen @ Flo: mit ungefähr 8 kHz meinst du bestimmt die 7812,5KHz die ich errechnet hatte... mfg sB
FEHLER: nicht 7812,5KHz sondern 7812,5Hz, da war wohl ein Kilo zuviel, sry
Hi >Quintessenz ist, Preload geht. Wozu? Preload ist notwendig, wenn der Timer nur auf einen 'Overflow' reagieren kann. Die Timer des Atmega324 haben aber die Möglichkeit den Wert vorzugeben, ab dem der Timer wieder mit 0 anfängt. Damit ist ein Preload überflüssig. Woher kommt diese Idee mit dem Preload bei AVRs überhaupt? MfG Spess
Hallo, spess53 schrieb: > Die Timer des Atmega324 haben aber die Möglichkeit den Wert vorzugeben, ab > dem der Timer wieder mit 0 anfängt. Allerdings; auch der CTC-Modus eignet sich sehr gut, um eine PWM zu erzeugen (die dann natürlich nicht mehr genau 8 Bit Auflösung hat, sondern weniger). In deinem Fall wäre der CTC-Modus mit Prescaler 4 und Reload-Wert von 159 (also 160 Schritte) geeignet; das ergibt sogar genau die 25kHz PWM-Frequenz. Den dafür nötigen BASCOM-Aufruf weiss ich nicht genau; aber auch mit BASCOM kann man die Timer-Register direkt beschreiben und damit die Konfiguration "von Hand" festlegen (setzt natürlich Lesen des Datenblatts voraus) ... Der PWM-Wert (zwischen 0 und 159) wird ins Register OCR0B geschrieben; der PWM-Pin ist dementsprechend OC0B.
Ah, Klatsch (HandtrifftStirn) Enstschuldigt, bin wohl irgendwo wichtiges draufgestanden..., schäm
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.