Buenas. Quisiera saber si alguien me podría explicar cómo variar la frecuencia en este código, ya que al simularlo no puedo.
El código es de ELECTGPL
Al hacer el calculo de la carga del timer0 a una fosc de 20MHz y un prescaler de 256 para que el tiempo sea 20mS, el valor de la carga del timer me da -135, lo cual está mal.
Cabe destacar que soy algo nuevo con esto del PWM digital.
Este es el código y web de ELECTGPL
http://electgpl.blogspot.com.ar/2014/10/multiple-pwm-sin-ccp.html
El código es de ELECTGPL
Al hacer el calculo de la carga del timer0 a una fosc de 20MHz y un prescaler de 256 para que el tiempo sea 20mS, el valor de la carga del timer me da -135, lo cual está mal.
Cabe destacar que soy algo nuevo con esto del PWM digital.
Este es el código y web de ELECTGPL
http://electgpl.blogspot.com.ar/2014/10/multiple-pwm-sin-ccp.html
PHP:
#include <16F628A.h> //MCU a utilizar
#FUSES NOWDT, HS, NOMCLR //Fueses
#use delay(clock=20000000) //Oscilador Externo
#int_TIMER0 //LLamado a interrupcion
void TIMER0_isr(int pwm0, //Funcion Interrupcion
int pwm1, //Variables de link
int pwm2){ //PWM0 PWM1 PWM2
int cont; //Variable de Contador
if(cont>99) //Si cont 100 se inicializa
cont=0; //Cont = 0
else //Caso contrario
cont++; //Incrementa en una unidad cont
if(cont>0&&cont<pwm0) //Si 0<Cont<PWM0
output_high(PIN_B0); //Salida PWM0 a nivel alto
else //Caso contrario
output_low(PIN_B0); //Salida PWM0 a nivel bajo
if(cont>0&&cont<pwm1) //Si 0<Cont<PWM1
output_high(PIN_B1); //Salida PWM1 a nivel alto
else //Caso contrario
output_low(PIN_B1); //Salida PWM1 a nivel bajo
if(cont>0&&cont<pwm2) //Si 0<Cont<PWM2
output_high(PIN_B2); //Salida PWM2 a nivel alto
else //Caso contrario
output_low(PIN_B2); //Salida PWM2 a nivel bajo
set_timer0(255); //Seteo de interrupcion
}
void main(){ //Funcion principal
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); //Seteo timer0
enable_interrupts(INT_TIMER0); //Seteo timer0
enable_interrupts(GLOBAL); //Seteo timer0
while(true){ //Loop infinito
TIMER0_isr(10,45,73); //Se movera a la funcion
} //PWM0=10%, PWM1=45%, PWM2=73%
}
Última edición por un moderador: