Forum: Mikrocontroller und Digitale Elektronik PWM berechnen


von Sep (Gast)


Lesenswert?

Hallo ich habe ein PWM Signal und hoffe das ich das jetzt richtig 
berechnet habe,könnt ihr das mal bitte überprüfen.

Also ich habe:
Quarz=8Mhz
Vorteiler=1
8Bit ADC
Timer vorgeladen=176

Ich habe jetzt folgendes gerechnet

8000000/1/80/2=50000hz=50khz
ist das so richtig?

Ich habe mit dem Oszi gemessen das eine Phase von anfang High zum 
nachsten anfang High lt. Oszi 166,6Hz haben soll oder 6ms.

Was mach ich falsch? Der Atmel steht auf 8Mhz intern
von Sep (Gast)


Lesenswert?

Sorry ich meine 8bit Timer
von Karl H. (kbuchegg)


Lesenswert?

> Timer vorgeladen=176

Das ist bei eine PWM schon mal mies.
Warum vorladen? Nimm einen Timer der CTC Modus kann, bzw einen der dir 
bei einer PWM den Top Wert vorgeben lässt.

Und dann zeig dein Programm.
von spess53 (Gast)


Lesenswert?

Hi

Statt deiner verbalen Beschreibung wäre der tatsächliche Code 
hilfreicher.

MfG Spess
von Sep (Gast)


Lesenswert?

Hier sind die wichtigsten stellen vom Code habe jetzt nicht den ganzen 
anderen Kram mitgepostet


Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B 
Pwm = Clear Down , Prescale = 1

Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Up , Pwm = On
Timer1 = 176
Timer2 = 176


Do

Admux = &B01100000
Adcsra.6 = 1
While Adcsra.6 = 1
Wend
Pwm1a = Adch
Admux = &B01100001
Adcsra.6 = 1
While Adcsra.6 = 1
Wend
Pwm1b = Adch
Admux = &B01100010
Adcsra.6 = 1
While Adcsra.6 = 1
Wend
Ocr2 = Adch

Loop
End
von Düsendieb (Gast)


Lesenswert?

Klamüser doch mal die Analogeingaben und die PWM Ausgaben auseinander.

Die Benutzung von Variablen kostet kein Geld bringt aber uns allen 
Übersichtlichkeit.

Also zuerst die drei Analgeingänge hintereiander lesen und dann die 
Ausgaben machen.
von Sep (Gast)


Lesenswert?

Ja könnte ich machen aber um es kurz zu halten.

Ich mache:
Lese ADC0
Dann ADCH ins Register compare1a
Lese ADC1
Dann ADCH ins Register compare1b
Lese ADC2
Dann ADCH ins Register OCR2
fertig
von spess53 (Gast)


Lesenswert?

Hi

>Timer1 = 176
>Timer2 = 176

Lies mal in deiner BASCOM-Hilfe was das bedeutet.

MfG Spess
von Sep (Gast)


Lesenswert?

Okay da habe ich irgendwas falsch verstanden.Ich habe das jetzt 
rausgenommen.Jetzt habe ich 15,62kHz wie erhöht man das PWM Signal jetzt 
richtig leuider steht in der Hilfe nichts drin.
von spess53 (Gast)


Lesenswert?

Hi

>Jetzt habe ich 15,62kHz wie erhöht man das PWM Signal jetzt
>richtig leuider steht in der Hilfe nichts drin.

Was willst du erhöhen?

MfG Spess
von Sep (Gast)


Lesenswert?

Die Frequenz ich möchte 50kHz erzeugen
von spess53 (Gast)


Lesenswert?

Hi

>Die Frequenz ich möchte 50kHz erzeugen

Möchten und können sind zweierlei. Mit der vollen Auflösung von 8 Bit 
gehen bei einem Takt von 8MHz max. nur 31,25 kHz (Fast PWM). Du hast 
aber 'Phase Correct PWM' eingestellt. Daher hast du nur die Hälfte.

Für 50kHz müsstest du den Zählbereich des Timers auf 0x9F begrenzen. 
Dadurch verlierst du aber auch an Auflösung. Aber wofür brauch man 50kHz 
PWM?

MfG Spess
von Sep (Gast)


Lesenswert?

Brauchen tue ich das für nix wollte es einfach mal machen um dazu zu 
lernen
von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Das Zauberwort heißt, wie bereits gesagt, CTC. Such doch mal danach...
von spess53 (Gast)


Lesenswert?

Hi

>Brauchen tue ich das für nix wollte es einfach mal machen um dazu zu
>lernen

dann kannst du ja auch mit den 31,25 kHz leben.

>Das Zauberwort heißt, wie bereits gesagt, CTC. Such doch mal danach...

Er will aber den Tastgrad mit dem ADC beeinflussen.

MfG Spess
von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

spess53 schrieb:
>>Das Zauberwort heißt, wie bereits gesagt, CTC. Such doch mal danach...
>
> Er will aber den Tastgrad mit dem ADC beeinflussen.

Wenn der Timer 2 Compare-Units hat, geht das schon. Aber wenn nicht, 
dann geht's nicht, da hast Du Recht.


Gruß
Jonathan
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.