Rev 107 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
/* The processor calls these handlers when an interrupt is triggered */#include "maindefs.h"#include "msg_queues.h"#include <timers.h>#include "timers.h"#include "pwm.h"void timers_init() {/*--------------------Timer Delay Formulas-------------------- *//* InitTMR0 = 256 - ( Delay * Frequency ) / ( 4* Prescaler) *//* Delay = (256 - InitTMR0 * Prescaler) / (Frequency / 4) *//* ----------------------------------------------------------- */#ifdef _BASE_STATIONOpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_32);T0CONbits.TMR0ON = 0; // Timer 0 initially off#endif// // Set timer 1 to overflow every two seconds// OpenTimer1(TIMER_INT_ON & T1_16BIT_RW &// T1_SOURCE_PINOSC & T1_PS_1_1 &// T1_OSC1EN_ON & T1_SYNC_EXT_OFF,// TIMER_GATE_OFF & TIMER_GATE_INT_OFF);#ifdef _REMOTE// Open timer 2 for ECCP1 (PWM)OpenTimer2(TIMER_INT_OFF & T2_PS_1_4 & T2_POST_1_1);// Open timer 3 for PWM IR signalingOpenTimer3(TIMER_INT_ON & T3_16BIT_RW & T3_SOURCE_FOSC_4 &T3_OSC1EN_OFF & T3_PS_1_1 & T3_SYNC_EXT_OFF, TIMER_GATE_OFF);T3CONbits.TMR3ON = 0; // Timer 3 initially off#endif}// Interrupt handler for timer 0void timer0_interrupt_handler() {MQ_sendmsg_ToMainFromLow(0, MSGTYPE_TIMER0, (void *) 0);}void timer0_enable() {T0CONbits.TMR0ON = 1;}void timer0_disable() {T0CONbits.TMR0ON = 0;}// Interrupt handler for timer 1void timer1_interrupt_handler() {// Set timer to overflow every 10msWriteTimer1(62259);}void timer3_interrupt_handler() {if (!pwm_on) {// Turn on PWMpwm_start();pwm_on = 1;WriteTimer3(0xE500); // Send 38kHz pulses for 600us} else {// Turn off PWMpwm_stop();pwm_on = 0;WriteTimer3(0xE500); // Send low for 0.6ms// WriteTimer3(0xD000); // Send low for 1ms// WriteTimer3(0xA000); // Send low for 2ms// WriteTimer3(0x1000); // Send low for 5ms}}void timer3_enable() {// Enable timer and start PWMT3CONbits.TMR3ON = 1;pwm_start();pwm_on = 1;}void timer3_disable() {// Disable timer and stop PWMT3CONbits.TMR3ON = 0;pwm_stop();pwm_on = 0;}