Re: Plötzlich Probleme mit eDIP Kategorie: Programmierung (von Markus - 4.01.2010 19:56) | ||
Als Antwort auf Re: Plötzlich Probleme mit eDIP von Rudi Renninger - 4.01.2010 18:24 | ||
| ||
Hallo, ich hatte auch öfters Probleme mit der Interrupt Erkennung vom eDIP-TFT INT Ausgang. Ich hab dann den INT Ausgang vom eDIP-TFT auf einen BC547 Transistor geschalten. (Dadurch hat sich der INT auch invertiert. D.h. 5V = INT und 0V = Kein INT.) Ich hab auch so ca. 10m CAT-5 Leitung zwischen CC2 und eDIP. Evtl. lag es ja auch daran (SDA/SCL laufen über P82B96 I2C-Bus Buffer). Aber seitdem werden alle INT vom eDIP-TFT 240 sauber erkannt. Markus > > Hallo Wema, > > > > > Und dann habe ich meinen Programmcode optimiert, d.h. sämtliche Teile, die ich nur für das 4x20LCD > > > benötigte, hinausgeschmissen. Da der Code für aämtliche Menüs etc. auf dem eDIP einfacher zu > > > programmieren ist, habe ich eine Menge Code gespart. Mein jetziges Programm hat nur noch eine > > > Grö�e von rund 18.000Words. Und seit dieser Version habe ich auch die Probleme: Die Touchbuttons > > > reagieren nicht mehr auf jeden Druck, sondern meist nur noch auf den 2. bis 5. Und weiterhin passiert > > > es öfter, dass bei einem Menüpunkt plötzlich ein anderer angezeigt wird, den ich vorher ohne Erfolg > > > betätigt hatte. Ich habe seit 3 Tagen den Code überprüft und keinen Fehler finden können. Ich möchte > > > den Code hier nicht abdrucken (ginge auch gar nicht), hoffe aber dennoch auf Eure Hilfe: Kann es sein, > > > das der Zugriff auf den I2C-Bus durch den geringeren Code zeitlich problematischer geworden ist? > > > > Nein, eigentlich nicht. > > Au�er, Du schickst zu viele Daten an das eDIP, so da� diesesnicht hinterherkommt. > > Das kann ich mir aber kaum vorstellen. (Im Zweifelsfall testweise ein paar Sleeps einbauen.) > Hallo Wema, > habe Dein Posting gefunden (wenn auch schon etwas alt), da ich ähnliche Probleme (hoffentlich) > hatte ... Meine Lösung/Ursachenforschung sieht derzeit folgenderma�en aus: > Ich hatte einen freien Touchbereich definiert (ESC "AH") der mir meine ganze Interrupt-Steuerung > (wait not ports.get(14)) durcheinander gebracht hat. Die Untermenüs und Menüaktionen sind - wie > bei dir beschrieben unvorhersehbar gekommen bzw. nicht gekommen ... > Dank des Tipps von Andre (in einem anderen Posting) habe ich eine LED an den Interrupt-Ausgang des EDIPS > gehängt ... und siehe da: sobald man den frei definierten Touchbereich berührt, blinkt diese > mehrmals unregelmä�ig auf (vermute mal, dass da das "drag" des Touchbereichs zuschlägt - ist aber > auch egal :-)). Klar, dass meine ganze Logik durcheinander kommt, da bei jedem Aufblitzen > der LED etwas in den Sende-Puffer des edips gestellt wird ... Vielleicht irre ich mich auch ... > Auf jeden Fall habe ich den freien Touchbereich durch einen "normalen" TouchKey (ohne Rahmen) > ersetzt und seitdem funktioniert das ganze: Wenn ich einmal draufdrücke, dann leuchtet die LED > (Interrupt edip) auch nur einmal (und nicht mehrere male). Bis jetzt läuft das ganze ohne Probleme > (zwar erst einen Tag, bin aber zuversichtlich ...). > zusätzlich baue ich einen sleep zwischen 15 und 30 nach jedem edip Befehl ein. Ob das unbedingt > notwendig ist? Jedenfalls "verschluckt" sich das edip kein einziges mal ... > > edip.setTouchFont(edipAddress,6); sleep 15; > edip.setTouchFrame(edipAddress,0,0); sleep 15; > edip.touchKey(edipAddress,1,5,40,120,0,5,1,"R|o|L|a"); sleep 30; > > Für nicht Hardware-Lötkolben-Freaks die Bauanleitung für die LED: > Low current LED (2 mA) mit 1,5 kOhm Widerstand an INT (edip-Platine) und +5 Volt hängen. > Polarität der LED nicht verwechseln (langes Bein: +5 Volt) > > Hoffe, Du hast die Probleme schon selbst gelöst ... aber falls einer mal nach demselben Problem > sucht, wird er hier vielleicht fündig. > Dank an alle, die Ihre Lösungen und Tipps hier im Forum kundtun! > Gru�, RR > > > > > > Mu� ich etwa jeden ZUgriff durch das eDIP auf den BUs möglicherweise capturen? Ein ausprobieren > > > wäre für mich mit viel Arbeit (und möglicherweise unnötiger) verbunden. Daher hoffe ich auf einen > > > Hinweis aus Euren Reihen. Reicht zur Kollisionsvermeidung augf dem I2C-Bus nicht bereits, das > > > Andre in seinen Modulen capture-Befehle hat? > > > > I²C-Bus-seitig ist bereits alles gecaptured. > > Hier kann es durch Multithreading zu keinen Problemen kommen. > > Nur, wenn man eine Ebene höher geht, also z.B. dasselbe eDIP aus unterschiedlichen Threads > > anspricht, mu� man wieder capturen. > > > > > Hat jemand ähnliche Probleme gehabt und konnte diese lösen?? > > > > Hatte ich bisher leider nicht. Sorry. > > > > �berwache einmal den Interruptausgang des eDIPs beim Drücken einer Taste. > > (Zur Not eine LED anschlie�en.) > > > > MfG André H. | ||
Antwort schreiben Antworten: |