Re: Sporadischer absturz edip Display Kategorie: I²C-Bus (von André H. - 31.08.2005 10:55) | ||
Als Antwort auf Sporadischer absturz edip Display von Mike - 31.08.2005 0:01 | ||
| ||
Hallo Mike, Welche Firmwareversion des eDIP240 hast Du ? (siehe Aufkleber auf der Rückseite) Bis Version 1.1 hat die Firmware beim I²C-Interface einen Bug gehabt, der ungefähr dieser Fehlerbeschreibung entspricht. Allerdings kann es auch mit Deinen Routinen zusammenhängen. Du hast einige "wait" bei der Auswertung der empfangenen Daten. Ich wei� nicht, was die Aufgerufenen Funktionen bei Dir machen, aber wenn nur bei einer Funktion nie ein True zurückgegeben wird, wartet der Thread an dieser Stelle ewig. Und das bewirkt wiederum, das der Sendepuffer des eDIPs nicht gelesen wird und "volläuft". Wenn dies passiert hält das eDIP solange an, bis mind. ein Byte aus dem Puffer gelesen wird. Eine Bitte noch zur Benutzung des code-Tags: Es reicht, wenn Du nur einmal am Anfang des Quellcodes <code> und einmal am Ende </code> schreibst. Du mu�t nicht jede Zeile als neuen Code-Bereich ausweisen. Also z.B. so: <code>thread xyz { tuedies(); tuedas(); }</code> Das reicht völlig. MfG André H. > Hallo CC2 Gemeinde. > > Habe ein edip Display mit edip Bord an Der CC2 Unit NV mit Starterboard über i2c bus verbunden. > Auf Dem Starterboard habe ich noch ein 24c32 eeprom in einsatz. > Der zugriff aufs eeprom funktioniert ohne probleme. > Aufs Display ist sporadisch nach einiger zeit nicht mehr zugreifbar, vorallem wenn ich Touch > berührrungen über i2c an Die CC2 schicke. > Sehr häufig hängt sich Das Display, auch nach dem ich am Starter Board Reset drücke, auf. > Da ich kein Oszi habe wei� ich jetzt nicht, was schlapp macht Das Display oder Der i2c Bus. > > Oder Liegt es an meiner Sendedaten verarbeitung. > Programiere fürs Display ein Winamp player, Der Die Daten vom Display über ic2 auf CC2 dann Seriel > zum PC schickt und damit über mein Delphi Code Der Winamp player ferngesteuert werden kann. > > Sourcecode CC2 Daten verarbeitung. > > thread TD > //------------------------------------------------------------------------------ > { > { > r=edip.receiveframe(0,Display1); > { > a=edip.getRxData(Display1,t); > } > if a == 0 yield; > else > KennNummer = LoMidHiByteToInt (t[1],t[2],t[3]); > edip.text(data.TDAddr,12,10,3,"OK"); > if t[0]=='W' > { > wait Winamp (t[0], KennNummer); > } > else if t[0]=='S' > { > wait TouchMakro (t[0],t[1],t[2],t[3],t[4]); > } > else if t[0]=='T' > { > wait TempMenue (t[0],t[1],t[2],t[3],t[4]); > } > else if t[0]=='L' > { > wait TouchMakro (t[0],t[1],t[2],t[3],t[4]); > } > else if t[0]=='B' > { > BarData (t[0],t[2],t[3]); > } > else if t[0]=='R' > { > wait TouchSchalter (t[0],t[1],t[2],t[3],t[4]); > } > > if t[2]==8 > { > x=t[3]; > s="YH" + x; > r=edip.sendframe(0, s, 0); > } > } > t[0] = ' '; > } > > Hatt jemand von euch eine Ide, wo eventuell der Fehler liegen könnte. > Vielen dank im vorraus. > > M.f.G > > Mike > Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: |