Casovace pro AVRka
Petr Stehlik
petr.stehlik@atlas.cz
Pondělí Květen 5 21:35:11 CEST 2008
Neni to lepsi strcit primo do avr?
//-----------------------------------------------
// Systemovy casovac inicializace
// vstupy: frekvence krystalu hodin a pozadovana frekvence
//-----------------------------------------------
void SystemTimeIni(long int krystal, long int pozadovana )
{
long int pomer ;
char predelic=0;
pomer=krystal/pozadovana;
if (pomer<65535)
{
pomer=pomer;
predelic=1; // preddelicka 1
goto hototo;
}
if (pomer<524280)
{
pomer=pomer/8;
predelic=2; // preddelicka 8
goto hototo;
}
if (pomer<4194240)
{
pomer=pomer/64;
predelic=3; // preddelicka 64
goto hototo;
}
if (pomer<16776960)
{
pomer=pomer/256;
predelic=4; // preddelicka 256
goto hototo;
}
hototo:
OCR1A=(short int)pomer;
TCCR1B=predelic | _BV(WGM12);
TIMSK|=_BV(OCIE1A); // povol preruseni od preteceni casovace 1
}
switch/case by bylo peknejsi
Petr
Další informace o konferenci Hw-list