Real Time Clock — Änderungen 4198 → 4705

Zeile 1: Zeile 1:
 
{{Stub}}
 
{{Stub}}
 
Die '''Real Time Clock''' (= '''RTC''') bzw. '''Echtzeituhr''' eines [[x86]]- bzw. [[x86-64]]-Computers gehört zum [[CMOS]] und aktualisiert die darin gespeicherte Uhrzeit und das Datum.
 
Die '''Real Time Clock''' (= '''RTC''') bzw. '''Echtzeituhr''' eines [[x86]]- bzw. [[x86-64]]-Computers gehört zum [[CMOS]] und aktualisiert die darin gespeicherte Uhrzeit und das Datum.
 +
 +
== Programmierung ==
 +
Die RTC wird über die Statusregister im CMOS programmiert. Wenn Bit 6 im [[CMOS#Statusregister B|Statusregister B]] gesetzt ist, kann die RTC kann periodisch den [[IRQ]] 8 auslösen. Die Frequenz lässt sich mit dem [[CMOS#Statusregister A|Statusregister A]] einstellen.
 +
<c>void rtc_init() {
 +
cmos_write(0x0B, cmos_read(0x0B) | 0x40); // IRQ aktivieren
 +
cmos_write(0x0A, (cmos_read(0x0A) & 0xF0) | 0x0F); // Interrupt alle 500ms
 +
}</c>
 +
 +
Im IRQ-Handler muss dann das [[CMOS#Statusregister C|Statusregister C]] ausgelesen werden, das die Informationen über die Ursache des Interrupts liefert. Man kann den Wert nach dem Lesen allerdings auch einfach ignorieren.
  
 
== Siehe auch ==
 
== Siehe auch ==
 
* [[CMOS]]
 
* [[CMOS]]
 +
* [http://wiki.osdev.org/RTC Artikel im osdev.org-Wiki]
  
 
[[Kategorie:Hardware]]
 
[[Kategorie:Hardware]]