
Abstraktion der historischen Zeitgeber PITs. Mehr ...
Klassen | |
union | Control |
union | Mode |
Funktionen | |
bool | set (uint16_t us) |
Starte Timer Setzt den Timer Channel 2 auf die vorgegebene Zeit und startet das Zählen. Mehr ... | |
uint16_t | get (void) |
Liest den aktuellen Timerwert aus. Mehr ... | |
bool | isActive (void) |
Prüfe ob der Timer aktiv ist (zählt) Mehr ... | |
bool | waitForTimeout (void) |
Warte auf Beendigung des Timers. Mehr ... | |
bool | delay (uint16_t us) |
Warte gegebene Zeit (aktiv) Mehr ... | |
void | pcspeaker (uint32_t freq) |
Spiele die Frequenz auf dem PC Speaker ab Da der PC Speaker mit dem PIT Channel 2 verbunden ist, kann damit ein akustisches Signal ausgegeben werden. Während dieser Zeit darf natürlich der Timer nicht anderweitig verwendet werden. Mehr ... | |
void | disable (void) |
Deaktiviere den Timer. | |
Variablen | |
const uint8_t | channel = 2 |
const uint64_t | base_frequency = 1193182ULL |
Abstraktion der historischen Zeitgeber PITs.
PCs hatten frühers mindestens einen Timer-Bausteine vom Typ 8253 oder 8254, moderne Systeme haben einen dazu kompatiblen Baustein. Jeder dieser Bausteine besitzt drei 16 Bit breite Zähler ("Channel"), die mit einem Takt von 1,19318 MHz betrieben werden. Die Zählgeschwindigkeit ist also unabhängig vom Prozessortakt.
Traditionell wurde er erste Zähler (Channel 0) zum auslösen von Unterbrechungen verwendet, der zweite (Channel 1) steuerte den Speicher-Refresh während der dritte (Channel 2) dem PC Speaker zugeordnet war.
Wir können dies zum klaibrieren verwenden.
Hier wird Channel 2 verwendet, der komplett in Software gesteuert werden kann.
bool PIT::delay | ( | uint16_t | us | ) |
Warte gegebene Zeit (aktiv)
us | Wartezeit in Mikrosekunden |
uint16_t PIT::get | ( | void | ) |
Liest den aktuellen Timerwert aus.
bool PIT::isActive | ( | void | ) |
Prüfe ob der Timer aktiv ist (zählt)
void PIT::pcspeaker | ( | uint32_t | freq | ) |
Spiele die Frequenz auf dem PC Speaker ab Da der PC Speaker mit dem PIT Channel 2 verbunden ist, kann damit ein akustisches Signal ausgegeben werden. Während dieser Zeit darf natürlich der Timer nicht anderweitig verwendet werden.
freq | die abzuspielende Frequenz in HZ (und 0 = deaktiveren) |
bool PIT::set | ( | uint16_t | us | ) |
Starte Timer Setzt den Timer Channel 2 auf die vorgegebene Zeit und startet das Zählen.
us | Wartezeit in Mikrosekunden |
bool PIT::waitForTimeout | ( | void | ) |
Warte auf Beendigung des Timers.