PWM-Generation PIC16F628A

Ich habe die Anweisungen im Datenblatt befolgt und versucht, ein PWM-Signal mit PIC16F628A zu erzeugen. Es scheint jedoch keine Ausgabe zu erzeugen. Mein Code ist unten gezeigt. Jede Hilfe wird geschätzt, wenn es darum geht, herauszufinden, was in meinem Code falsch ist.

Danke schön.

PROCESSOR '16F628A'
INCLUDE <P16F628A.INC>
org 0x00
bcf STATUS,RP1
bsf STATUS,RP0 ; go to bank1

movlw 0xff ;255 dec
movwf PR2 ; writing to PR2 register
bcf TRISB,3 ; set RB3 as output


bcf STATUS,RP0 ; go to bank0
bcf CCP1CON,5 ; clearing bits 5 and 4
bcf CCP1CON,4

movlw 0x00
movwf CCPR1L ; set duty cycle

bcf T2CON,1
bcf T2CON,0 ; set pre-scaler to 1
bsf T2CON,2 ; enable Timer2
bsf CCP1CON,3 
bsf CCP1CON,2 ; enable pwm mode
return
end
Wechseln Sie die Bank mit Banksel, Sie machen weniger Fehler.
Einverstanden. Und wenn Sie wirklich effizient sein wollen, erstellen Sie Ihre eigenen Banksel-Makros. Ich tat. Und niemals verwenden, denn Klarheit ist besser als Effizienz!
Das Piclist-Mailing ist für solche Dinge immer noch nützlich. Ich fand den PWM-Abschnitt im Datenblatt verwirrend, aber dieser Link ist klarer: piclist.com/techref/microchip/16f877/pwm.htm

Antworten (2)

movlw 0x00
movwf CCPR1L ; set duty cycle

Stellen Sie den Arbeitszyklus immer nur auf 0? Ist der Ausgangspin immer niedrig? Alles andere sieht gut aus. Versuchen Sie einfach, diese Nummer zu ändern, und prüfen Sie, ob Sie Ergebnisse erhalten.

Vielen Dank. Das war der Fehler! Nach dem Ändern des CCPR1L-Werts wird PWM generiert :)

In Ihrem Beispiel löschen Sie CCPR1L. Dadurch wird Ihr Arbeitszyklus auf Null gesetzt, und Sie erhalten keine Ausgabe.

Das Gegenteil kann auch passieren. CCPR1L definiert zusammen mit zwei Bits in CCP1CON die Länge des PWM-Impulses. Wenn diese Länge länger als die PWM-Frequenz ist, geht der Pin nie auf Low, und es scheint, dass kein PWM-Ausgang vorhanden ist.

pwm

Versuchen Sie, CCPR1L zu erhöhen. Alles andere sieht gut aus.

Spaß haben!

Vielen Dank für Ihren wertvollen Rat. Es funktionierte! Eigentlich habe ich damit mehrere Tage gekämpft und endlich darüber nachgedacht, es hier zu posten. Danke schön.
@ user2835684 Ich helfe gerne :)