Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Problem mit Delay-Befehl Kategorie: Programmierung C (von A.Kosak - 9.03.2007 11:47)
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
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)