Hallo, Ich möchte eine PWM mit einem 10k Poti eisntellen. Gefundenund getestet habe ich dieses Programm hier: $regfile = "m16def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 8000000 Config Porta.1 = Input Config Pind.5 = Output ' Porta = &B00000010 Dim Analogwert As Word Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc Do Analogwert = Getadc(1) Analogwert = Analogwert / 2 If Analogwert > 255 Then Analogwert = 255 Pwm1a = Analogwert Loop End Funktioniert auch, allerdings bekomme ich die PWM nicht ganz aus (Also PWM ist immer etwas größer null) und auch die max. Geschw. wird nciht erreicht. Kann mir vielleicht jemand helfen warum es nicht klappt? Wieso muss der Analogwert durhc vier geteilt werden? Gruss Alex
Moin Alex oder Bernd :), also ich mache die Config so: Tccr2 = &B01110110 'Timer2 mit 61Hz PWM Frequenz beim Mega 8 ! Dann einfach ocr2 eine zahl von 0 - 255 geben und das PWM Signal sieht entsprechend aus. Die Variable ocr2 kannste auch direkt im Programm verwenden. Am besten am Oszi das Signal anschauen. Dein AD-Wandler macht 10bit (1024), der PWM aber nur 8-bit(256), daher fängt er bei 256 wieder bei 0 an, weil überlauf wenn Du DIM als Byte gewählt hast. Sonst das Problem genauer beschreiben. mfg Oliver
Hi! Lass mal folgende Zeile weg: Porta = &B00000010 Eventuell noch Reference=off mit diesen Änderungen geht der Analogwert bis auf 0 runter. mfG
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.