Preruseni casovace na x51

Snail Instruments snail@iol.cz
Sobota Únor 26 21:31:47 CET 2005


>Chapu. Ja to mozna nenapsal uplne presne. Me v podstate nevadi, pokud
>preruseni nastane ne vzdy PRESNE po danem poctu cyklu, potrebuji aby
>dlouhodobe byl pocet cyklu do spusteni rutiny preruseni stejny. Tedy pokud
>jednou bude vice taktu, musi byt priste o to mene.

Obvodove nejjednodussi je udelat kompenzaci v sw, tim se vyhnete potahovani 
krystalu apod. Vlastne nebudete na frekvenci krystalu vubec zavisly. 
Zjistite si cas preruseni s dostatecnou presnosti (treba 1 nanosekundy, coz 
je presnost v tomto pripade zbytecna, jenom pro ilustraci) a tuto hodnotu 
pri kazdem preruseni prictete do promenne. Ideovy navrh je asi tento:

perioda=32465932; //perioda preruseni v ns

void preruseni(void){
  cas+=perioda
  if (cas>1000000000){
   sekundy++;
   //propagace prenosu do minut, hodin, dni...
   cas-=1000000000;
   fnovycas=1; //signalizace hlavni smycce, ze se cas zmenil
  }
}

Promennou perioda je potom mozne upravovat v nejakem specialnim modu primo 
tlacitky hodin nebo dokonce vypocitat pri oprave casu (nastaveni hodin) 
novou periodu automaticky.

J. Hanzal





Další informace o konferenci Hw-list