forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
PIC16F88 a PWM

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 265

PříspěvekZaslal: 08 říjen 2015, 22:07    Předmět: PIC16F88 a PWM Citovat

Ahoj.
Řeším jednu aplikaci s 16F88 a PWM a narazil jsem na problém, kde zadám pin pro PWM (RB0 nebo RB3). Podařilo se mi to jen v nastavení sw UP od Asix pro programátor Presto. Funguje mi to, jen se chci ujistit, zda bych nemohl v tom konfiguračním slově zadat přímo ten pin. V datasheetu píší, citace: Vstup nebo výstup modulu CCP1 může být konfigurován na vývodu RB0 nebo RB3. Volba se provádí pomocí bitu CCPMX, což je 12. bit konfiguračního slova mikropočítače. Nechci to jako 3FFF nebo tak, zajímá mě, jak to zapsat do __CONFIG. Moje převzatá nastavení konfigurace pro testování je zde:

;Nastaveni konfigurace procesoru:
__CONFIG _CONFIG1,_CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_IO
__CONFIG _CONFIG2,_IESO_OFF & _FCMEN_OFF

NASTAVENI_PWM ; vlastni nastaveni PWM

CLRF T2CON ; vynuluj registr T2CON
CLRF TMR2 ; vynuluj registr TMR2
CLRF INTCON ; vynuluj registr INTCON
BSF STATUS,RP0
CLRF PIE1 ; vynuluj registr PIE
BCF STATUS,RP0
CLRF PIR1 ; vynuluj registr PIR1
BSF STATUS,RP0
MOVLW 0XFF ; preddelic 1:16, po delic 1:16, TMR2 = ON
MOVWFPR2
BCF STATUS,RP0
MOVLW 0x00 ; nacti 0 do registru CCPR1L
MOVWF CCPR1L
MOVLW 0XFF
MOVWF T2CON ; prescaler 1:16 and postscaler 1:1
MOVLW 0x00 ; nacti 0 do registru CCP1CON
MOVWF CCP1CON ; vypnuti pwm
BSF T2CON,TMR2ON ; log. 1do registru T2CON,TMR2ON

SPUST _PWM

MOVLW 0x3F
MOVWF CCP1CON ; zapnuti pwm


TEST_2

CALL CEK15m

INCFSZ CCPR1L,F ; postupny nabeh pWM

GOTO TEST_2

atd ...... ; PWM 100% a nejake dalsi zpracovani bla, bla, bla ,....



CFG Presto 16F88.PNG
 Komentář:
 Velikost:  11.12 kB
 Zobrazeno:  6936 krát

CFG Presto 16F88.PNG


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Sender
Profesionál
Profesionál


Založen: 16.8.2014
Příspěvky: 56

PříspěvekZaslal: 08 říjen 2015, 22:23    Předmět: Citovat

Připadá mi,že se to nastavuje tím CCP1_RB0 ,nebo CCP1_RB3(_CCP1_RB3 ,nebo CCPB3).Při otevření hex souboru v programu Presta by se mohla nastavit položka CPPMux automaticky.
(bez záruky)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 265

PříspěvekZaslal: 08 říjen 2015, 22:55    Předmět: Citovat

Tak to překladačem neprojde
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Sender
Profesionál
Profesionál


Založen: 16.8.2014
Příspěvky: 56

PříspěvekZaslal: 09 říjen 2015, 0:11    Předmět: Citovat

Jak to vypadá v souboru hlavičkovým 16F88.asm ? jaký je používán překladač (MPLab,X8 ...) ?

V hlavičkovým souboru je to definováno takto:
_CCPMX_RB3 EQU H'2FFF' ; CCP1 function on RB3
_CCP1_RB3 EQU H'2FFF' ; CCP1 function on RB3
_CCPMX_RB0 EQU H'3FFF' ; CCP1 function on RB0
_CCP1_RB0 EQU H'3FFF' ; CCP1 function on RB0

Zkusil bych dát do __CONFIG _CONFIG1, něco z výše uvedeného (přepsáním _CCP1_RB0)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 265

PříspěvekZaslal: 09 říjen 2015, 6:28    Předmět: Citovat

Ano, v hlavičkovém souboru je to definováno, jak píšeš. Ale překladač MPASM verze 5.02, mi to nebere. Zadat do toho __CONFIG _CONFIG1 jsem to samozřejmě zkoušel.

