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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> > > > > Hallo, > > > > > irgenwie verstehe ich mein Programm nicht. Offensichtlich mache ich etwas falsch, aber was? > > > > > Ich glaube es liegt ein grundsätzlicher Denkfehler vor. Das Programm soll bei Betätigung eines > > > > > Schalters, H-L-Flanke, einen Timer anstoßen, der eine bestimmte Zeit an Sekunden > > > > > wartet, bevor er eine Meldung ausgiebt. (Derzeit <Timer abgelaufen>,später soll ein Relais bei > > > > > steigenden Flanke eingeschaltet werden, und bei fallender Flanke zeitverzögert ausgeschlatet werden). > > > > > Soweit funktioniert das Prog auch so wie es soll, aber wenn ich die Zeilen > > > > > hwcom.print("...starte Timer"); > > > > > hwcom.ret(); > > > > > im Thread "nachlauf" auskommentiere, dann läuft der Timer nur genau ein mal ab! Dann tut sich > > > > > nix mehr! Erst habe ich geglaubt es liege an der Geschwindigkeit und habe stattdessen > > > > > einen sleep von 50, dann 100, 200 und schließlich 1000ms eingefügt, aber das hilft auch nicht. > > > > > > > > > > Hat irgendjemand eine Idee? Oder ist der ganze Ansatz irgendwie nix. Ich habe so die Vermutung, > > > > > es liegt an der Flankengeschichte, ev. funktioniert das nicht ganz richtig! ...aber event. sehe ich > > > > > auch den Wald vor lauter Bäumen nicht.... > > > > > > > > > > Ich wäre dankbar für eine Antwort (oder einen neuen Ansatz). > > > > > > > > > > > > > > > > > hallo .. habe mich mal an deinem programm versucht, > > > > > > > > verusche es zu laden... wenn alles ok dann... :-) > > > > ansonsten versuch es mit kleinen anpassungen an dein programm > > > > > > > > >> großer fehler = reset ohne halt am ende vom thread << > > > > > > > > > > > > hier das geänderte Prog. >>>>>>>>>>>>>>>>>>>>>> > > > > > > > > const schalter = 10; // Eingang P2, PIN48 > > > > const wartezeit = 5; // in Sekunden > > > > > > > > int nachlauf_busy > > > > int timerflag; > > > > > > > > > > > > thread nachlauf > > > > { > > > > nachlauf_busy = -1; > > > > hwcom.print(" L->H Flanke " + 13 +10); // wenn alles ok ,entfernen... > > > > wait not ports.get(schalter); // warte auf low-flanke > > > > hwcom.print(" H->L Flanke " + 13 +10); // wenn alles ok ,entfernen... > > > > hwcom.print("...starte Timer" + 13 +10); // wenn alles ok ,entfernen... > > > > sleep ( wartezeit * 1000); > > > > nachlauf_busy = 0; > > > > timerflag = -1; // timerflag sperren... > > > > halt; // reset ohne halt = ERROR... // halt am ende benötigt kein reset... > > > > > > > > } // end thread nachlauf > > > > > > > > > > > > thread main > > > > { > > > > // hardware initialisieren... > > > > hwcom.init(); > > > > stports.init(); // ??? > > > > lcdext.init(); > > > > lcdext.clear(); > > > > stports.LCDlight(0); //??? > > > > //run waithost; //??? > > > > > > > > hwcom.print("starte Programm...." + 13 + 10); > > > > timerflag = 0; > > > > > > > > loop > > > > { > > > > // warte auf high-flanke... > > > > if ports.get(schalter) and not nachlauf_busy // H-Flanke während run-thread sperren > > > > { > > > > // hier befehle zu relais einschalten... > > > > run nachlauf; // Thread starten > > > > } > > > > > > > > // warte auf timerflag... > > > > if timerflag // Thread völlig abgearbeitet...und halt !! > > > > { > > > > hwcom.print("Timer abgelaufen" + 13 +10); > > > > // hier weitere programm-befehle... > > > > timerflag = 0; // timerflag freigeben... > > > > } > > > > > > > > } // end loop main > > > > > > > > } // end thread main > > > > > > > > > > Hallo, > > > erstmal vielen Dank für Deine Antwort, aber das mit dem ERROR bei Reset verstehe ich nicht, > > > ich bin der Meinung, dass mit dem Befehl "reset" der "halt"-Befehl überflüssig wird, oder? > > > > > > hallo christian > > > > habe letztes mal deinen namen ganz vergessen .. sor.. > > > > das mit dem RESET habe ich auch nach etlichen versuchen erst festgestellt. > > ich arbeite an einem größeren aufbau mit mehreren c.controll II einheiten die sowohl > > kommunizieren und auch mit unzähligen threads den programmablauf sicherstellen. > > > > hatte am anfang das gleiche problem wie du, einige thread sind nach RESET nicht sauber von > > stack gelöscht worden. mit HALT bleibt der stack erhalten und wird an gleicher stelle mit RUN > > fortgesetzt. > > hier wird irgend wo ein zeiger gesetzt der bei RESET ( ab und zu ) flöten geht. > > > > das problem konnte ich mit der kombination > HALT; RESET; < lösen. > > > > wenn aber das HALT der letzte befehl im thread ist, wird ein RESET überflüssig, > > da der thread ab hier sowieso von vorne beginnt. > > > > ich hoffe ich konne dir helfen. > > ach... noch eine frage, hast du den geänderten programm-code schon mal ausprobiert ?? > > ( wenns damit läuft, ist es doch egal... :-) ) > > > > viel spass >marcell< > > Hallo marcell, > danke für Deine Mühe, habe aber im Moment keine Zeit das Programm auszuprobleren, > da ich geschäftlich unterwegs bin, werde mich aber am Wochenende ´dran setzen... > > nochmals Danke, > ChristianS
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB