Buenas, estoy tratando de diseñar tres módulos pwm con los timers, ya que el pic que estoy utilizando tiene solo dos módulos pwm, para generar tres senales cuadradas desfasadas 120 grados. Los cálculos están hechos para 100Hz, los defase 120 grados eléctricos pasando estos grados a tiempo y haciendo que los pulsos (o los timers en este caso) empiecen mas tarde. Luego simplemente los apage y prendía cada 180 grados ya que el duty cycle debe ser de 50%.
Les dejo el código si tienen alguna otra idea también es valida, gracias.
Les dejo el código si tienen alguna otra idea también es valida, gracias.
#int_TIMER0
void TIMER0_isr(void)
{
output_toggle(PIN_B1);
set_timer0(63036);
}
#int_TIMER1
void TIMER1_isr(void)
{
output_toggle(PIN_B0);
set_timer1(60536);
}
#int_TIMER3
void TIMER3_isr(void)
{
output_toggle(PIN_B2);
set_timer3(60536);
}
void main()
{
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_INTERNAL|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_TIMER3);
enable_interrupts(GLOBAL);
set_timer0(62201);
set_timer1(60536);
set_timer3(58869);
output_high(PIN_B0);
output_low(PIN_B1);
output_low(PIN_B2);
WHILE(true){}
}