Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Station, OSOPT V3.0
> > > 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)