- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: probleme mit usart

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42

    probleme mit usart

    Anzeige

    E-Bike
    hi leute!

    kann man über USART auch einen int-wert in der größe von ca. 16777216 senden, ohne dass man den Wert aufteilt?

    mfg kati

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    USART kann (standardgemäß) nur ein Byte senden. du mußt also 4 Byte senden und mit dem Komm-Partner ausmachen, daß die 4 Bytes zusammengehören. Riecht ein bißchen nach Protokoll, is auch eines.
    Du kannst auch auf ASCII -konvertieren (printf) und sagen, bis zum CRLF gehörts immer zusammen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42
    kannst du mir vl an tipp gehn, wie ich das dann im code selber ausschaut?
    i weiß nämlich nicht, wie man einen so großen wert in 4 Bytes aufteilt.
    danke!

    mfg Kati

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    In C geht's mit "union" recht leicht:

    union {
    int32 grossezahl;
    unsigned char einzeln[4];
    } jenachdem;

    main()

    jenachdem.grossezahl = 16777216;
    for { i= 0; i < 4; i++)
    {
    out = jenachdem. einzeln[i];
    }

    Auf der Empfangsseite

    for { i= 0; i < 4; i++)
    {
    jenachdem. einzeln[i] = inp
    }
    printf("%d\n", jenachdem.grossezahl);

    Hilft das ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42
    naja, i weiß net so ganz ob des mit int32 geht. weil i programmier im CodeVisionAVR und i versteh des mit dem jenachdem net so ganz. was meinst du mit jenachdem?

    mfg kati

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42
    aber ich kann dir mal mein programm zeigen
    hab mi da mal a bissl damit herumgespielt und einfach jeweils vier werte pro richtigen wert versucht zu senden.

    mfg kati
    Angehängte Dateien Angehängte Dateien

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Hi,
    "jenachdem" ist einfach der Name von der union.
    union {
    double Zahl;
    unsigned char btt[4];
    }jenachdem;

    jenachdem.Zahl u. jenachdem.btt[4] haben physisch die gleiche AnfangsAdresse.

    jenachdem.Zahl ist der Wert als ganzes (z.B. 16777216)

    jenachdem.btt[0] ist das erste Byte von dem double
    jenachdem.btt[1] ist das zweite Byte von dem double
    jenachdem.btt[2] ist das dritte Byte von dem double
    jenachdem.btt[3] ist das vierte Byte von dem double

    Und diese einzelnen Byte kannst du nacheinander senden





    sagst du im C jenachdem.Zahl
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42
    danke
    werds dann gleich ausprobieren

    mfg
    kati

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    38
    Beiträge
    42
    hi! so, i habs ausprobiert, aber bei mir kommen 4 fehlermeldungen. i glaub bei CodeVisionAVR haut des ganze net so hin. außerdem gibts bei mir den befehl printf nicht. ich sende alles mit UDR.
    irgendwelche klammern und beistriche fehlen.

    mfg kati

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Guten Morgen Katiiiii !
    Für mein Verständnis : du hast einen Timer, und immer, wenn der Timer schnackelt, soll er ein double über die USART rauschicken. Ist das so ?
    zweite Frage: wenn du etwas binäres binär rausschickst, muß der Empfänger aber mitspielen. WEM willst du das double schicken ? Terminal und so wird nix bringen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress