Maximale Frequenz (ohne realtime erweiterung)
-
Hi Leute!
Wollte mal wissen welche Frequenzen ich unter Linux
mit C erzeugen kann, aber ohne eine realtime Erweiterung
des Kernels.
Benötige nämlich Frequenzen zischen 500 und 2000 Hz.
Ich hab mit sched_setscheduler() versucht die Priorität
zu erhöhen, aber es hat irgendwie nicht funktioniert.mfg
-
Welche Frequenz? Das dein Prozess 500 und 2000 mal pro Sekunde aufwacht?
-
Ich will einfach mit einem Timer eine Frequenz erzeugen,
und diese dann über die serielle Schnittstelle rausschicken.
Komm ich da um die realtime Erweiterung nicht herum?mfg
-
ich denke es sollte leicht moeglich sein 2000 mal pro sec was per outb an einen port zu schicken
reduzier mal dein prog auf folgendes
if ( ioperm(DEIN_PORT, 3, 1) ) {
perror("ioperm");
return 0;
}for( long i = 0; i < 2000; ++i) {
outb ( dein_wert, DEIN_PORT );
}und miss die zeit
du brauchst #include <sys/io.h> und root rechte zum ausfuehren
-
Schlecht. Sehr schlecht. So wirst du weit mehr als 2Mhz bekommen (bitte lasst eure 386er im Schrank, ich glaube euch, dass ihr damit weniger hinbekommt). - Nur wirst du es nie schaffen so genau Frequenzen zu realisieren.
Eventuell kommst du mit busy-waiting nahe an das Ergebniss, wobei es dann natuerlich davon abhaengt wann genau der Sheduler dein Programm ran laesst. Je hoeher die Last des PCs, desto ungenauer wird das ganze.
Afair gehn die interen Timer bis max. 1MHz, und bin mir nicht mal sicher ob du das praktisch ueberhaupt erreichen kannst.