Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 114 → Rev 115

/Classwork/ECE4534 - Embedded Systems/PIC 26J11/timers.c
5,7 → 5,7
#include "timers.h"
#include "pwm.h"
 
unsigned char timer1_counter;
unsigned char overflow_counter;
 
void timers_init() {
/*--------------------Timer Delay Formulas-------------------- */
16,7 → 16,11
// Sleep timer
OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_256);
T0CONbits.TMR0ON = 0; // Timer 0 initially off
 
#ifdef _BASE_STATION
OpenTimer2(TIMER_INT_ON & T2_PS_1_16 & T2_POST_1_16);
T2CONbits.TMR2ON = 0; // Timer 2 initially off
#endif
#ifdef _REMOTE
// Data polling timer
OpenTimer1(TIMER_INT_ON & T1_16BIT_RW &
24,7 → 28,7
T1_OSC1EN_OFF & T1_SYNC_EXT_OFF,
TIMER_GATE_OFF & TIMER_GATE_INT_OFF);
T1CONbits.TMR1ON = 0; // Timer 1 initially off
timer1_counter = 0;
overflow_counter = 0;
 
// Open timer 2 for ECCP1 (PWM)
OpenTimer2(TIMER_INT_OFF & T2_PS_1_4 & T2_POST_1_1);
54,8 → 58,8
// Interrupt handler for timer 1
void timer1_interrupt_handler() {
#ifdef _REMOTE
timer1_counter++;
if (timer1_counter % 3 == 0) {
overflow_counter++;
if (overflow_counter % 3 == 0) {
MQ_sendmsg_ToMainFromLow(0, MSGTYPE_TIMER1, (void *) 0);
}
#endif
70,6 → 74,25
T1CONbits.TMR1ON = 0;
}
 
// Interrupt handler for timer 2
void timer2_interrupt_handler() {
overflow_counter++;
if (overflow_counter == 50) {
overflow_counter = 0;
timer2_disable();
MQ_sendmsg_ToMainFromLow(0, MSGTYPE_TIMER2, (void *) 0);
}
}
 
void timer2_enable() {
WriteTimer2(0);
T2CONbits.TMR2ON = 1;
}
 
void timer2_disable() {
T2CONbits.TMR2ON = 0;
}
 
void timer3_interrupt_handler() {
#ifdef _REMOTE
if (!PWM_IR_STATE) {
81,10 → 104,10
// Turn off PWM
pwm_IR_stop();
PWM_IR_STATE = 0;
WriteTimer3(0xEA00); // Send low for 0.6ms
// WriteTimer3(0xEA00); // Send low for 0.6ms
// WriteTimer3(0xD800); // Send low for 1ms
// WriteTimer3(0xB000); // Send low for 2ms
// WriteTimer3(0x1000); // Send low for 6ms
WriteTimer3(0x1000); // Send low for 6ms
}
#endif
}