13khz Timer gesucht

wizkid

Grünschnabel
Also folgendes.

Erstmal Hallo.

Ich hoffe jemand von euch hat eine Ahnung wie ich einen Timer schreibe der 13hkz liefert.
Ich muss nämlich diesen Takt an dem USB port ausgeben .

Ist das überhaupt möglich ?

Kann ich direkt die Zeit der CPU nehmen
 
Unter Windows könntest du da mit QueryPerformanceFrequency() und QueryPerformanceCounter() arbeiten. Damit schaffst du eine Auflösung im Mikrosekundenbereich.
Hier mal ein kleines Beispiel:
C++:
double dPeriod = 1000.0 / 13.0; // Periodendauer bei 13 KHz in Mikrosekunden

while( 1 )
{
    // Ausgabe an USB-Port
    
    HighResolutionTimeout(dPeriod);
}                               

void HighResolutionTimeout(double dMicroseconds)
{
    LARGE_INTEGER liFrequency;
    LARGE_INTEGER liStartCounter;

    QueryPerformanceFrequency(&liFrequency);
    QueryPerformanceCounter(&liStartCounter);

    while( 1 )
    {
        LARGE_INTEGER liCounter;
        QueryPerformanceCounter(&liCounter);
    
        double dDiff = (double)(liCounter.QuadPart - liStartCounter.QuadPart) / 
                       (double)liFrequency.QuadPart * 1000000.0;
                       
        if( dDiff > dMicroseconds )
        {
            break;
        }
    }                               
}
Gruß
MCoder
 
Thanks

Du sagst, dass es unter Windows so ist.

Leider brauche ich den Code für einen Mac. ( Sorry hätte ich dazuschreiben sollen )

Hast du da auch ein Beispiel?
 
Zuletzt bearbeitet:
Beim Mac kann ich dir leider nicht helfen, damit kenne ich mich nicht aus. Solche Sachen sind immer ziemlich OS-spezifisch. Vielleicht findest du ja was mit den Stichworten "High Resolution Timer".

Gruß
MCoder
 
Zurück