Forum: Mikrocontroller und Digitale Elektronik Buffer wird nicht vollständig übertragen (oder nicht vollständig beschrieben)


von Johannes (Gast)


Lesenswert?

Hallo,
ich möchte den Wert
1
data = 0x1122334455667788
über CAN verschicken.
dazu beschreibe ic die Buffer-Register (Jedes Buffer hat 16 Bit)
1
C1TX0B1 = data;
2
C1TX0B2 = data>>16;
3
C1TX0B3 = data>>32;
4
C1TX0B4 = data>>64;
dazu setze ich ncoh ein DLC von 8.
So müsste ich ja eigentlich alle Buffer beschrieben haben.

Aber am anderen Ende kommt nur
99 88 00 00 00 00 00 00
an.
Aber warum? Wie kann ich die anderen Buffer beschreiben?

Johannes

von Johannes (Gast)


Lesenswert?

na, oben hatte ich mich verschrieben.
es kommt an
88 77 00 00 00 00 00 00

von mh (Gast)


Lesenswert?

Was ist data denn für ein Datentyp?

von Johannes (Gast)


Lesenswert?

Ah ja,
das war es. es war unsigned int.

double funktioniert nicht wegen dem bitshift. habe es jetzt erst mal auf 
long gestellt. mehr wird eh nicht übertragen. Das anderer wäre nur nice 
to have.

danke für den wink

von Stefan F. (Gast)


Lesenswert?

C1TX0B4 = data>>64;

Sollte das nicht eher so aussehen: ?

C1TX0B4 = data>>48;

Das ist mir deswegen aufgefallen, weil ich noch nie Variablen mit mehr 
als 64Bit Größe gesehen habe. Aber bei einer 64Bit Variable macht es 
keinen Sinn, alles um 64Bit zu schieben, denn das Ergebnis wäre immer 0.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.