PWM 16F628A

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Davidus
Zablokován
Zablokován
Příspěvky: 2439
Registrován: 01 čer 2005, 02:00

PWM 16F628A

#1 Příspěvek od Davidus »

Ahoj
Už 2 dny bojuju s 16F628A, nějak se mi nedaří rozjet PWM, nebo špatně chápu jeho nastavení v MCU. Co dělám špatně? Díky

ORG 000H
MOVLW 064h
BCF STATUS,RP1
BSF STATUS,RP0
MOVWF PR2
BCF STATUS,RP1
BCF STATUS,RP0
MOVLW 032h
MOVWF CCPR1L
BSF T2CON,2
BSF T2CON,1
BSF T2CON,0
;nastavuji BB3 jako výstup
BCF STATUS,RP1
BSF STATUS,RP0
MOVLW 0F7h
MOVWF TRISB
BCF STATUS,RP1
BCF STATUS,RP0
;konec programu
mys nop
goto mys
end

Uživatelský avatar
eljaro
Příspěvky: 441
Registrován: 03 pro 2004, 01:00
Bydliště: Krnov
Kontaktovat uživatele:

#2 Příspěvek od eljaro »

asi jsi přeskočil trochu konfiguraci ! v ccp1con je třeba navolit že pojedeš jako pwm !

podle postupu je nutno 1,naplnit registr periody
2, nastavit pwm vregistru ccp1con
3, nastavit výstupní bit jako výstupní
4, a nastavit předdělič
také je dobre dohlédnou na to aby timer 2 byl opravdu vypnut

Uživatelský avatar
procesor
Příspěvky: 5284
Registrován: 02 říj 2009, 02:00
Bydliště: PO

#3 Příspěvek od procesor »

kapitola 9.3.3 v datasheet PIC16F628a
! 4. nastav preddelicku a SPUSTI Timer2!
5. zapni PWM mode v ccp1

Uživatelský avatar
Davidus
Zablokován
Zablokován
Příspěvky: 2439
Registrován: 01 čer 2005, 02:00

#4 Příspěvek od Davidus »

procesor, eljaro, díky, zkusím to, uvidíme, ale moc šancí tomu nedávám

Uživatelský avatar
Davidus
Zablokován
Zablokován
Příspěvky: 2439
Registrován: 01 čer 2005, 02:00

#5 Příspěvek od Davidus »

měl bych možná ještě dotaz, je funkce PWM vidět na logickém analyzátoru v simulátoru MPLAB?

Uživatelský avatar
eljaro
Příspěvky: 441
Registrován: 03 pro 2004, 01:00
Bydliště: Krnov
Kontaktovat uživatele:

#6 Příspěvek od eljaro »

v simulátoru to vidět je ale timer 2 nespoštět ! jen nastavit předdělič tím dojde k aktivaci timeru 2 pro práci pwm ! samotné aktivování timeru 2 bitem tmr2on způsobí odstavení pwm mudulu ! ona ta technická angličtina je trochu moc jednoduchá !

Uživatelský avatar
Davidus
Zablokován
Zablokován
Příspěvky: 2439
Registrován: 01 čer 2005, 02:00

#7 Příspěvek od Davidus »

takže se mi podařilo najít přímo ukázku od inženýrů z microchipu... možná to pomůže i někomu dalšímu, kdo by s tím měl problém.

list p=16f628A ; list directive to define processor
#include <p16F628A.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT


ORG 000H
CLRF CCP1CON
CLRF TMR2
MOVLW 0x7F
MOVWF PR2
MOVLW 0x1F
MOVWF CCPR1L
CLRF INTCON
BSF STATUS,RP0
BCF TRISB,3
CLRF PIE1
BCF STATUS, RP0
CLRF PIR1
MOVLW 0x2C
MOVWF CCP1CON
BSF T2CON,TMR2ON
;konec programu
mys nop
goto mys
end
Přílohy
pwm.PNG
(6.29 KiB) Staženo 76 x

Uživatelský avatar
procesor
Příspěvky: 5284
Registrován: 02 říj 2009, 02:00
Bydliště: PO

#8 Příspěvek od procesor »

No... PR2 je v inom banku, takže miesto PR2 tých 0x7F zapisuješ do T2CON a to nie je najlepšie. Chýba tam nastavenie správneho banku. A potom späť.
Edit:
Podľa frekvencie oscilatota posúď časy. Timer2 takto šlape, ale s preddeličkou 1:16 (postscaler je tu ukradnutý) a v PR2 máš 0xFF ako po resete

Uživatelský avatar
Davidus
Zablokován
Zablokován
Příspěvky: 2439
Registrován: 01 čer 2005, 02:00

#9 Příspěvek od Davidus »

tak poslední pokus, teď už by to mělo být OK
list p=16f628A ; list directive to define processor
#include <p16F628A.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT

CITAC0 EQU 20H
CITAC1 EQU 21H
CITAC3 EQU 22H
ORG 000H
CLRF CCP1CON
CLRF TMR2
BCF STATUS,RP1
BSF STATUS,RP0
MOVLW 0x7F
MOVWF PR2
BCF STATUS,RP1
BCF STATUS,RP0
MOVLW 01FH ; nastavení střídy
MOVWF CCPR1L
CLRF INTCON
BSF STATUS,RP0
BCF TRISB,3
CLRF PIE1
BCF STATUS, RP0
CLRF PIR1
MOVLW 0x2C
MOVWF CCP1CON
BSF T2CON,TMR2ON
;registry naplněny hodnotou FF
;cekací smycka
mys nop
goto mys
end

Uživatelský avatar
procesor
Příspěvky: 5284
Registrován: 02 říj 2009, 02:00
Bydliště: PO

#10 Příspěvek od procesor »

To by mohlo íst, frkv.= 7812,5Hz, impulz=31,5us.
Ukáž oscilogram.

Uživatelský avatar
Davidus
Zablokován
Zablokován
Příspěvky: 2439
Registrován: 01 čer 2005, 02:00

#11 Příspěvek od Davidus »

tady
Přílohy
16f628pwm.PNG
(7.86 KiB) Staženo 77 x

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#12 Příspěvek od Atlan »

dobry oscilooskop :D

Uživatelský avatar
Davidus
Zablokován
Zablokován
Příspěvky: 2439
Registrován: 01 čer 2005, 02:00

#13 Příspěvek od Davidus »

Atlan píše:dobry oscilooskop :D
tak co chceš, za 7700kč 100MHz osciloskop... :lol:

Uživatelský avatar
procesor
Příspěvky: 5284
Registrován: 02 říj 2009, 02:00
Bydliště: PO

#14 Příspěvek od procesor »

Program je Ok. Tolerancie idú na vrub na oscilátoru a aj niečo na osciloskop. :)

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“