/***************************************************************************** * * * P I T * * * *---------------------------------------------------------------------------* * Beschreibung: Programmable Interval Timer. * * * * Autor: Michael Schoettner, 3.7.2022 * *****************************************************************************/ #include "devices/PIT.h" #include "kernel/IOport.h" #include "kernel/Globals.h" /***************************************************************************** * Methode: PIT::interval * *---------------------------------------------------------------------------* * Beschreibung: Zeitinervall programmieren. * * * * Parameter: * * us: Zeitintervall in Mikrosekunden, nachdem periodisch ein * * Interrupt erzeugt werden soll. * *****************************************************************************/ void PIT::interval (int us) { /* hier muss Code eingefuegt werden */ } /***************************************************************************** * Methode: PIT::plugin * *---------------------------------------------------------------------------* * Beschreibung: Unterbrechungen fuer den Zeitgeber erlauben. Ab sofort * * wird bei Ablauf des definierten Zeitintervalls die * * Methode 'trigger' aufgerufen. * *****************************************************************************/ void PIT::plugin () { /* hier muss Code eingefuegt werden */ } /***************************************************************************** * Methode: PIT::trigger * *---------------------------------------------------------------------------* * Beschreibung: ISR fuer den Zeitgeber. Wird aufgerufen, wenn der * * Zeitgeber eine Unterbrechung ausloest. Anzeige der Uhr * * aktualisieren und Thread wechseln durch Setzen der * * Variable 'forceSwitch', wird in 'int_disp' behandelt. * *****************************************************************************/ void PIT::trigger () { /* hier muss Code eingefuegt werden */ // alle 10ms, Systemzeit weitersetzen systime++; // Bei jedem Tick einen Threadwechsel ausloesen. // Aber nur wenn der Scheduler bereits fertig intialisiert wurde // und ein weiterer Thread rechnen moechte /* hier muss Code eingefuegt werden */ }