Forum: Mikrocontroller und Digitale Elektronik Frequenz im Fast PWM modus


von Marcel B. (mazell)


Lesenswert?

hi,

ich betreibe den 8-bit timer im Fast PWM modus. Aufgabe ist es ein 
PWM-Signal bei einer Frequenz von 1kHz auszugeben.

wenn ich mit mein multimeter aber die frequenz messe zeigt der mir Werte 
zwischen 1,9 kHz und 5 kHz an?!

Vielleicht liegt es ja am Messgerät, trotzdem würde ich euch bitten ob 
die einstellung mit 1 kHz richtig ist mal zu überschauen?!


TCCR0A = (0<<FOC0A) | (1<<WGM01) | (1<<WGM00) | (1<<COM0A1) | 
(0<<COM0A0) | (0<<CS02) | (1<<CS01) | (1<<CS00);

OCR0A = 55;

im Handbuch steht ja PWM frequenz für den ausgang ist

f pwm = Taktfrequenz / N * 256  bei mir also  16mhz / 64 * 256 = 976 hz

von spess53 (Gast)


Lesenswert?

Hi

>f pwm = Taktfrequenz / N * 256  bei mir also  16mhz / 64 * 256 = 976 hz

Die Rechnung ist richtig. Vielleicht kommt dein Multimeter nicht mit dem 
Tastverhältnis klar. Nimm mal für OCR0A den Wert 128.

MfG Spess

von marcel (Gast)


Lesenswert?

wie kann ich das denn einstellen/programmieren das ich genaue 1000hz als 
frequenz herausbekomme?

von Michael D. (Gast)


Lesenswert?

Takt verfälschen (>16MHz) oder einen Timer nehmen wo du ein max. Zähler 
einstellen kannst...

Meine das konnte der Timer 1 + 2 beim ATmega8 über das Register 
ICR1/ICR2.

von em (Gast)


Lesenswert?

marcel schrieb:
> wie kann ich das denn einstellen/programmieren das ich genaue 1000hz als
> frequenz herausbekomme?

z.B. mit einem Quarz, dessen Frequenz eine 2er Potenz ist, z.b. 4,096MHz 
oder 8,192MHz (16,384 MHz übertaktet vielleicht den kleinen Atmel). Dann 
sollte bei der Rechnung oben genau 1000 rauskommen.

von Dietrich L. (dietrichl)


Lesenswert?

marcel schrieb:
> wie kann ich das denn einstellen/programmieren das ich genaue 1000hz als
> frequenz herausbekomme?
Oder einen 16-Bit-Timer nehmen.

von marcel (Gast)


Lesenswert?

ja meine 16 bit timer sind alle schon belegt, hab nur noch 8bit timer 
und diese besitzen kein ICR :/

von spess53 (Gast)


Lesenswert?

Hi

>ja meine 16 bit timer sind alle schon belegt, hab nur noch 8bit timer
>und diese besitzen kein ICR :/

Aber es gibt 8 Bit-Timer mit 2 OC-Registern. Dann lässt sich OCRxB für 
die PWM und OCRxA für die Frequenz benutzen.

Welchen Controller benutzt du denn?

MfG Spess

von marcel (Gast)


Lesenswert?

die PWM mit 1000hz hat eine andere Funktion als das blinken.

also die PWM hat ihren eignen ausgang und das blinken ist für etwas 
anderes da.

von marcel (Gast)


Lesenswert?

und ich benutze ein at90can128

von marcel (Gast)


Lesenswert?

jemand meinte mal das ich für das blinken auch ein 8 bit timer nehmen 
kann und wenn ich dann kleine frequenzen haben will, dass ich den timer 
mehrmals überlaufen lasse bis dann ein interrupt meiner Led sagt das sie 
jetzt einschalten kann.

hab allerdings keine ahnung wie man das programmiert, gibts dazu schon 
fertige code im inet vielleicht?

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.