Buenas a todos.
Estoy intentando configurar el Timer 0 para que provoque una interrupción cada 20 ms y así realizar un PWM. (Esto porque ya utilicé los 2 módulos CCP como PWM incluidos en el PIC)
Quiero trabajar con el reloj interno del PIC sin reloj de salida para así ahorrar componentes y lograr la frecuencia de 50Hz.
Cuando echo a correr el programa, realiza las interrupciones cada varios segundos.
La programación es la siguiente:
(Sólo estoy probando el PWM con el Timer 0)
PIC utilizado: PIC18F2420
(Si conocen alguno con 3 módulos CCP que esté a la venta en chile se los agradecería porque yo no encontré)
Compilador: PIC C Compiler v4
Además, de forma manual probé calcular los tiempos con www.sistemasorp.es/blog/temporizadores_pic.html
Saludos y muchas gracias por su tiempo.
Estoy intentando configurar el Timer 0 para que provoque una interrupción cada 20 ms y así realizar un PWM. (Esto porque ya utilicé los 2 módulos CCP como PWM incluidos en el PIC)
Quiero trabajar con el reloj interno del PIC sin reloj de salida para así ahorrar componentes y lograr la frecuencia de 50Hz.
Cuando echo a correr el programa, realiza las interrupciones cada varios segundos.
La programación es la siguiente:
(Sólo estoy probando el PWM con el Timer 0)
PHP:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <18F2420.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES NOPUT //No 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 NOCPB //No Boot Block code protection
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES MCLR //Master Clear pin enabled (me asegure de qe este conectado a vcc)
#use delay(clock=31000)
#int_TIMER0
void TIMER0_isr(void)
{
set_timer0(0xB3);
output_high(pin_b0);
delay_ms(10);
output_low(pin_b0);
}
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF|ADC_TAD_MUL_0);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
setup_oscillator(OSC_31KHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF);
set_timer0(0xB3);
set_tris_b(0x00);
output_b(0x00);
while(true)
{
// esto es solo de prueba, aqui ira mi grandioso codigo...
delay_us(40);
}
}
(Si conocen alguno con 3 módulos CCP que esté a la venta en chile se los agradecería porque yo no encontré)
Compilador: PIC C Compiler v4
Además, de forma manual probé calcular los tiempos con www.sistemasorp.es/blog/temporizadores_pic.html
Saludos y muchas gracias por su tiempo.
Última edición por un moderador: