Re: I2CCOM 64Byte FIFO Lesefehler ??? Kategorie: I²C-Bus (von FF - 17.02.2006 13:46) | ||
Als Antwort auf Re: I2CCOM 64Byte FIFO Lesefehler ??? von FF - 15.02.2006 6:49 | ||
| ||
> > > Hallo FF, (<- guter Name ;-) ) > > > > > > > > > > ich möchte mit der CC2-Station Daten aus einer Wetterstation (Elsner P02-RS465) verarbeiten. > > > > Die Wetterstation ist an einen Wandler RS485 nach RS232 angeschaltet. > > > > Wenn ich nun den bisherigen Aufbau an eine COM-Schnittstelle eines PC's anschliesse und > > > > 19200baud 8N1 einstelle, kann ich auf dem Monitor (mittels Programm, das den Eingang an COMx > > > > auf den Bildschirm zaubert) jede Sekunde einen neuen 40Byte langen Ausdruck sehen. > > > > Schliesse ich das ganze an die I2CCOM an, gelingt es mir nur 16Byte unterschiedliche Bytes > > > > zu empfangen, bevor wieder mit dem Inhalt des ersten Byte begonnen wird. > > > > > > > > Bei der I2CCOM habe ich den TL16C550C gegen TL16C750 ausgetauscht. > > > > => initCOM(1,0,1) > > > > > > > > Ich kann mit get() das Endzeichen 0x03 des 40Byte langen Protokolls separieren. > > > > Danach setze ich ein flush() um den Empfangspuffer zu leeren für den nächsten Datensatz. > > > > Danach ist es egal, ob ich receive(DATA[]) mit DATA[40] verwende oder über eine > > > > Schleife die 40 Zeichen versuche einzeln mit get(DATA[i]) einzulesen. > > > > Ich erhalte nur 16 von den 40 Zeichen. > > > > > > > > Hat jemand eine Idee, wo das Problem liegen könnte oder einen Lösungsvorschlag ??? > > > > > > Poste am besten einmal kurz Deine Routinen. > > > Denn, der 64Byte-Fifo ist von mir natürlich gestestet und funktioniert ohne Probleme. > > > Darum vermute ich, da� es irgendeine Kleinigkeit an den Routinen ist. > > > (z.B. versehentliches Zurücksetzen des 64Byte-FiFo-Modes etc.) > > > > > > Du kannst das Bit auch mit i2ccom.getReg(comport,i2ccom.IIR) wieder auslesen. > > > Beim Rückgabewert mu� dann Bit 5 gesetzt sein. > > > > > > MfG André H. > > > > > Hallo zurück und vielen DANK für den Tipp, > > > > ich muss meine Aussage z.T. revidieren. Es können tatsächlich mehr als 16 Byte von der I2CCOM > > gelesen werden. Aber nach 28 bzw. 29 Zeichen (Byte) gibt es eine �berlagerung, so dass die Zeichen > > 29-40 eine Wiederholung der Zeichen 1-12 darstellen. Dies ist unabhängig davon, welche Methode > > ich zur Selektion des Anfangs zum Lesen wähle. Im folgenden Beispiel triggere ich das Einlesen > > des 40Byte-Arrays der Wetterstation,in dem ich den Puffer der I2CCOM so lange leere, bis eine > > Sendepause der Wetterstation erreicht ist. Dann wird versucht, über i2ccom.receive() das nächste > > 40Byte Array einzulesen. Als zusätzlicher Effekt ist noch zu nennen, dass bei dem Beispielcode > > die Anzahl der eingelesenen Byte's zwischen 16 und 40 pro funktionsdurchlauf differiert. > > Hier der Beispielcode mit Initialisierung, Einlesen und Ausgabe am LCD-Displ. der Station II: > > > > Hallo nochmal an die CC2-Experten, > > ich habe zum testen die I2CCOM SDA/SCL direkt mit der CC2-Station verbunden ohne irgend welche > Widerstände gegen +5V. Im Baustein sind ja bereits die 2 Stk. 330 Ohm Widerstände SDA+SCL > eingebaut. Die Leitungslänge beträgt 20 CM. Könnte ggf. der fehlende Pullup Widerstand mein Problem > sein ??? > > Zusatzfrage: Wenn ich den Interrupt-Ausgang der I2CCOM zum Triggern des Lesevorgangs > verwenden will, kann ich diesen einfach direkt auf einen (Interrupt)-Eingang der CC2 schalten und mit > getcount() abfragen ? > > DANKE für die HHHIIILLLFFFEEE !!! und Gruss FF Hallo liebe CC2-Experten, nach intensiver Studie der vielen hervorragenden Beiträge in diesem Forum kann ich mir nun einige Fragen selbest beantworten. Die CC2-Station verfügt für I2C über zwei 4,7k Pullup-Widerstände => keine zusätzlichen notwendig. Den Interrupt der I2CCOM kann ich auf P1H.0-7 legen mit Pullup 10k Ohm nach +5V. Die Frage die ich mir stelle ist diese, ob dadurch mein Problem gelöst werden kann. Wenn ich in einer Funktion (also keine parallelen Threads) die 40 Byte einlese, diese in 3 kleineren Bytearray's speichere und diese dann auf dem Display ausgebe, warum sehe ich nicht die vollen 40 Byte des Protokolls der Wetterstation? Kann mir jemand ggf. mit einem kleinen Beispiel-Code behilflich sein, wie es funktionieren müsste ??? PS:Mein komplettes Testprogramm steht in der letzten Antwort vom 15.02.06. Vielen DANK im Voraus M.f.G. FF | ||
Antwort schreiben Antworten: Re: I2CCOM 64Byte FIFO Lesefehler ??? (von FF - 22.02.2006 7:35) Re: I2CCOM 64Byte FIFO Lesefehler ??? (von FF - 23.02.2006 6:32) |