Ir ao conteúdo
  • Cadastre-se

Como configurar o PWM no Pic 16F648A?!


Adebaldo

Posts recomendados

Olá pessoal,

Fiz um curso de programação de microcontroladores em Lingaguem C,

o microcontrolador utilizado no curso foi um 16F648A e usamos o MPLAB.

Agora preciso realizar um projeto com PWM ajustável.

Já fiz boa parte do programa, mas os valores do programa não estão corretos

principalmente do Ciclo ativo o Duty Cycle (DC).

Como é que eu uso o registrador PR2?! Tem que determinar o valor dele?!

E qual equação eu uso para o calculo do Duty cycle?!

OBS.: Neste programa estou usando apenas 8 bits para o Duty cycle (apenas o registro CCPR1L).

Esse é o cógido fonte:

?ui=2&ik=333c0800a1&view=att&th=12d7a74f186f6983&attid=0.1&disp=inline&realattid=f_giua325g0&zw

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

olá. PR2 controla a freq e resolução do pwm. queira por gentileza ver o datasheet seção 9.3.2. Quanto à rotina de controle de dutyclicle, veja isto:

...
CCP1CON=0b00001100; //PWM mode
T2CON=0b00000100; //timer2 on, prescaler 16
...
void duty(unsigned int dt)
{
CCPR1L=dt>>2; //MSB (byte + significativo)
CCP1CON.CCP1Y=dt; //LSB (bit0 pro CCP1Y)
CCP1CON.CCP1X=dt>>1; //LSB (bit1 pro CCP1X)
}

os bits da palavra do duty do pwm estão meio que espalhados. a função acima deve posicionar na posição correta. gentileza conferir. feito pro mikroc.

sucessos!

Link para o comentário
Compartilhar em outros sites

olá. PR2 controla a freq e resolução do pwm. queira por gentileza ver o datasheet seção 9.3.2. Quanto à rotina de controle de dutyclicle, veja isto:

...
CCP1CON=0b00001100; //PWM mode
T2CON=0b00000100; //timer2 on, prescaler 16
...
void duty(unsigned int dt)
{
CCPR1L=dt>>2; //MSB (byte + significativo)
CCP1CON.CCP1Y=dt; //LSB (bit0 pro CCP1Y)
CCP1CON.CCP1X=dt>>1; //LSB (bit1 pro CCP1X)
}

os bits da palavra do duty do pwm estão meio que espalhados. a função acima deve posicionar na posição correta. gentileza conferir. feito pro mikroc.

sucessos!

mas o duty pode assumir quais valores?!

e o T2CON=0b00000100 isso não é para configurar o timer2 on, prescaler 1?!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...