PS. Tak si sypu popel na hlavu a mažu okolo máslem!!! Embarassed
Blbě jsem zadal mezeru, tak proto mi to nezkousnul ten překladač.
Díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Sender
Profesionál
Profesionál


Založen: 16.8.2014
Příspěvky: 56

PříspěvekZaslal: 23 říjen 2015, 21:32    Předmět: Citovat

Zrovna řeším taky PWM u totožného procesoru.Narazil jsem na malý zádrhel -jak se řeší rozlišení 10bit ? Je potřeba řešit oba registry CCPR1L a CCPR1H ? Případně kousek kódu.
Děkuji za tipy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 265

PříspěvekZaslal: 25 říjen 2015, 11:28    Předmět: Citovat

Do CCPR1H nelze zapisovat při použití PWM. Takto je to v datasheetu:

Střídu opakovací frekvence lze nastavit v rozsahu 1024 hodnot nastavením registru CCPR1L a dvou bitů v registru CCP1CON. V registru
CCPR1L je obsaženo osm významnějších bitů rozlišení střídy. Pro stanovení střídy PWM lze použít následující vzorec:

Střída PWM = (CCPR1L:CCP1CON<5:4>) • TOSC • (dělicí poměr předěličky Timer2)

Registry pro nastavení střídy CCPR1L a CCP1CON mohou být modifikovány kdykoli, ale nastavená změna střídy se projeví až po ukončení periody opakovací frekvence, kdy dojde k zápisu do registru CCPR1H. V režimu PWM je registr CCPR1H určen jen ke čtení.
Registr CCPR1H a dvou bitový vnitřní záchytný obvod pracují jako dvojitý buffer. Toto řešení umožňuje plynulé generování signálu PWM.

Poznámka: Pokud je nastavená doba pro určení střídy delší než celková perioda opakovací frekvence,
nebude výstup PWM nulován.

Osobně používám jen registr CCPR1L, protože jsem tak jemné rozlišení PWM nepotřeboval.

Kus kódu:

; Pro interni oscilator 4MHz

;--------------------------------------------------------------------;

list p=16F88, r=DEC
#include P16F88.INC

;--------------------------------------------------------------------;

;Nastaveni konfigurace procesoru:
__CONFIG _CONFIG1,_CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_IO & _CCP1_RB3
__CONFIG _CONFIG2,_IESO_OFF & _FCMEN_OFF

#define PWM PORTA,3 ; vystup, PWM pro buzeni motoru
#define RELE PORTA,2 ; vystup, RELE pro pripojeni motoru

NASTAVENI_PWM ; v INIT

CLRF T2CON ; vynuluj registr T2CON
CLRF TMR2 ; vynuluj registr TMR2
CLRF INTCON ; vynuluj registr INTCON
BSF STATUS,RP0
CLRF PIE1 ; vynuluj registr PIE
BCF STATUS,RP0
CLRF PIR1 ; vynuluj registr PIR1
BSF STATUS,RP0
MOVLW 0xFF
MOVWF PR2 ; nacti 255 do registru PR2
BCF STATUS,RP0
MOVLW 0x00 ; nacti 0 do registru CCPR1L
MOVWF CCPR1L
MOVLW 0xFF ; nacti 255 do registru T2CON
MOVWF T2CON ; prescaler 1:16 and postscaler 1:1
MOVLW 0x00 ; nacti 0 do registru CCP1CON
MOVWF CCP1CON ; vypnuti pwm
BSF T2CON,TMR2ON ; log. 1do registru T2CON,TMR2ON


SPUST_PWM

BSF RELE ; sepni RELE a pripoj motor
MOVLW 0x3C ; aktivuj PWM
MOVWF CCP1CON
MOVLW 0x00 ; nula do registru PWM
MOVWF CCPR1L


ROZBEH_PWM
CALL CEK4m
INCF CCPR1L,F ; inkrementuj CCPR1L po 4 ms
MOVF AD_PWM,W ; porovnej s hodnotou AD prevodu
XORWF CCPR1L,W ; pokud je hodnota shodná, pokracuj dale
BTFSS STATUS,Z
GOTO ROZBEH_PWM

; neco dal delej
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)