Страница 1 из 1

RTC Atmega16

Добавлено: Чт мар 22, 2012 11:34:01
techlab
Вопрос вот какого характера, никогда до сего момента RTC юзать не приходилось, покурил даташит, вроде все написал, на кварце меандр в 3276* присутствует, что говорит о том, что на работу от него переключились. Но обработчик прерывания по переполнению судя по всему не отрабатывает.
Гляньте не замыленным взглядом правильно ли я инициализацию выполняю.
Писано в IAR AVR 5.3

Код: Выделить всё

void rtc_init(void)
{
 //Отключаем прерывания Таймера 2.
    TIMSK &= ~((1<<TOIE2) | (1<<OCIE2));
 
    //Переводим таймер 2 в асинхронный режим, такт от часового кварца
    ASSR |= (1<<AS2);
 
    TCNT2 = 0x00;
    TCCR2 = 0x05; //прескаллер  128.
    OCR2  = 0x00;
 
    // Ждем готовности таймера
    while (ASSR & (1<<TCN2UB) | (1<<OCR2UB) | (1<<TCR2UB));
 
    // Разрешаем прерывания от Таймера 2.
    TIMSK |= (1<<TOIE2);
 
    // Разрешаем прерывания глобально.
__enable_interrupt();
}