Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 113 → Rev 114

/Classwork/ECE4534 - Embedded Systems/PIC 26J11/timers.c
12,12 → 12,15
/* InitTMR0 = 256 - ( Delay * Frequency ) / ( 4* Prescaler) */
/* Delay = (256 - InitTMR0 * Prescaler) / (Frequency / 4) */
/* ----------------------------------------------------------- */
 
// Sleep timer
OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_256);
T0CONbits.TMR0ON = 0; // Timer 0 initially off
 
#ifdef _REMOTE
// Data polling timer
OpenTimer1(TIMER_INT_ON & T1_16BIT_RW &
T1_SOURCE_FOSC_4 & T1_PS_1_8 &
T1_SOURCE_FOSC_4 & T1_PS_1_1 &
T1_OSC1EN_OFF & T1_SYNC_EXT_OFF,
TIMER_GATE_OFF & TIMER_GATE_INT_OFF);
T1CONbits.TMR1ON = 0; // Timer 1 initially off
30,6 → 33,7
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
49,10 → 53,12
 
// Interrupt handler for timer 1
void timer1_interrupt_handler() {
#ifdef _REMOTE
timer1_counter++;
if (timer1_counter % 3 == 0) {
MQ_sendmsg_ToMainFromLow(0, MSGTYPE_TIMER1, (void *) 0);
}
#endif
}
 
void timer1_enable() {
65,20 → 71,22
}
 
void timer3_interrupt_handler() {
if (!pwm_on) {
#ifdef _REMOTE
if (!PWM_IR_STATE) {
// Turn on PWM
pwm_IR_start();
pwm_on = 1;
PWM_IR_STATE = 1;
WriteTimer3(0xEA00); // Send 38kHz pulses for 600us
} else {
// Turn off PWM
pwm_IR_stop();
pwm_on = 0;
PWM_IR_STATE = 0;
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
}
#endif
}
 
void timer3_enable() {
85,7 → 93,7
// Enable timer and start PWM
T3CONbits.TMR3ON = 1;
pwm_IR_start();
pwm_on = 1;
PWM_IR_STATE = 1;
}
 
void timer3_disable() {
92,5 → 100,5
// Disable timer and stop PWM
T3CONbits.TMR3ON = 0;
pwm_IR_stop();
pwm_on = 0;
PWM_IR_STATE = 0;
}