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