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 ! > > > > Ich habe das Problem das zwischendurch die Touchtasten nicht sauber erkannt werden. > > Meine Heizungsregelung funktioniert stundenlang, zack auf einmal gehen die toucheingaben > > fail, ich drücke eine taste und es kommt ein anderer Touchcode. > > Dannach sofort ein Dauerleuchten der Interrupt Led. 2-3mal geht das so und dann auf einmal alles > > wieder normal. > > > > Ich kanns mir nicht erklären wo ich den Fehler suchen soll. > > > > i2c bus = stabil, keine fehler bei den sensoren > > 2 eDIPS angeschlossen Kabellänge 50cm und 2m > > 4 ds1631 > > 8 ds18b20 > > 2 max relaisplatinen > > > > alles geht sauber nur die eDIPS verschlucken zwischendurch daten. > > > > vl weiß jemand einen rat wo ich weitersuchen kann !!!! > > > > achja und ich habe das forum durchsucht und versucht nachzulesen, vl gibt es die antwort > > aber ich hab sie nicht gefunden. > > Das Problem hab ich auch > es werden touchcodes von vorher gedrückten tasten geschickt. > hab den code mehrmals neu geschrieben aber immer das gleiche problem > > > // MENU ************************************************************************ > edip.RxBuffer Display[var.maxEDIP]; > byte Flag, t[64]; > > function DispData(byte xdisp) > { byte a,n,x,lcd; int frame; > string msg,s; > wait cap.Capture(2); > lcd=var.DispAddr[xdisp]; > // empfangen des Displaybuffers > frame=edip.receiveframe(var.DispAddr[xdisp],Display[xdisp]); > a=edip.getRxData(Display[xdisp],t); > > if a<255 and a > { // Touchtaste-Schalter ************************************************* > //msg="t0:"; str.putchar(msg,t[0]); // Test für Touchcodes > //msg=msg+" t2:"; str.putint(msg,t[2]); > //smsg(0,msg); > //hwcom.print(msg);hwcom.ret(); > //if hwcom.CTSholding() { hwcom.send(t,64);hwcom.ret(); } > if t[0]=='A' > { if t[2]==100 { run regler.Learn; regler.initLearn=-1; } // Lern Modus vom Regler > if t[2]==102 { halt regler.Learn; regler.setLearnPID(); } // Set Modus vom Regler > > if heizung.modus==1 // Manueller Modus > { if t[2]==BTN[3]+UP // Pumpe > { if io.RS8[heizung.PumpenPort]==1 { heizung.ioPumpe(io.OFF); } > else { heizung.ioPumpe(io.ON); } > } > if t[2]==BTN[4]+UP // heizung > { if io.RS8[heizung.HeizungsPort]==1 { heizung.ioHeiz(io.OFF); } > else { heizung.ioHeiz(io.ON); } > } > checkModus(); > } > // Modus einstellen > if t[2]==BTN[0]+UP > { if heizung.modus==2 heizung.modus=0; > else if heizung.modus==1 heizung.modus=2; > else if heizung.modus==0 heizung.modus=1; > checkModus(); > } > // Sollwert +- > if t[2]==BTN[1]+UP var.it[5]=var.it[5]-0.2; > if t[2]==BTN[2]+UP var.it[5]=var.it[5]+0.1; > // Sollwert Auswahl > if t[2]==BTN[5]+UP { AKTSOLL=AKTSOLL-1; if AKTSOLL<0 AKTSOLL=maxSOLLW; var.it[5]=SOLLDEF[AKTSOLL]; checkModus(); } > if t[2]==BTN[6]+UP { AKTSOLL=AKTSOLL+1; if AKTSOLL>maxSOLLW AKTSOLL=0; var.it[5]=SOLLDEF[AKTSOLL]; checkModus(); } > > if t[2]==BTN[7]+UP io.CheckTOUT(lcd); > if t[2]==BTN[8]+UP heizung.ShowRuns(lcd); > } > // PopUpMenueeintrage ************************************************** > if t[0]=='N' > { initStartMenu(xdisp,0); Clear(lcd); > // Name des Menüs wird angezeigt > var.HMenu[xdisp]=t[2]; msg=var.HName[var.HMenu[xdisp]-var.HCode]+" "; > tools.text(lcd,var.Fett_Font,var.L,0,0,msg); > if var.HMenu[xdisp]!=var.HCode+4 run io.Temps18B20;; > // löschen des keyboards > if var.HMenu[xdisp]!=var.HCode+0 grafik.Stop(); > if var.HMenu[xdisp]!=var.HCode+1 tools.keyboard(lcd,0); > // Begin der Menus > if t[2]==var.HCode+0 grafik.init(xdisp); // Grafik > if t[2]==var.HCode+1 tools.keyboard(lcd,1); // Setup > if t[2]==var.HCode+2 heizung.start(lcd);// Heizung > if t[2]==var.HCode+3 regler.start(lcd);// Regler > if t[2]==var.HCode+4 { halt io.Temps18B20; io.show(lcd); }// IO > if t[2]==var.HCode+5 { initStartMenu(xdisp,1); checkModus();}//HauptMenu(lcd);// Start oder Hauptmenue > } > // Bargraph ************************************************************ > if t[0]=='B' > { if t[2]==regler.BarW { regler.readNewSollwert(t[3]); } > } > // Anforderung Touchmenü öffnen **************************************** > if t[0]=='T' smsg(0,"Open"); > // freier Touchbereich ************************************************* > if t[0]=='H' //msg="t3:x, t4:y"; str.putint(msg,t[2]); > // Touchschalter State ************************************************* > if t[0]=='X' msg="Touchschalter State"; > // Version 1.7 rev B *************************************************** > if t[0]=='V' msg="Version"; > // Radiogroup State **************************************************** > if t[0]=='G' smsg(0,"Radio ?"); > } > cap.Release(2); > } > > > // MAIN ************************************************************************ > thread DISP1 > { wait not ports.get(var.DispIntr[0]); > tools.beepT(50,10); > DispData(0); > sleep 250; > } > > thread DISP2 > { wait not ports.get(var.DispIntr[1]); > tools.beepT(50,35); > DispData(1); > sleep 250; > } > > hier ein auschnitt aus meinen code, hab mal versucht das komplett zu trennen aber es hilft nix. > nach einer unbestimmten zeit gehen die touchcodes fail.