Serielle Schnittstelle

  • Hallo, meine serielle Schnittstelle wird mit den Parametern (2400Baud, 7Datenbits, 2Stoppbits und ungerader Parität) programmiert

    Wenn ich jetzt z.B. 3Fh (0011.1111) verschicken will, wie geht das mit nur 7 Datenbits? Wenn es 8 Datenbits wären, dann würde meine Lösung s aussehen:

    1Startbit(negative flanke, wegen negativer Logik), die 8 Datenbits, 2Stoppbits, 1 positives Paritätsbit( da alles ja ungerade werden soll) . fertig!

    Wie kann ich mir das aber mit 7 Datenbits vorstllen? da bleibt ja imemr 1 übrig???????

    Bitte helft mir, ich bin total verweifelt!

  • dann muszt du eben mit einem buffer arbeiten. nehmen wir an du willst bytes verschicken:
    du verschickst die ersten 7 bit, speicherst sie in einen buffer, schickst beim zweiten mal das verbleibende bit (vom ersten byte) + 6 bit des 2ten bytes. beim empfaenger shiftest du das zuvor empfangene im buffer rueber, maskierst das noch verbleibende bit (das du soeben empfangen hast) aus und veroderst mit den 7 bits im buffer. fertig ist dein byte. die neu empfangenen bits kommen wieder in den buffer uswusf. du muszt halt darauf achten dass du beim ersten mal um 1 shiften muszt, beim 2ten mal um 2 und so weiter.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Boar, komplizierter gehts wohl nicht^^
    aber danke, ich hatte gehofft es geht einfacher, weil man vllt erst die untersten bits einliest und dann die obersten. Aber da bei den obersten bits eben immer eine 0 steht an 8. Stelle, würde man das ganze trotzdem als die Abgeschickte Zahl sehen. Weist du was ich meine?

    0111.1111 = 111.1111 ?

    Aber auch danke für deine Hilfe, werds versuchen auch so zu lösen!

  • Üblicherweise verwendest du für character-oriented transmission immer 8-bit für die länge der daten, eben um 1 byte auf einmal versenden zu können. die idee mit dem buffer ist zwar möglich, aber wie du selbst sagst, ziemlich aufwendig. andere längen (!=8) werden für bit-oriented transmission verwendet. warum setzt deinen data frame nicht einfach auf 8-bit für daten?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!