|
/*
Timers relative routinesFile: Timers.c
19-May-00 BK Initial edit
08-Dec-03 BK Last update
*/#include "strobcons.h"
#include "timers.h"//
// ** InitTimers -- the routine initializes the MCU timers
//
void InitTimers(void)
{
//
// Timer0 is used as a 20 mS time interval counter.
//
TCNT0 = 0;
TCCR0 = 0x05; // Set prescaler value of CK/1024, run Timer0
//
// Timer1 is used as a PROGRAM SPEED counter.
//
TCNT1 = 0; // Reset Timer1
TCCR1A = 0; // Disable PWM, disconnect timer from output pin
// TCCR1B = 0x05 + (1<//
// Initialize timer interrupt relative registers
//
TIMSK = (1<_SEI(); // Enable interrupts
}
void SleepMCU(unsigned interval) // Sleep CPU on the specified period (uS)
{
_CLI(); // Disable interrupts
OCR1 = --interval; // Set interval value
TCCR1B = 0x0A; // Run the Timer1
while (!(TIFR & (1<TCCR1B = 0; // Stop the Timer1
TIFR |= (1<_SEI(); // Enable interrupts
}/* Timer interrupt handlers */
//
// ** Timer0 overflow interrupt handler
//
#pragma vector = TIMER0_OVF_vect
__interrupt void Timer0_Int(void)
{
TCNT0 = 100; // Reload TIMER0
IntFlags |= TIMER0_BIT; // Set the flag
}
E-mail: info@telesys.ru