Subversion Repositories Code-Repo

Rev

Rev 113 | Rev 115 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 113 Rev 114
Line 10... Line 10...
10
void timers_init() {
10
void timers_init() {
11
    /*--------------------Timer Delay Formulas-------------------- */
11
    /*--------------------Timer Delay Formulas-------------------- */
12
    /* InitTMR0 = 256 - ( Delay * Frequency ) / ( 4* Prescaler)    */
12
    /* InitTMR0 = 256 - ( Delay * Frequency ) / ( 4* Prescaler)    */
13
    /* Delay = (256 - InitTMR0 * Prescaler) / (Frequency / 4)      */
13
    /* Delay = (256 - InitTMR0 * Prescaler) / (Frequency / 4)      */
14
    /* ----------------------------------------------------------- */
14
    /* ----------------------------------------------------------- */
15
    
15
 
-
 
16
    // Sleep timer
16
    OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_256);
17
    OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_256);
17
    T0CONbits.TMR0ON = 0;   // Timer 0 initially off
18
    T0CONbits.TMR0ON = 0;   // Timer 0 initially off
18
 
19
    
-
 
20
#ifdef _REMOTE
-
 
21
    // Data polling timer
19
    OpenTimer1(TIMER_INT_ON & T1_16BIT_RW &
22
    OpenTimer1(TIMER_INT_ON & T1_16BIT_RW &
20
                T1_SOURCE_FOSC_4 & T1_PS_1_8 &
23
                T1_SOURCE_FOSC_4 & T1_PS_1_1 &
21
                T1_OSC1EN_OFF & T1_SYNC_EXT_OFF,
24
                T1_OSC1EN_OFF & T1_SYNC_EXT_OFF,
22
                TIMER_GATE_OFF & TIMER_GATE_INT_OFF);
25
                TIMER_GATE_OFF & TIMER_GATE_INT_OFF);
23
    T1CONbits.TMR1ON = 0;   // Timer 1 initially off
26
    T1CONbits.TMR1ON = 0;   // Timer 1 initially off
24
    timer1_counter = 0;
27
    timer1_counter = 0;
25
 
28
 
Line 28... Line 31...
28
 
31
 
29
    // Open timer 3 for PWM IR signaling
32
    // Open timer 3 for PWM IR signaling
30
    OpenTimer3(TIMER_INT_ON & T3_16BIT_RW & T3_SOURCE_FOSC_4 & 
33
    OpenTimer3(TIMER_INT_ON & T3_16BIT_RW & T3_SOURCE_FOSC_4 & 
31
            T3_OSC1EN_OFF & T3_PS_1_1 & T3_SYNC_EXT_OFF, TIMER_GATE_OFF);
34
            T3_OSC1EN_OFF & T3_PS_1_1 & T3_SYNC_EXT_OFF, TIMER_GATE_OFF);
32
    T3CONbits.TMR3ON = 0;   // Timer 3 initially off
35
    T3CONbits.TMR3ON = 0;   // Timer 3 initially off
-
 
36
#endif
33
}
37
}
34
 
38
 
35
// Interrupt handler for timer 0
39
// Interrupt handler for timer 0
36
void timer0_interrupt_handler() {
40
void timer0_interrupt_handler() {
37
    timer0_disable();   // Run once!
41
    timer0_disable();   // Run once!
Line 47... Line 51...
47
    T0CONbits.TMR0ON = 0;
51
    T0CONbits.TMR0ON = 0;
48
}
52
}
49
 
53
 
50
// Interrupt handler for timer 1
54
// Interrupt handler for timer 1
51
void timer1_interrupt_handler() {
55
void timer1_interrupt_handler() {
-
 
56
#ifdef _REMOTE
52
    timer1_counter++;
57
    timer1_counter++;
53
    if (timer1_counter % 3 == 0) {
58
    if (timer1_counter % 3 == 0) {
54
        MQ_sendmsg_ToMainFromLow(0, MSGTYPE_TIMER1, (void *) 0);
59
        MQ_sendmsg_ToMainFromLow(0, MSGTYPE_TIMER1, (void *) 0);
55
    }
60
    }
-
 
61
#endif
56
}
62
}
57
 
63
 
58
void timer1_enable() {
64
void timer1_enable() {
59
    WriteTimer1(0);
65
    WriteTimer1(0);
60
    T1CONbits.TMR1ON = 1;
66
    T1CONbits.TMR1ON = 1;
Line 63... Line 69...
63
void timer1_disable() {
69
void timer1_disable() {
64
    T1CONbits.TMR1ON = 0;
70
    T1CONbits.TMR1ON = 0;
65
}
71
}
66
 
72
 
67
void timer3_interrupt_handler() {
73
void timer3_interrupt_handler() {
-
 
74
#ifdef _REMOTE
68
    if (!pwm_on) {
75
    if (!PWM_IR_STATE) {
69
        // Turn on PWM
76
        // Turn on PWM
70
        pwm_IR_start();
77
        pwm_IR_start();
71
        pwm_on = 1;
78
        PWM_IR_STATE = 1;
72
        WriteTimer3(0xEA00);    // Send 38kHz pulses for 600us
79
        WriteTimer3(0xEA00);    // Send 38kHz pulses for 600us
73
    } else {
80
    } else {
74
        // Turn off PWM
81
        // Turn off PWM
75
        pwm_IR_stop();
82
        pwm_IR_stop();
76
        pwm_on = 0;
83
        PWM_IR_STATE = 0;
77
        WriteTimer3(0xEA00);    // Send low for 0.6ms
84
        WriteTimer3(0xEA00);    // Send low for 0.6ms
78
//        WriteTimer3(0xD800);    // Send low for 1ms
85
//        WriteTimer3(0xD800);    // Send low for 1ms
79
//        WriteTimer3(0xB000);    // Send low for 2ms
86
//        WriteTimer3(0xB000);    // Send low for 2ms
80
//        WriteTimer3(0x1000);    // Send low for 6ms
87
//        WriteTimer3(0x1000);    // Send low for 6ms
81
    }
88
    }
-
 
89
#endif
82
}
90
}
83
 
91
 
84
void timer3_enable() {
92
void timer3_enable() {
85
    // Enable timer and start PWM
93
    // Enable timer and start PWM
86
    T3CONbits.TMR3ON = 1;
94
    T3CONbits.TMR3ON = 1;
87
    pwm_IR_start();
95
    pwm_IR_start();
88
    pwm_on = 1;
96
    PWM_IR_STATE = 1;
89
}
97
}
90
 
98
 
91
void timer3_disable() {
99
void timer3_disable() {
92
    // Disable timer and stop PWM
100
    // Disable timer and stop PWM
93
    T3CONbits.TMR3ON = 0;
101
    T3CONbits.TMR3ON = 0;
94
    pwm_IR_stop();
102
    pwm_IR_stop();
95
    pwm_on = 0;
103
    PWM_IR_STATE = 0;
96
}
104
}