Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: FreakyPenguin am 01. November 2005, 07:57

Titel: Real Time Clock - Komische werte
Beitrag von: FreakyPenguin am 01. November 2005, 07:57
Hallo zusammen

Ich hab versucht in meinem OS die Zeit ausm CMOS auszulesen. Das auslesen klappt auch schon. Die werte werden alle 0,1 Sekunden ausgelesen. Nun, hab ich festgestellt, dass die Zahlen kömische sprünge machn. Da wir zum Beispiel bis 27 hochgezählt der nächste Wert ist dann 32. Und so weiter bis 90 (glaub ich). Ich vermute, das es dann aber mit all den schritten doch wieder 60 Sekunden sind  :?.

Hat jemand eine ahnung  was das sein könnte ?


Gruss Toni
Titel: Real Time Clock - Komische werte
Beitrag von: bitmaster am 01. November 2005, 10:12
Standardmäßig werden BCD Zahlen ausgegeben. Vielleicht liegt es daran. Dort gibt es dann zwei Möglichkeiten. Du ließt die BCD Zahlen aus und wandelst die entsprechend um. Oder du deaktiviert im Statusregister B das DM (Datenmodus) Bit. Dann sind die Zahlen binär. Gute Erklärungen findest du im PC-Hardwarebuch. In der Auflabe 7 findest du es ab Seite 658. Hoffe dir damit geholfen zu haben.
Titel: Real Time Clock - Komische werte
Beitrag von: zacK am 01. November 2005, 10:13
in stormos ist dieses problem so gelösst:
void get_time()
{
 TIME.sec=read_CMOS(0x0);
 TIME.min=read_CMOS(0x2);
 TIME.hour=read_CMOS(0x4);

 TIME.hour=((TIME.hour>>4)*10+(TIME.hour & 0xF));
 TIME.min=((TIME.min>>4)*10+(TIME.min & 0xF));
 TIME.sec=((TIME.sec>>4)*10+(TIME.sec & 0xF));
}

warum weiss ich jedoch nicht... wahrscheindlich bcd codierung oder so...
Titel: Real Time Clock - Komische werte
Beitrag von: ena am 01. November 2005, 12:14
Ja also die Zahlen stehen meistens im bcd und ich glaube das zb. die sekunden nur bis 30 gezaehlt werden und dann mit 2 multipliziert werden.
Titel: Real Time Clock - Komische werte
Beitrag von: FreakyPenguin am 01. November 2005, 12:52
Vielen Dank, jetzt hab ichs hingekriegt !!