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

Внутренние часы atmega168

Добавлено: Чт янв 09, 2014 11:18:54
kotriks
Ребята помогите реализовать внутренние часы реального времени, а то у меня повсей видимости они отстают сделан просто

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

ISR(TIMER0_OVF_vect) {

time++;

   if (time==488)     {asm("wdr");time=0;seconds++;}
   if (seconds==60)   {seconds=0; minutes++;  }
   if (minutes==60)   {minutes=0; hours++;    }
 }

TCCR0B=0x02;
TIMSK0=0x01;
может кварц повесить 32768 кГц?
только не знаю как регистры и формулу прописать помогите пожалуйста.

Re: Внутренние часы atmega168

Добавлено: Чт янв 09, 2014 13:35:10
uk8amk
Часовой кварц 32768Гц.

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

/*---------------------------------------------- 
RTC IRQ (1 sec)
------------------------------------------------*/
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
        OCR2A = 0;//sync process
        rtc_irq = TRUE;//было прерывание от секунд
        
        /*== time correction ==*/
        if( rtc_corr_cnt < 0 )//negative correction
                {
                ++rtc_corr_cnt;
                return;
                }                 
        if( ( rtc_sec == 0 ) && ( rtc_min == 0 ) && ( rtc_hour == 0 )  )//коррекция запускается в полночь
                {
                if( rtc_corr > 0 )//positive correction
                        {
                        rtc_sec = rtc_corr;//значение коррекции (+/- секунд)
                        return;
                        }
                else
                        {
                        rtc_corr_cnt = rtc_corr;
                        }
                }
        /*====*/
        ++rtc_sec;        
        if( rtc_sec>59 )
                {
                rtc_sec = 0;
                ++rtc_min;
                if( rtc_min>59 )
                        {
                        rtc_min = 0;
                        ++rtc_hour;
                        if( rtc_hour>23 )
                                rtc_hour = 0;
                        };
                };              
}
инициализаця таймера:

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

// Timer/Counter 2 initialization
// Clock source: Crystal on TOSC1 pin
// Clock value: PCK2/128
// Mode: Normal top=FFh
// OC2A output: Disconnected
// OC2B output: Disconnected
ASSR=0x20;
TCCR2A=0x00;
TCCR2B=0x05;
TCNT2=0x00;
Читать раздел даташита
Asynchronous operation
of the Timer/Counter
Asynchronous Operation of
Timer/Counter2
До полного понимания сути процесса.

Re: Внутренние часы atmega168

Добавлено: Пт янв 10, 2014 02:29:40
kotriks
спасибо попробуем!

Re: Внутренние часы atmega168

Добавлено: Пт янв 10, 2014 09:33:28
kotriks
ещё вопрос, если у меня фьюзы стоят на 8мгц с делителем на 8 нечего не нужно менять в коде, это роли не играет?

Re: Внутренние часы atmega168

Добавлено: Пт янв 10, 2014 17:51:14
uk8amk
Для работы асинхронного таймера2 с часовым кварцем, тактирование должно быть настроено фузами на внутр.RC генератор.