Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: kleines Problem mit "halt" Befehl ... Kategorie: Programmierung (von André H. - 27.06.2004 15:39)
Als Antwort auf kleines Problem mit "halt" Befehl ... von Thorsten - 27.06.2004 12:22
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
Hallo Thorsten,

> ich habe ein kleines Problem mit meinem Programm, welches so aussieht:
>
> "
> //------------
>   thread main
> //------------
>
> {
> loop
> {
> if ports.adc(7)*0.004 <3 run daten;
> if p > 10 halt daten;
> }
> }
> "
>
> sobald p den Wert erreicht hat, stopt das Unterprogramm (daten) auch, wie es auch soll.
> Aber, wenn ich AD Port 7 nun öffter unter "3" bringe, läuft irgendwann (in verschiedenen
> Zeitabständen) der Thread daten wieder an, obwohl "p" immernoch > 10 ist.
>
> Warum ist das so ??
> Die Bedingung p > 10 ist doch erfüllt und sollte daten stoppen....

Das Programm macht genau das, was Du im Code geschrieben hast.
Sobald die Spannung an ADC(7) unter 3,0V sinkt wird der Thread "daten" gestartet.
Bei run <threadname> erfolgt ein Threadwechsel.
Nachdem der Thread main wieder "Rechenzeit bekommt und p>10 ist, wird
der Thread daten wieder angehalten.
Das ist einfach Logik.

Wenn Du willst, daÃ? der Thread daten erst wieder anlaufen soll, wenn p kleiner gleich 10
ist, so muÃ? dies so aussehen:
//------------
  thread main
//------------
{
 loop
 {
  if p > 10
     halt daten;
    else
     if ports.adc(7)*0.004<3 run daten;
 }
}


MfG André H.

PS: Benutze bitte die code-Tags, um Quellcode zu formatieren.
      Ansonsten wird der Quellcode besonders bei den Benutzung von gröÃ?er- und kleiner-Zeichen
      nicht korrekt angezeigt !



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: