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
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
wie kann ich das denn einstellen/programmieren das ich genaue 1000hz als frequenz herausbekomme?
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.
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.
marcel schrieb: > wie kann ich das denn einstellen/programmieren das ich genaue 1000hz als > frequenz herausbekomme? Oder einen 16-Bit-Timer nehmen.
ja meine 16 bit timer sind alle schon belegt, hab nur noch 8bit timer und diese besitzen kein ICR :/
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.