Zacal jsem si stavet HTPC, chtel jsem tam soupnout informacni LCD. Jenze po vypnuti by lcd neukazovalo nic, coz mi vadilo. Tak jsem si tam naprogramoval hodiny.
Pro zajemce o vyrobu vlastnich hodin prikladam pouze rutinu pro nastaveni casovace 2 do asynchronniho rezimu a obsluhu preruseni. Dalsi bizuterii jako nastavovani casu, vykreslovani na zobrazovaci prvek, doplneni kalendare atd. nechavam na programatorovi.
AVR potrebuje pouze krystal a kondiky na pinech TOSC1 a TOSC2
volatile char hodiny=0;
volatile char minuty=0;
volatile char sekundy=0;
void RTC_Init()
{
OCR2=31;
TCCR2 = (1<<CS22) | (1<<CS20) | (1<<WGM21) | (1<<CS21);
ASSR = (1<<AS2);
TIMSK |= (1<<OCIE2);
}
ISR (TIMER2_COMP_vect)
{
sekundy++;
if(sekundy>59)
{
sekundy-=60;
minuty++;
}
if(minuty>59)
{
minuty-=60;
hodiny++;
}
if(hodiny>23)
{
hodiny-=24;
}
}