Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik
PIT-Namensbereichsreferenz

Abstraktion der historischen Zeitgeber PITs. Mehr ...

Klassen

union  Control
 
union  Mode
 

Aufzählungen

enum  AccessMode { LatchCountValue = 0, LowByteOnly = 1, HighByteOnly = 2, LowAndHighByte = 3 }
 
enum  OperatingMode {
  InterruptOnTerminalCount = 0, ProgrammableOneShot = 1, RateGenerator = 2, SquareWaveGenerator = 3,
  SoftwareTriggeredStrobe = 4, HardwareTriggeredStrobe = 5
}
 
enum  Format { Binary = 0, BCD = 1 }
 

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
 

Ausführliche Beschreibung

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.

Zu beachten
Interrupts sollten beim Konfigurieren des Zeitgebers abgeschalten werden

Dokumentation der Funktionen

◆ delay()

bool PIT::delay ( uint16_t  us)

Warte gegebene Zeit (aktiv)

Zu beachten
Die maximale Wartezeit beträgt ca. 55 000 us
Parameter
usWartezeit in Mikrosekunden
Rückgabe
true bei erfolgreicher Beendigung, false bei Fehler (z.B. Wartezeit zu groß)

◆ get()

uint16_t PIT::get ( void  )

Liest den aktuellen Timerwert aus.

Rückgabe
ausgelesener Wert

◆ isActive()

bool PIT::isActive ( void  )

Prüfe ob der Timer aktiv ist (zählt)

Rückgabe
true falls aktiv

◆ pcspeaker()

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.

Zu beachten
Nicht jeder PC hat einen (aktiverten) PC Speaker, außerdem macht nicht jeder Emulator immer mit.
Parameter
freqdie abzuspielende Frequenz in HZ (und 0 = deaktiveren)

◆ set()

bool PIT::set ( uint16_t  us)

Starte Timer Setzt den Timer Channel 2 auf die vorgegebene Zeit und startet das Zählen.

Zu beachten
Die maximale Wartezeit beträgt ca. 55 000 us
Parameter
usWartezeit in Mikrosekunden
Rückgabe
true wenn der Zähler läuft, false wenn die Wartezeit zu groß ist.

◆ waitForTimeout()

bool PIT::waitForTimeout ( void  )

Warte auf Beendigung des Timers.

Rückgabe
true bei erfolgreicher Beendigung nach Ablauf der Zeit, false falls Timer nicht aktiv