INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Intel -> Motorola Byteordnung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

21.06.2018, 11:49 (Dieser Beitrag wurde zuletzt bearbeitet: 21.06.2018 11:51 von Lucky.)
Beitrag #1

Lucky Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jun 2010

2013, 2014
2009
DE

30459
Deutschland
Exclamation Intel -> Motorola Byteordnung
Hallo zusammen,

ich habe mit LV eine Programm erstellt das aus CAN-Bus Informationen aus einer binären Datei zum Vector DBC Format konvertiert -> läuft auch soweit !

Mein Problem: um ein Signal zu beschreiben wird Startbit, Länge und Byteordnung benötigt, die Quelldaten enthalten diese Information im INTEL Format, ich benötige sie aber im MOTOROLA Format.

Ich kann diese zwar nachträglich im CANdb++ Editor ändern, allerdings ist diese bei 700 Signalsen sehr mühsam ;-)


Beispiel:

Startbit: 18, Länge: 14 INTEL durch den CANdb++ Editor angepasst ergibt es Startbit: 24, Länge: 14 MOTOROLA

und genau diese Umwandlung möchte ich in mein Programm einbauen ! nur wie komme ich darauf ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.06.2018, 11:52 (Dieser Beitrag wurde zuletzt bearbeitet: 21.06.2018 11:56 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Intel -> Motorola Byteordnung
Hallo Lucky,

du bekommst 8 Byte Payload mit deiner CAN-Botschaft.
Diese 8 Byte drehst du jetzt einfach um: Reverse1DArray…
(Liest du hier.)

Zitat:Startbit: 18 INTEL durch den CANdb++ Editor angepasst ergibt es Startbit: 24 MOTOROLA
Das passt (IMHO) nicht! (Startbit 18 ist mitten im dritten Byte, Bit 24 aber an einer Bytegrenze…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.06.2018, 12:02 (Dieser Beitrag wurde zuletzt bearbeitet: 21.06.2018 12:20 von Lucky.)
Beitrag #3

Lucky Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jun 2010

2013, 2014
2009
DE

30459
Deutschland
RE: Intel -> Motorola Byteordnung
Hallo !

meine Quelldaten enthalten keine Payload, sondern nur die Informationen wo das Signal in der Botschaft liegt, also ID, Signalname, Startbit, länge,Faktor,Offset und Unit

das Startbit (z.b. 18) ist auf INTEL Format bezogen, ich muß es aber ins Motorola Format konvertieren

Lasse ich das durch den Editor machen, macht er 24 daraus, was dann auch passt !...ich möchte aber verstehen wie er das tut damit ich es in meine LV Programm einbauen kann

EDIT:
ich habe zwei Screenshots angehängt um es zu veranschaulichen


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.06.2018, 12:20 (Dieser Beitrag wurde zuletzt bearbeitet: 21.06.2018 12:29 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Intel -> Motorola Byteordnung
Hallo Lucky,

öffne einfach dein DBC mit dem CANdb++ und schau dir das Layout einer Botschaft im Botschaftseditor an.
Ein Signal, welches mehrere Bytes belegt, beginnt und endet mit einem roten Pfeil. Mittendrin sind noch weiße Pfeile an den Bytegrenzen.
Als Beispiel die klassische EEC1-Botschaft eines Trucks:
    (Achte auf EngineSpeed und Fuel_Injection…)
Jetzt einfach mal eine Botschaft mit gemischt INTEL-/MOTOROLA-Signalen erstellen und anschauen.

INTEL arbeitet little endian, MOTOROLA big endian…

Mein Edit nach deinem Edit:
Du hast ein Signal, welches die Bits 18 bis 31 (INTEL) belegt.
Bei Intel ist das niederwertigste Bit in Bit18 gespeichert, das 6. Bit des Signals in Bit23 und die 8 oberen Bits von Bit24 bis Bit31.
Bei Motorola ist das niederwertigste Bit in unteren Bit des oberen Bytes, d.h. Bit 24 gespeichert. Das 8. Bit steht im höchste Bit des oberen Byte = Bit31. Im "unteren"/ersten Byte findest du dann die 6 höherwertigen Bits des Signals, von Bit16 bis Bit21.

Einfacher zu verstehen ist das Schema, wenn du dir die Bytes einfach mal auf einem Blatt Papier nebeneinander aufmalst!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.06.2018, 12:33
Beitrag #5

Lucky Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jun 2010

2013, 2014
2009
DE

30459
Deutschland
RE: Intel -> Motorola Byteordnung
ok, das ist soweit verstanden !

jetzt brauche ich nur eine Funktion oder Formal die eine Konvertierung durchführt also um von 18 Intel nach 24 Motorola zu kommen

also genau das was der CANdb++ tut wenn wenn ich die Byteanordnung ändere
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.06.2018, 12:40 (Dieser Beitrag wurde zuletzt bearbeitet: 21.06.2018 12:41 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Intel -> Motorola Byteordnung
Hallo Lucky,

mal dir doch einfach die 8 Bytes nebeneinander auf, mit Markierung für die Bits.
Dann läuft es auf "Abzählen" hinaus - also simple Addition/Subtraktion… Big Grin
(Intel-Signale starten immer von links, Motorola von rechts…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.06.2018, 13:34 (Dieser Beitrag wurde zuletzt bearbeitet: 21.06.2018 13:35 von Lucky.)
Beitrag #7

Lucky Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jun 2010

2013, 2014
2009
DE

30459
Deutschland
RE: Intel -> Motorola Byteordnung
hm, egal wie ich zähle, ich komme nicht von der 18 auf die 24 Confused
vielleicht liegt es auch gerade an meiner Grippe Undecided
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.06.2018, 13:57
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Intel -> Motorola Byteordnung
Hallo Lucky,

ich hab's dir mal aufgemalt:
   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.06.2018, 15:34 (Dieser Beitrag wurde zuletzt bearbeitet: 21.06.2018 15:34 von Lucky.)
Beitrag #9

Lucky Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Jun 2010

2013, 2014
2009
DE

30459
Deutschland
RE: Intel -> Motorola Byteordnung
Danke ! :-) so in der art hatte ich es mir auch aufgemalt !

aber wie drücke ich das in einer Funktion/Formel aus ? ich habe als Input immer nur das Intel Startbit und die länge , von dort muß ich zum Motorola Startbit rechnen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.06.2018, 15:45
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Intel -> Motorola Byteordnung
Hallo Lucky,

aus der INTEL-Beschreibung den benutzten Bit-Bereich berechnen:
Start = 18, Länge = 14 ergibt Bereich Bits 18-31

Dann schauen, wo das höchste/letzte Bit landet und wieviele Bits in diesem Byte benutzt sind:
Bit 31 = Byte 3, Bit 7
alle 8 Bits benutzt, auch Bit24

Dann ab ab Bit24 14 Bits nach MOTOROLA-Manier abfragen.

Ich muss sagen, dass ist schon umständlich. Insbesondere, weil dein Signal eine krumme Bitanzahl (14 statt 16 oder 8) benutzt und damit mitten im Byte anfängt/endet. Ich habe bisher immer "schöne" DBC-Dateien verwendet, mit "hübschen" Signalen von 8/16/32 Bit Größe. Und wenn krumme Größen, dann in INTEL-Order…
Was für ein Gerät verwendest du denn?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Motorola S-Record JATler 14 8.883 15.08.2017 14:25
Letzter Beitrag: GerdW

Gehe zu: