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.