[an error occurred while processing this directive]
|
/* Период таймера для отсчёта таймаутов 1мс */
#define SAS_TIMER_PERIOD 1
__flash word _sastval = (SAS_TIMER_PERIOD * SYS_CLK) / (1024 * 1000UL);
/* Период таймера блокировки автоматов, 1с */
#define SAS_SHUT_TIMER_PERIOD 0.5
/* 12000000Hz / (1024 * 11718) ~ 1Hz = 1.00006s (1000.06ms) */
__flash word _shuttval = (SAS_SHUT_TIMER_PERIOD * SYS_CLK) / 1024;
//extern unsigned char FlagWritelog ;
bool GreenLED = false, RedLED = false, BlueLED = false;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* InitSASTimers - инициализация таймеров для использования в SAS
* используется 3-й таймер и регистры B (1 мс) и С (1 с)
* Вход:
* Выход:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void InitSASTimers(void)
{
/* Остановим таймер, очистим счётчик */
TCCR3A = TCCR3B = TCNT3 = 0;
/* Значения для сравнения */
OCR3B = _sastval;
OCR3C = _shuttval;
/* Запустим таймер clk/1024 */
TCCR3B = (1 << CS32) | (1 << CS30);
ETIMSK |= (1 << OCIE3B) | (1 << OCIE3C);
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* sastout - обработчик прерывания таймера на сравнение с регистром B
* Вход:
* Выход:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#pragma vector = TIMER3_COMPB_vect
__interrupt void sastout(void)
{
if (_atresptout)
{
--_atresptout;
}
if (_sasresptout)
{
--_sasresptout;
}
if (_saspolltout)
{
--_saspolltout;
}
if (_SASInstallEGMtout)
{
--_SASInstallEGMtout;
}
OCR3B = TCNT3 + _sastval;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* sastout - обработчик прерывания таймера на сравнение с регистром C
* Вход:
* Выход:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#pragma vector = TIMER3_COMPC_vect
__interrupt void sasshutt(void)
{
if (_gmsdcheck)
{
--_gmsdcheck;
}
if (_writedt)
{
--_writedt;
}
OCR3C = TCNT3 + _shuttval;
}
E-mail: info@telesys.ru