- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 18

Thema: Daten aus 2 hintereinander liegenden Registern in ein char[8] Array einlesen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    das mit dem #include <cstring> bzw. <string.h> hatte ich oben ja auch bereits angemerkt.
    Sorry muss ich überlesen haben

    Welche Endianess vom Compiler bzw. MCU benutzt werden, ist aber eigentlich egal, wenn man es anschließend wieder als (int) bzw. (uint32_t) ausliest oder aber zurückkopiert
    sicher, aber wenn du es vorher in Bytes zerlegst und willkürlich speicherst kommt am Ende nur Murks raus wenn man nicht auf die Byteorder achtet

    Worauf ich hinaus wollte war eher dass man die Register nach Möglichkeit ausschließlich (DMA als Ausnahme genannt) über ihr Registernamen und nicht über Pointer ansprechen sollte! Bzw die Zuweisung zu Registern und ggf. auch das auslesen immer (quasi-)atomar machen sollte und nicht stückeln.
    Bei AtMegas und XMegas wie erwähnt, kann man auch manche Register word- oder byteweise schreiben aber da der Bus nur 8 bzw. 16 bit breit ist muss man da auf die Reihenfolge achten, da quasi der halbe Schreibbefehl in einem Puffer landet und der Latch erst mit dem schreiben des low Byte ausgeführt wird und wenn man falsch herum schreibt kommt auch nur Murks dabei raus.

    Byteweise + Register (>8bit bzw. >Busbreite) sollte man generell vermeiden, das ist der Kern meiner Aussage
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  2. #2
    HaWe
    Gast
    wieso willkürlich?
    In meinem Beispiel oben mit memcpy kopiere ich doch immer die int32-Bytes in 4er-Gruppen in das Array, anschießend könnte man es genau so weiter- oder wieder zurückkopieren, die Ordnung würde dabei nicht geändert.

    (edit): vorrausgesetzt ntl, es handelt sich tatsächlich um 32-bit-Register....
    Geändert von HaWe (19.02.2019 um 11:04 Uhr)

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    ich bezog mich auch nicht auf dein Beispiel sondern mein Satz sagte
    aber wenn du es vorher in Bytes zerlegst und willkürlich speicherst kommt am Ende nur Murks raus wenn man nicht auf die Byteorder achtet
    ... du hattest verallgemeinert geantwortet oder dich implizit auf deine Aussage bezogen und das wollte ich relativieren, denn allgemein gilt das nicht!

    Casten alleine reicht nicht wenn man zwischendurch stückelt. Immer Vorsicht mit der Byteorder bei sowas. Das will ich damit sagen...
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #4
    HaWe
    Gast
    ich habe im meinem Beispiel oben die 32-bit-Variable (ob Register oder nicht) doch gar nicht in einzelne Bytes zerlegt, sondern per memcpy als 4er-Block komplett in den Array rüberkopiert!

    https://www.roboternetz.de/community...l=1#post650420

    - - - Aktualisiert - - -

    PS,
    jetzt verstehe ich - wir haben aneinander vorbei geredet.
    Ich halte das Zerlegen in einzelne Bytes mit anschließendem Shiften oder was auch immer auch für potentiell fehleranfällig, daher ja mein Vorschlag mit memcpy für den ganzen 32bit-Block.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    05.10.2018
    Beiträge
    33
    Hallo Kollegen,

    vielen DANK für die die Erklärung der Sache.

    Wie genau die Register beschrieben werden ??? - da bin ich noch zu jung im Fach

    Also gelernt - Register langsam und sicher zu beschreiben.
    Gewünschten Triks gehen nicht immer durch

    Vielen DANK noch mal.

Ähnliche Themen

  1. Char mit array verbinden ?
    Von AsuroPhilip im Forum Software, Algorithmen und KI
    Antworten: 22
    Letzter Beitrag: 08.09.2011, 13:37
  2. Videoframes online in VisualBasic-Array einlesen
    Von malthy im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 8
    Letzter Beitrag: 26.07.2007, 10:52
  3. gelöst : Frage zu C und 2 Dim char Array
    Von jar im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 29.05.2007, 16:53
  4. zweidemensionales char-array
    Von p_mork im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 15.03.2007, 16:54
  5. Cstring einem char array zuweisen
    Von ceekay im Forum Software, Algorithmen und KI
    Antworten: 8
    Letzter Beitrag: 17.04.2006, 10:20

Berechtigungen

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

LiFePO4 Speicher Test