Gast
#302917
Hallo! Ich habe ein kleines Problem mit der PWM-Erzeugung über das PCA (Programmable Counter Array) beim P87C51FA-4B. Die Erzeugung des PWM-Signals funktioniert ohne Probleme, doch bekomm ich den Pin, über den das Signal ausgegeben wird, nie ganz auf 0. Es sind immer noch sehr kurz 1-Phasen zu erkennen. Das liegt daran, da der Pegel 1 wird, wenn der Compare-Wert (CAPLn-Register) groesser oder gleich des Timer-Wertes ist. Also habe ich bei höchst möglichem Compare-Wert (FF) trotzdem noch einmal die Bedningung Compare-Wert=Timer-Stand erfüllt und bekomme eine kurze 1. Nun habe ich in verschiedenen Dokumentationen gelesen, dass ich um einen reinen 0-Pegel zu bekommen, den Pin direkt löschen muss (CLR). Siehe unter anderem Intel PCA Cookbook: http://www.intel.com/design/mcs51/applnots/27085101.PDF auf Seite 19-21. Leider funktionieren alle meine bisherigen Versuche nicht. Meine Idee war: mov A,meinWert ; Vergleichswert laden jz f1_aus ; ist Vergleichswert 0? mov CAPH0,A ; ins PCA-Array (8Bit PWM) mov CAPM0,#%01000010 ; 8-Bit PWM einschalten ljmp f1_end ; Ausschalten ueberspringen f1_aus: mov CAPM0,#%00000000 ; 8-Bit PWM ausschalten CLR P1.3 ; PWM-Ausgang auf 0 setzen f1_end: Ich habe auch einige andere Kombinationen probiert, z.B. das weglassen von "mov CAPM0,#%00000000", da das direkte setzten des Pins laut Dokumentation auch die PWM-Funktion unterbricht. Alles allerdings ohne Erfolg. Nun brtäuchte ich ein konkretes Beispiel für meinen Fall. Weiss jemand wie ich das Problem lösen kann? Danke schon mal! Mit freundlichen Grüße, Daniel