Ir ao conteúdo
  • Cadastre-se

Problema com PWM usando pic 16f648a


Adebaldo

Posts recomendados

Galera estou usando o MPLAB e o PIC16F648A para configurar o Modo PWM,

porém não consigo valores certos para os pulsos do pwm eles variam um

pouco e também não consigo um valor de Dutycycle correto para alguns

valores.

Alguém pode me ajudar como isso?

Esse é o código do programa que eu fiz:

#include <htc.h>
#define _XTAL_FREQ 4000000 // clock = 4MHz
// INTIO: Clock = oscilador RC interno; RA6 e RA7 = I/O
// WDTDIS: Watch-dog Timer = desativado
__CONFIG (INTIO & WDTDIS);

void configura_ports() {
CMCON = 0x07;
TRISA = 0xFF;
TRISB = 0x00;
PORTA = 0x00;
PORTB = 0x00;
}

void config_pwm(unsigned int periodo_pwm, int freq_osc) {

CCP1CON = 0b00001100;
prescale_ = ((periodo_pwm*freq_osc)/1024);
if (prescale_<1) {
prescale = 1; T2CON = 0b00000100;
}
else if (prescale_<4) {
prescale = 4; T2CON = 0b00000101;
}
else if (prescale_<=16) {
prescale = 16; T2CON = 0b00000110;
}
PR2 = ((periodo_pwm*freq_osc)/(4*prescale))-1;
TMR2 = PR2-(periodo_pwm/prescale);
}

void config_duty_cycle(int duty_cycle) {
CCPR1L = (duty_cycle*PR2)/(100);
}

void main() {
configura_ports();
config_pwm(200,4); // 200 micro seg e 4Mhz
config_duty_cycle(65); // 65%
}

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...