Zeitverzögerung in C++ für Mikrocontroller
-
So hallo, ich hab da ein oder 2 kleine probleme, und hoffe, jemand könnte mir da weiterhelfen:
Ich programmiere zur Zeit ein Ablaufprogramm für einen Mikrocontroller. Das ganze mache ich mit dem Programm Keil µVision2, in C/C++.
Dabei "hänge" ich wie folgt:
1.) Ich mnuss eine Zeitverzögerung zwischen zwei aktionen einfügen, mit
Sleep(xx);
funzt das irgendwie nicht so??!
2.)
Das gesamte Programm soll 10 mal durchlaufen - aber auch hier mit einer Zeitverzögerung - aber größer (60 oder auch 120 min), danach sollte nichts mehr kommen.Wer also kennt sich mit C++ Mikrocontrollerprogrammierung ein wenig aus, bzw. mit zeitverzögerung???
Gruß
Jochen
-
Die Standardbibliotheken bieten keine Zeitverzögerung.
Da mußt du schon in der Doku von dem entsprechenden Microcontroller suchen, ob es sowas gibt.
-
Entweder der µC bzw. dein Compiler hat eine Funktion zum Warten einer bestimmten Zeit, oder du nimmst einfach eine Verzögerungsschleife.
Auf dem µC ist es nicht schlimm, sowas einzusetzen, weil da dein Programm das einzige ist, was drauf läuft. Auf einem Computer ist das kritischer. Eine Verzögerungsschleife würde die CPU-Auslastung auf 100% bringen und unnötig Systemlast erzeugen.
-
Hast du auf der Microcontrollerkarte irgendeine Art von Zeitgeber. Falls ja kannst du damit die Zeitverzögeurung erzeugen.
Wenn der Zeitgeber einen Interrupt erzeugt, bieten die meisten Betriebsprogramme einen Zähler an der mit diesem Interrupt hochgezählt
wird. Dieser wird dann meist als Sysemzeit benutzt. Wenn das Betriebsprogramm Single Tasking ist kannst du für dine Aufgabe dieses Register pollen.Ist es nultitasking fähig sollte des Betriebsprogramm eigentlich eine Sleep-Funktion anbieten die man aufruft.
-
welchen controller hast du genau? dein uC hat sicher einen Timer!!!
lg surf.