Hallo!
Ich habe mal ein paar low-level Funktionen geschrieben, um die CMOS-Zeit auszulesen. Das klappt auch soweit, aber irgendwie kann ich mit den erhaltenen Zahlen nichts anfangen.
Die Sekundenzahl, die ich erhalte, fängt nicht bei 0 an und geht teilweise nicht in Sekundenschritten weiter. Teilweise werden einfach Werte übersprungen, die Werte gehen jenseits 60
rolleyes
und machen dann 10er Schritte.
Hier mal mein Code:
aufgerufen wird das ganze dann mit
unsigned char sec = cmos_read(0);
Währe nett, wenn mir da einer weiterhelfen könnte.
Ich habe mal ein paar low-level Funktionen geschrieben, um die CMOS-Zeit auszulesen. Das klappt auch soweit, aber irgendwie kann ich mit den erhaltenen Zahlen nichts anfangen.
Die Sekundenzahl, die ich erhalte, fängt nicht bei 0 an und geht teilweise nicht in Sekundenschritten weiter. Teilweise werden einfach Werte übersprungen, die Werte gehen jenseits 60


Hier mal mein Code:
Code:
unsigned char cmos_read(unsigned char offset) {
unsigned char tmp = inportb(CMOS_PORT_ADDRESS);
outportb(CMOS_PORT_ADDRESS, (tmp & 0x80) | (offset & 0x7F));
return inportb(CMOS_PORT_DATA);
}
void outportb (unsigned short _port, unsigned char _data)
{
__asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
}
unsigned char inportb (unsigned short _port)
{
unsigned char rv;
__asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port));
return rv;
}
unsigned char sec = cmos_read(0);
Währe nett, wenn mir da einer weiterhelfen könnte.
