Seriellen-Schnittstelle, I2C-Bus

  • VB.NET

Es gibt 40 Antworten in diesem Thema. Der letzte Beitrag () ist von fraju.

    Seriellen-Schnittstelle, I2C-Bus

    Hey Leute,

    mal ne Frage an die Profis.
    Ich habe einen IC der mir über einen I2C-Bus daten schicken soll. Dieser Bus wird an der Seriellen-Schnittstelle angeschlossen. Weiß jemand wie ich die Daten entwerten kann? Die Daten sollten in Variabelen aufgefanngen werden. und später in einem Grafen wieder zufinden sein.
    • Wie entwerte ich die Daten?
    • Kann ich eine statik erstellen mit Grafen?
    Ich muss ganz erlich zugeben, ich verstehe davon nicht viel. Ich möchte er aber zugerne erlehrnen.
    Also im Wiki steht folgendes über die Serielle Schnitstelle, es verwundert mich etwas
    Kommunikation auf Platinenebene

    I²C-Bus – Für Kommunikation innerhalb eines Gerätes, mit einem Daten- und einem Takt-Signal z. B. bei Telefonkarten
    was heist das jetzt, dass die Serielle Schnitstelle I2C empfangen kann?

    Das müsste eiglich gehen, so wie ich das verstehe.
    • Bei einer seriellen Datenübertragung werden die Bits nacheinander (seriell) über eine Leitung übertragen
    • Zeitverhalten am I²C-Bus: Zwischen dem Start-Signal (S) und dem Stopp-Signal (P) werden die Datenbits B1 bis BN übertragen.
    Das heist doch das beide Typen die Bits nacheinander senden oder Empfangen.
    Wie du aus den Links erkennen kannst seriell
    senden 1 Leitung
    empfang 1 Leitung

    I2C Benötigt immer eine Takt und eine Datenleitung.(wobei diese Bidirektional benutzt werden)

    Es gibt aber hier im Forum einige die es dir besser als ich beschreiben können.
    P.S. .....was ist es nun,dieses Teil?
    Gruß
    upps sory vergessen zu posten!
    Ein IC namenns IL-Troll. Ich habe damit ein Gewäckshaus ausgebaut und er öffnet und schließ ein Fenster bei gewissen Termperatur, Luftfeuchte, Windgeschindigkeit, Regen, usw. Diese Daten sende ich dann per I2C und möchte sie gerne auf dem PC auswerten.
    Ich hab was bei Google gefunden. Einen Converter der aus I2C eine USB daten verbindung macht.
    1. Bracuhe ich die schnitstelle noch zum Programmieren
    2. Ist sie nur ein Empfenänger. Es ist eine Schlatung vor dem IC, die es verhindert zu senden.
    3. Schaltet sich der IC auf Standby sobalt die Schnitstelle angeschlossen ist. Um programmiert zuwerden.
    4. Die Prots der Seriellen schnitstelle sind nich programmierbar. Das Programm dazu ist eingebrannt
    So das sind mal 4 Gründe wieso net die gleich über die Eingebaute schnitstelle^^

    Also ich werde mich jetzt erstmal einen Converter suchen! Und ihn aufbauen.

    Was mich jetzt mehr interessiert. Wie kann ich von der seriellen schnitstelle Daten entgegen nehmen?
    I²C ist eine recht simple Sache find ich, zumindest einfacherer als RS232.

    Zuerst wird die Datenleitung gesetzt, also auf 0 oder 1 danach gibts einen kurzen Impuls auf der Taktleitung, der Empfänger erkennt diesen Impuls und speichert den Wert der Datenleitung, so setzt sich dann Stück für Stück ein Byte zusammen.

    Mit der RS232 gehts nicht wie schon beschrieben, aber mit dem Parallelport könne es funktionieren, denn dort kannst du den Status einzelner Pins auslesen und setzten. Ich weiß nur nicht wie schnell der Port ist und ob das für I²C ausreichen würde.
    Aber du musst eins bedenken, soweit ich weiß hat der Parallelport keine I/O Pins sondern NUR Output oder NUR Input Pins. Da du jedoch auch für das Empfangen von Daten manchmal etwas senden musst, benötigst du auch Output Pins des Ports, aber das könnte man mit einer einfachen Diode machen, in dem man der Outpin auf die enstpechende Leitung führt.
    Denn nach jedem Byte wartet der Sender auf ein Acknowlage Signal vom Empfänger, welches bestätigt "Ich habe die Daten empfangen". Erst danach werden weiter Daten gesendet.
    Hallo Biotechniker

    Das Teil emuliert eine Com Schnittstelle.
    Vom Preis geht das noch.Wenn ich Zeit ,besser Interesse ,habe werde ich mir mal etwas
    mehr Infos reinziehen.
    Welche Schnittstellen hat dein PC ?

    @Dodo
    Das was du schreibst geht, würde auch mit Bitwackeln funzen.
    Ist aber sehr langsam,bei wenigen Übertragungsinformationen überlegungswert.
    ..ich würde es trotzdem nicht machen

    Grüße
    Die parallele Schnittstelle kann Bidirektional genutzt werden. Ob sie schnell genug ist, muss man von Fall zu Fall probieren... Einfacher als den ECP Modus zu nutzen wäre wie schon vorgeschlagen 2 Eingänge und 2 Ausgänge gleichzeitig zu nehmen. Andererseits sollte der PIC auch RS232 schaffen können. Oder halt noch einen 2. PIC oder, falls die Ausrüstung da ist, einen kleinen Atmel als Interface dazwischen schalten.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    ..ganz so einfach ist es nicht!

    Werde mich mal mit I2C auf para/Ser Informieren.ob das funzt.

    edit:
    Spoiler anzeigen


    ADDELAY Zeit zum Laden des Haltekondensators
    ADINP Analogwerte einlesen (8-Bit)
    BINTOASC konvertiert 8- oder 16-Bit Variable in ASCII-Zeichenkette
    BINTOBCD konvertiert 8- oder 16-Bit Variable in eine BCD-gepackte Zahl
    BINTODEC konvertiert 8- oder 16-Bit Variable in Zahlenkette
    BITPOS ordnet einer Zahl zw. 0 und 7 deren deren Bitposition zu
    CLOCK Echtzeituhr mittels internem Timer TMR0
    CLOCK1 Echtzeituhr mittels internem Timer TMR1
    CLRWDT setzt den internen Watchdog zurück (in Verbindung mit $WDTUSR und WDT_ON)
    CURSOFF schaltet Cursor auf der LCD aus
    CURSON schaltet Cursor auf der LCD ein
    DATA definiert ein Datenfeld für Konstanten
    DEC erniedrigt den Inhalt einer Variablen um 1
    DELAY kurze Verzögerung (Auflösung 100us)
    DOZE stromsparender Kurzschlaf
    DTMFOUT erzeugt DTMF-Signale (Tonwahl beim Telefon)
    EEDATA Diese Daten werden vom Programmiergerät in das interne EEPROM geschrieben
    END Programmende, Controller geht in Stromsparmodus
    ERR abfragen der internen Error-Variablen, z.B. Timeout, Overflow
    FREQIN zählt die Anzahl der Impulse innerhalb einer bestimmten Zeit
    FOR TO NEXT FOR-NEXT-Schleifen, bis zu 16 Schachtelungsebenen
    GOSUB Sprung in ein Unterprogramm, bis zu 4 Ebenen
    GOTO Sprung zu einer Programmmarke, keine Zeilennummern!
    HIGH I/O-Pin wird Ausgang und auf High gesetzt
    I2CDELAY verlangsamt die I2C-Kommunikation, z.B. bei langen Leitungen
    I2CHARDS aktiviert das I2C-Hardwaremodul des PICs als SLAVE
    I2CINIT initialisiert 2 Pins für die I2C-Kommunikation
    I2CREAD lesen aus einem I2C-Baustein
    I2CRD lesen aus einem I2C-Baustein ohne Generierung von START- bzw. STOP-Bedingung
    I2CSLAVE Controller wird zu einem universellen Slavebaustein
    I2CST generiert eine START-Bedingung
    I2CSP generiert eine STOP-Bedingung
    I2CWRITE Schreiben in einen I2C-Baustein
    I2CWR schreiben in einen I2C-Baustein ohne Generierung von START- bzw. STOP-Bedingung
    IF THEN ELSE bedingte Verzweigungen
    INC erhöht den Inhalt einer Variablen um 1
    INKEY 4x4 Tastaturmatrix abfragen, an gleichen Port wie LCD möglich (4x3)
    INP I/O-Pin wird als Eingangspin definiert
    INPUT gesamter Port (8-Bit) wird eingelesen
    INTERRUPT erlaubt das Einklinken benutzerdefinierter Interrupts
    INTEND markiert das Ende der Interruptservice-Routine
    INTPROC markiert den Anfang der Interruptservice-Routine
    LCDCHAR definieren von bis zu 8 eigenen Zeichen auf der LCD
    LCDCLEAR LC-Anzeige löschen
    LCDDELAY zur Anpassung des Timings
    LCDINIT initialisiert eine LC-Anzeige mit HD44780 Controller (4-Bit)
    LCDTYPE verschiedene Anschlussvarianten für LCDs (z.B. auch über 74LS164)
    LCDWRITE schreibt Daten auf die LCD
    LET Anweisung für eine Zuweisung (obligatorisch)
    LOCATE Positioniert den Cursor an eine beliebige Stelle auf der LCD
    LOFREQ erzeugt Frequenzen bis ca. 2kHz
    LOOKDN Tabellen lesen
    LOOKUP Tabellenindex lesen
    LOW I/O-Pin wird Ausgang und auf Low gesetzt
    ON...GOSUB mehrfach bedingte Verzweigung
    ON...GOTO mehrfach bedingte Verzweigung
    OUTP I/O-Pin wird als Ausgang definiert
    OUTPUT 8-Bits werden auf Port ausgegeben
    PRINT zum Debuggen mittel einfachem Terminalprogramm
    PULSIN misst die Pulsdauer
    PULSOUT gibt einen Puls auf einem I/O-Pin aus
    PWM erzeugt ein pulsweitenmoduliertes Signal, z.B. für Analogausgabe
    RANDOM erzeugt eine Zufallszahl
    RCTIME misst die Lade-/Entladezeit eines Kondensators, z.B. für Widerstandsmessungen
    READ lesen der Daten aus dem EEPROM (nur für PICs mit eingebauten Daten-EEPROM)
    READDATA liest ein Datenwert aus dem Datenfeld (nicht 10F20x, 12C5xx und 16C5x)
    REM leitet eine Kommentarzeile ein
    RES Pegel des I/O-Pins auf Low setzen
    RESTORE setzt den Lesezeiger für READDATA an eine bestimmte Position (nicht 10F20x, 12C5xx und 16C5x)
    RETURN Ende des Unterprogramms
    REVERS I/O-Pin wird Ausgang und die aktuelle Information invertiert
    SERIN liest Daten seriell ein
    SEROUT gibt Daten seriell aus
    SET Pegel des I/O-Pins wird auf High gesetzt
    SETBAUD ändern der Baudrate bei interruptgesteuertem UART-Empfang
    SLEEP Controller wird in den Sleepmodus versetzt
    SOUND erzeugt Frequenzen zw. 1kHz und 20kHz
    SWAP vertauscht die beiden Halbbytes in einer Variablen
    TOGGLE Pegel des I/O-Pins wird invertiert
    TRIS initialisiert das Datenrichtungsregister
    TXDDELAY Pause zw. zwei Zeichen beim Senden mittels UART
    WAIT verzögert den Programmablauf (kein Stromsparmodus)
    WRITE schreibt Daten in das EEPROM (nur für PICs mit eingebautem Daten-EEPROM)






    Sind das deine möglichen Befehle?

    Nach meiner Information kannst du eine rs232 softwarmäßig Programmieren.
    Du nutzt dazu ein Pin.
    Zeige mal dein Prog als Zip,
    vielleicht kannich etwas damit anfangen.


    Gruß

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „fraju“ ()

    Sorry, aber es existiert noch kein Programm!
    Ich wollte erstmal damit anfangen die Daten zu empfangen und zu speichern, aber wie gesagt ich hab keine Ahnung wie ich das machen soll :wacko: Deshalb bin ich ja hier^^
    Also ich soll den I2C (2 leitungen) an die rs232 anschließen, an weiß Ports. Und dann an dem einen den Takt erfragen und an dem anderen Port die bits lesen. Stimmt das so?
    Was meinste mit "para/Ser"? finde keine Antwort dazu bei Google :pinch: