www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu PWM bei C167


Autor: dr evil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;
   }
}

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>2ms/50µs = 40.000
Muss natürlich "50ns" sein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.