3,8 → 3,7 |
#include "msg_queues.h" |
#include <timers.h> |
#include "timers.h" |
#include "adc.h" |
#include "xbee.h" |
#include "pwm.h" |
|
void timers_init() { |
/*--------------------Timer Delay Formulas-------------------- */ |
12,29 → 11,74 |
/* Delay = (256 - InitTMR0 * Prescaler) / (Frequency / 4) */ |
/* ----------------------------------------------------------- */ |
|
// Set timer 0 to overflow every 512 clocks |
// OpenTimer0(TIMER_INT_ON & T0_8BIT & T0_SOURCE_INT & T0_PS_1_256); |
#ifdef _BASE_STATION |
OpenTimer0(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 |
// // 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); |
|
// Open timer 2 for CCP1 (PWM) |
#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 signaling |
OpenTimer3(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 0 |
void timer0_interrupt_handler() { |
// xbee_process_transmit_frame_interrupt(); |
MQ_sendmsg_ToMainFromLow(0, MSGTYPE_TIMER0, (void *) 0); |
} |
|
void timer0_enable() { |
T0CONbits.TMR0ON = 1; |
} |
|
void timer0_disable() { |
T0CONbits.TMR0ON = 0; |
} |
|
// Interrupt handler for timer 1 |
void timer1_interrupt_handler() { |
// Set timer to overflow every 10ms |
WriteTimer1(62259); |
} |
|
// xbee_process_transmit_frame_interrupt(); |
} |
void timer3_interrupt_handler() { |
if (!pwm_on) { |
// Turn on PWM |
pwm_start(); |
pwm_on = 1; |
WriteTimer3(0xE500); // Send 38kHz pulses for 600us |
} else { |
// Turn off PWM |
pwm_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 PWM |
T3CONbits.TMR3ON = 1; |
pwm_start(); |
pwm_on = 1; |
} |
|
void timer3_disable() { |
// Disable timer and stop PWM |
T3CONbits.TMR3ON = 0; |
pwm_stop(); |
pwm_on = 0; |
} |