Problem mit Delay-Befehl Kategorie: Programmierung C (von A.Kosak - 9.03.2007 11:47) | ||
| ||
Hallo, ich hatte in einem früheren Beitrag folgendes Problem beschrieben: Ich verwende die Mega128 auf dem zugehörigen Board und einer 8x relaisplatine (eigentlich für C-Contril 1), um eine Maschine zu steuern. Dabei brauche ich an verschiedenen Stellen des Programmes Pausen, die ich entweder mit Thread_Delay oder mit AbsDelay realisieren wollte. Das Programm läuft ganz ordentlich, d.h. die einzelnen Abläufe werden korrekt abgearbeitet, nur macht die Mega128 ab und an statt der angegebenen Pausen wesentlich längere, z.B. bei einem "Thread_Delay(20)" der im Normalfall nicht sehr lange dauert bleibt das Programm manchmal mehrere Sekunden lang stehen, um dann wieder ganz normal weiterzulaufen. Au�erdem sind die angegebenen Verzögerungszeiten sehr stark unterschiedlich, Thread_Delay(100) dauert viel viel länger, als AbsDelay(100). Ich habe sehr viel herumprobiert, ohne Erfolg. Die momentane Lösung: Eine eigene Pauseroutine... // Wartefunktion - Warte(100) = ca. 1 sek. void Warte (int delval) { int i; int j; j=0; do { for (i=0; i<220; i++); j++; } while (j Das ist zwar nicht besonders elegant, aber die Pausen sind in etwa reproduzierbar. In diesem Fall steht der Compiler zwar auf Multithread, aber ich habe nur das Hauptprogramm, das in einer Endlosschleife abgearbeitet wird, d.h. die Lösung ist akzeptabel. Nicht aber wenn man aber mehrere Threads braucht, denn während der Pause ist der Prozessor ausgelastet. Hat schon Mal jemand dieses Problem gehabt? Kann das an einem Hardwarefehler bei mir liegen? | ||
Antwort schreiben Antworten: Re: Problem mit Delay-Befehl (von A.Kosak - 17.03.2007 7:30) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum