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