Hallo Leute, ich habe ein bissschen das C programmieren für den PC (Windows) unter Code-Blocks mit GCC (MinGW) angefangen. Bisher hatte ich aber nur Mikrocontroller programmiert. Da ist es ja mit den Zeiten recht einfach. Man stellt einen Timer ein, bei dessen Überlauf eine ISR angesprungen wird. Bitte steinigt mich nicht gleich, ich bin programmiertechnischer Laie. Google lieferte zu meinen Suchen nur Infos für µCs, oder C#, oder C++. Aber wie läuft sowas in klassischem C auf dem PC ab? Danke!
Zwei von vielen Möglichkeiten: CreateWaitableTimer() & co. http://msdn.microsoft.com/en-us/library/windows/desktop/ms682492%28v=vs.85%29.aspx Ganz klassische WinAPI: SetTimer()/KillTimer() http://msdn.microsoft.com/en-us/library/windows/desktop/ms644906%28v=vs.85%29.aspx
Mit SetTimer http://msdn.microsoft.com/en-us/library/windows/desktop/ms644906%28v=vs.85%29.aspx Kannst Du deinem Programm gegelmäßig eine Message senden lassen, oder eine Funktion aufrufen lassen, fast wie ein richtiger Interrupt. Aber nur mit 1mS Auflösung. mfG vom ingo
Danke! 1ms dürfte ja für die meisten Sachen am PC reichen. Wenn's was Zeitkritisches ist, werd ich sowieso nen µC nehmen, z.B. zur Abtastung von Messwerten. Der PC darf dann Datenmengen- und rechaufwändige Aufgaben erledigen.
wie wärs mit einem posix-timer? der funktioniert sowohl unter windows als auch unter linux/unix
Dane S. schrieb: > 1ms dürfte ja für die meisten Sachen am PC reichen. Ja, aber auch da bitte nicht drauf verlassen. Da du dir die CPU mit anderen Programmen teilst kann es auch länger dauern bis dein Prozess wieder ausgeführt wird. Der Timer wird nur garantiert nicht vor Ablauf aufgerufen.
Das denke ich mir schon, dass das am PC nicht so schön ist wie am µC, wo die Timer-ISR garantiert alle z.B. 100µs aufgerufen wird. Deshalb ist wohl auch das Timing für die ganzen Selbstbau-CNC-Fräsen ein schwieriges Thema.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.