- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: I2C-Bus an Ser. Port mit C++

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    42
    Beiträge
    253
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Meinst du die maximale Frequenz die hinter dem Comport rauskommt??
    Die ergibt sich aus deiner Baudrate und deiner Codegeschwindigkeit.
    Ich glaube ich verstehe dein Problem nicht richtig?!Was soll mit den Pegeln nicht stimmen?! -Die hast du doch garnicht im Griff...das machen doch der max und der 7406 für dich. Oder meinst du, du weisst nicht wie die signale nachher auf dem Bus aussehen sollen, bzw. wie, wann das SDL zu kommen hat?

    Gruss
    Michael

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    16.02.2005
    Beiträge
    6
    Genau, ich glaube Du hast mich verstanden. Einen COM-Port auf "normale" Art und Weise zu betreiben finde ich gich wirklich schwer, nur die Bits einzeln anzusprechen. Gleichzeitig fehlt mir das Verständnis über Bitmuster welches auszugeben ist. Sprich, welches Bit muß wann welchen Pegel haben um den Bus ans laufen zu bringen???

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    42
    Beiträge
    253
    Prinzipiell hat man zwei Probleme:
    1) Pins am Comport müssen bitweise angesprochen werden
    2) Um das Programm nicht immer die Pins abfragen zu müssen wird ein bzw. mehrere Interrupts benötigt.

    zu1)
    Es gibt an dem Port nichtnur Datenbits, sondern auch Statusleitungen (RTS, CTS, DTR, ..) Diese können einzeln angesproche/gesetztn werden und
    zu2) sie besitzen die Möglichkeit Interrupts auszulösen.

    Das Setzen eines Bits geschieht mit EscapeCommFunction ( http://msdn.microsoft.com/library/en...asp?frame=true ).
    Du solltest mit SetCommMask ( http://msdn.microsoft.com/library/en...asp?frame=true ) festlegen, auf welche Events reagiert werden soll, desweiteren solltest du dir in deinem Programm einen Thread erzeugen, der immer wieder auf ein WaitCommEvent ( http://msdn.microsoft.com/library/en...asp?frame=true ) aufläuft. Diese Funktion wartet darauf, dass die in LPDWORD lpEvtMask festgelegten Interrupts/Events auftreten.
    Kehrt die Funktion mit true zurück musst du prüfen, welches der Events aufgetreten ist (leider). Dies geschieht mit GetCommModemStatus ( http://msdn.microsoft.com/library/en...asp?frame=true ).
    Danach vergleichst du beim Auftreten eines Events die beiden Leitungen miteinander und wertest dies aus.

    Siehe auch ( http://www.eseo.de/i2c.htm )

    Start Condition = SDA(high->low)&&SCL(high)
    Data = (SDA(high->low)||SDA(low->high))&&SCL(low)
    Stop Condition = SDA(low->high)&&SCL(high)


    Eine Übersicht über die ComApi-Funktionen findest du hier:
    http://msdn.microsoft.com/library/en...asp?frame=true


    Hoffe ich konnte helfen.
    Gruss
    Michael

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    16.02.2005
    Beiträge
    6
    Hallo zusammen,

    Du hast mir wirklich weiterhelfen können.
    Nur hatte ich anfangs gehofft den Code nicht erst noch erstellen zu müssen. Nun gut, mache ich mich an dieArbeit...

    mfg
    Sebastian

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    42
    Beiträge
    253
    Ums selbst Code erstellen kommt man meisstens nicht herum
    Ausserdem würde man dann schliesslich nixmehr draus lernen...


    Gruss
    Michael

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad