Für dieses Forum muß Javascript im Browser aktiviert werden!
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 >