- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 20

Thema: 16bit UART Übertragung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2014
    Beiträge
    13
    Zitat Zitat von Peter(TOO) Beitrag anzeigen
    Man braucht also etwas in der Form:
    .... Byte, sync, Byte, Byte, sync, Byte, Byte ....
    Dann weiss man, dass immer die zwei Bytes nach sync ein Paar bilden.
    ok habe ich nun auch endlich verstanden. Da sonst endlos Bytes übertragen werden ohne dass der Empfänger weiß wo Anfang und Ende ist... so ist eine Addition natürlich sinnfrei (logisch). Ich dachte leider bislang, dass dies der UART bei den AVR´s automatisch erledigt, allerdings ging ich auch fälschlicherweise davon aus, dass ich den USART verwende (was mit jetzt aber klar ist).

    für das "Protokoll" hat HaWe ja eine gute Lösung für seinen Rpi/Arduino:


    Zitat Zitat von HaWe Beitrag anzeigen

    uint8_t msgarr[4];

    msgarr[0] = 0xff;
    msgarr[1] = chksum(); // Zellen 2+3 aufaddieren, dann davon lowbyte bilden
    msgarr[2]= ... dein erstes Daten-Byte
    msgarr[3]= ... dein zweites Daten-Byte

    beim Empfang kontrollieren:

    if((msgarr[0]==0xff) && msgarr[1]== chksum())) {...} // hier jetzt Bytes zu Int zusammensetzen und dann zum Display schicken.

    ich fange an den Sender mit dieser Methode aufzubauen und der Code sieht nun in diesem Ausschnitt folgendermaßen aus:

    uint8_t msgarr[4];

    msgarr[0] = 0xff;
    msgarr[1] = chksum(); // Zellen 2+3 aufaddieren, dann davon lowbyte bilden
    msgarr[2]= zahl >> 8;
    msgarr[3]= zahl & 0xff;

    daten_senden(msgarr);


    Eine Frage habe ich noch zur Funktion chksum()... was beinhaltet diese bzw. welche Zellen 2+3 sind hier gemeint? Die Inhalte 2+3 vom Array oderwie?

    Wenn mir das noch klar ist habe ich meinen Fehler "fehlendes Protokoll/Sync" beim Byte übertragen auch verstanden und mach mich an den Empfänger.

    Danke für euren Support! Hat mir rein vom Verständnis her schon viel gebracht und versuche dies umzusetzen.

  2. #2
    HaWe
    Gast
    genau, für chksum werden alle Array-Zellen ab [2] aufaddiert, 0 ist ja konstant und 1 ist ja die überstellte chksum, die es zu kontrollieren gilt

    bei mir geht die chksum so:

    Code:
    uint8_t calcchecksum(uint8_t array[]) {
       int32_t  sum=0;
       for(int i=2; i<MSGSIZE; ++i) sum+=(array[i]);
       return (sum & 0x00ff);
    }
    arrrrgggghhhh !! wieder keine Code Tags!
    bei dir wäre
    #define MSGSIZE 4



    auf Richtigkeit der Chksum rüfe ich per

    Code:
    bool checksumOK(uint8_t array[]) {
       return (calcchecksum(array)==array[1]);
    }
    http://www.mindstormsforum.de/viewto...tart=15#p67476

Ähnliche Themen

  1. RFM12 und AVR Funkmodul mit Uart Übertragung
    Von Ripper121 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 15.10.2010, 13:21
  2. uart übertragung 1. bit immer 1
    Von tanger im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 08.03.2008, 10:08
  3. 16bit int über UART versenden
    Von pongi im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 30.07.2007, 18:18
  4. UART Problem mit Übertragung
    Von ricola im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 24.10.2005, 09:39
  5. Wirres Zeug mit C bei der UART übertragung von µC zu PC
    Von MaN im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 01.09.2005, 18:59

Berechtigungen

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

12V Akku bauen