TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: davidrrb1 en 26 de Marzo de 2014, 17:47:56

Título: PWM en PIC184550
Publicado por: davidrrb1 en 26 de Marzo de 2014, 17:47:56
Hola estoy intentando sacar un PWM en el PIC18F4550 mi programa es el siguiente
#include <18F4550.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV20                   //Brownout reset at 2.0V
#FUSES PUT                      //Power Up Timer
#FUSES NOCPD                    //No EE protection
#FUSES STVREN                   //Stack full/underflow will cause reset
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES LVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES PBADEN                   //PORTB pins are configured as analog input channels on RESET
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads
#FUSES PLL1                     //No PLL PreScaler

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

int16 i=0;

void config (void);

void main()
{
config();
while(1){
for(i=0;i<=1024;i++){
set_pwm1_duty(i);
delay_ms(1000);
}

}
}

void config (void){
   setup_wdt(WDT_OFF);
   output_low(PIN_C2);
   setup_timer_2(T2_DIV_BY_4,249,1);
   setup_ccp1(CCP_PWM);
}

El programa es muy sencillo pero al montarlo no me funciona no se que este mal en el codigo en proteus me funciona bien y en la practica tengo la resistencia de MRCL a Vcc de 5V y la salida el Pin 17 CPP1 y miro la salida en el osciloscopio pero no hace nada agradesco su ayuda.
Título: Re: PWM en PIC184550
Publicado por: ppyote en 26 de Marzo de 2014, 18:04:00
Te falta indicar en los fuses el pin el cual quieres habilitar para la salida del pwm y en la funcion config() agregar setup_oscillator(OSC_NORMAL|OSC_PLL_OFF);

acabo de darme cuenta que usabas en CCP1
Título: Re: PWM en PIC184550
Publicado por: davidrrb1 en 26 de Marzo de 2014, 19:16:26
Hola acabo de mirar con valores constantes y si dan digamos pongo i=100; o i=200; si si funciona pero lo pongo a variar y ya no funciona agradesco su ayuda.
Título: Re: PWM en PIC184550
Publicado por: rivale en 28 de Marzo de 2014, 12:21:10
el problema podría ser el LVP, cambialo por #fuses NOLVP

otro error es que dejas que tu variable i llegue a 1024 y no debe ser así, solo debe llegar a 1023