Hier das erste Beispielprogramm, meine Frage kommt nach dem Programm. Auf dem PWM- Kanal 3 soll am Ausgang P7.3 ein PWM Signal mit der Frequenz 500Hz ausgegeben werden, solange P7.0 1 ist. Eine angeschlossene Last soll mit 25% angesteuert werden wenn der Anschluss P7.1 1 ist, sonst mit 75%. fosz=20MHz Betriebsart: Edge Aligned Hier meine Lösung: PP3 20000KHz/0,5KHz=40000 PW3= 25% =1:3=30000 75%=3:1=10000 Vergleichswert= 10000 PWMCON0=0x8; PWMCON1=0x8; Void main() { DP7_3=1; PP3=40000; PWMCON0=0x8; PWMCON1=0x8; While(P7_0) { if (P7_1) PW3=30000; else PW3=10000; } } Jetzt kommt eine Aufgabe von meinem Prof. wo ich die Musterlösung überhaupt nicht nachvollziehen kann und denke, dass er da irgendetwas durcheinander gehauen hat mit Timern. Ich hätte die Aufgabe so gelöst wie das obere Beispiel. Und nicht mit Vergleichswerten wie er dies getan hat, da die Werte der Schattenregister doch nie erreicht werden, da PP3=25536 kleiner ist als diese. Lasse mich auch gerne eines besseren belehren Das z.b. beide Aufgabenlösungen richtig sind. Auf dem PWM- Kanal 3 eine 80c167 soll am Ausgang P7.3 ein PWM Signal inder der Betriebsart (Edge-Aligned) mit der Frequenz 1Hz ausgegeben werden, solange P7.0 1 ist. Eine angeschlossene Last soll mit 25% angesteuert werden wenn der Anschluss P7.1 0 ist, sonst mit 50%. fosz=40MHz Muster Lösung: PWMCON0=8; PWMCON1=8; Eingangsfrequenz 40000KHz Grundfrequenz 1KHz 40000:1=40000 Anfangswert: 65536-40000=25536 PP3=25536 Vergleichswerte: 50% 65536-20000=45536; 25% 65536-10000=55536; Void main() { DP7_3=1; PP3=25536; PWMCON0=0x8; PWMCON1=0x8; While(P7_0) { if (P7_1) PW3=45536; else PW3=55536; } }
Zu Aufgabe 1) Voraussetzung ist (anscheinend): fosc = 20MHz PWM Frequenz = 500Hz Da hat man jetzt 2 Möglichkeiten für die PWM Frequenz: 1) Ohne Teiler: 20MHz = 50ns Takt (PTI3 = 0) 500Hz = 2ms 2ms/50µs = 40.000 Diese 40.000 sind die Einstellung für PP3 75% erreicht man durch 75% des PP3 Registers. Also 0,75*40.000 = 30.000 und 25% 0,25*40.000 = 10.000 = PW3 2) Mit Teiler 20MHz/64 = 3,2µs (PTI3 = 1) 500Hz = 2ms 2ms/3,2µs = 625 Diese 625 sind die Einstellung für PP3 75% erreicht man durch 75% des PP3 Registers. Also 0,75*625 = 468 und 25% 0,25*625 = 156 = PW3 Ergo: Lieber ohne Teiler, dann wird die PWM Auflösung besser. Zu Aufgabe 2) Da weiss ich jetzt nicht was ich glauben soll. Einerseits wird von "Frequenz 1Hz" gesprochen, unten heisst es dann aber "Grundfrequenz 1KHz". Oben wird von "Edge-Aligned" gesprochen, unten wird dann aber PWMCON1=0x8; gesetzt und somit auf "Center aligned" gestellt. Mit PWMCON0=8; wird der Teiler 64 gesetzt, aber trotzdem mit 40Mhz weitergerechnet.... versteh ich alles nicht.
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.