
07.09.2009, 17:20
|
|
Новичок
Регистрация: 25.08.2009
Сообщений: 10
Провел на форуме: 52659
Репутация:
1
|
|
для начала надо знать частоту кварца - при 16MHz ATMega надо сделать так
Код:
// здесь пишем время в часах
#define YOU_HOUR_VALUE 18
// расчетное значение будет 61,274509803921568627450980392157 прерываний в секунду =)) округляем до 61, без часового кварца точности не будет.
#define TIMER_COUNTER 61
#define MAX_COUNTER TIMER_COUNTER*60*60*YOU_HOUR_VALUE
int counter = 0;
void timer0_interrupt(void)
{
counter++;
if (counter > MAX_COUNTER)
{
counter = 0;
_moya_funkcia_01();
}
}
void _moya_funkcia_01(void)
{
// your code here
}
void main(void)
{
TCCR0 = 0b00000101; // (16 000 000 / 1024)
TCNT0 = 0x00;
OCR0 = 0xFF; // ((16 000 000 / 1024) / 255) = 61 Hz
TIMSK = 0b00000011;
while(1)
{
// your code here
}
};
регистры могут быть неточно указаны, лень ща копать ДШ =)
|
|
|