Gast
#3329789
Servus zusammen, ich habe folgende Idee und bin mir gerade nicht sicher ob man das in C überhaut oder vielleicht sogar in schön verwirklichen kann. Gleich vorab: Ich suche jetzt nicht unbedingt fertige Lösungen, nur Ansätze oder ggf. Alternativlösungen oder tips wie man sowas schön programmieren kann. Also, es dreht sich alles darum, dass ich ein paar Codezeilen habe, die mit mittlerer Priorität abgearbeitet werden sollen, die aber sehr viel und lange auf unterschiedliche Hardware wartet. Ein anderer Codeabschnitt läuft ohne derartige Warteschleifen, soll aber auch mit niedrigerer Priorität abgearbeitet werden. Nun ist meine Idee, anstatt langen while(...); wartereien, eher eine Funktion wie "resumeOnInterrupt()" einzufügen, die solange einen anderen Prozess laufen lässt, bis eben ein bestimmter Interrupt auftritt. Dann soll der Code nach dem Resume wieder ausgeführt werden. Wahrscheinlich geht das ganze ein wenig in Richtung mini-Betriebssystem. Meint ihr, das ist sinnvoll? Und habt ihr ne idee wie man sowas machen könnte? Den Prozesscounter in C auslesen dürfte ja relativ schwierig sein, aber im Interrupt wird er ja soweit ich weiß auf den Stack geladen, man müsste also nur in einem "naked"-Interrupt (dass, man auch weiß, was wo am Stack liegt) den Stack lesen und dort eben den PC des anderen Prozessen rein schreiben. Nach einem reti sollte ja dann der andere Prozess laufen. Natürlich sollte man dabei auch das Status-Register noch speichern und wiederherstellen. Nur wie kann dann z.B. in einer "resumeOnInterrupt()"-Funktion ebenfalls den PC modifizieren?! Ich hoffe ihr versteht was ich meine. Was haltet ihr davon und könnt ihr mir Tips, Anregungen oder auch gern gemachte Fehler sagen? Vielen Dank Gruß Andreas