Forum: Mikrocontroller und Digitale Elektronik Bit-deklaration


von Johannes (Gast)


Lesenswert?

Hi,
ich habe gestern für eine can-kommunikation eine bit-deklaration für den 
sid und eid einen dspic30f4011 gemacht.
1
typedef struct tagCxTXxSIDBITS_tagCxTXxEIDBITS{
2
    unsigned        : 2;
3
    unsigned SRC7_2 : 6;
4
    unsigned        : 8;
5
    unsigned        : 14;
6
    unsigned SRC1_0 : 2;
7
}CxTXxSRCBITS;

ist das richtig für zwei register gleichzeitig?
sind hierbei dann die ersten beiden vom Register CxTXxSID bit 0 und 1
dann CxTXxSID bit 2-7
ddann CxtXxSID 8-15
dann CxTXxEID bit 0-13
und die letzten zwei für CxTXxEID bit 14 und 15?

wenn ich im code
1
C1TX0SRC = 0x0001;
schreibe,
wird dann folgendes passieren?
C1TX0SID = 0b0000000000000000
C1TX0EID = 0b0100000000000000
?
wenn ja, dann wäre das super.


Johannes


Das Problem ist, dass er zwar sendet und auch etwas vom anderen 
kontroller empfangen wird, aber nur wenn ich einfach alle Nachrichten 
empfange. Wenn ihc eine Maske und Filter darüber lege, bekomme ich wird 
ncihts mehr empfangen. Jetzt kann es aber auch daran liegen, dass ich 
die Maske und filter falsch gesetzt habe. da habe ich noch probleme mit.

von public (Gast)


Lesenswert?

Johannes schrieb:
> wenn ich im code
> C1TX0SRC = 0x0001;
> schreibe,
> wird dann folgendes passieren?
> C1TX0SID = 0b0000000000000000
> C1TX0EID = 0b0100000000000000
> ?
> wenn ja, dann wäre das super.

Wenn ich die Frage richtig verstehe, ist C1TX0SRC von deiner 
Murksstruktur abgeleitet?

Schau doch mal hier (Lesen!):
http://www.c-howto.de/tutorial-strukturierte-datentypen-bitfelder.html

Zusätzlich bitte im Datenblatt Abschnitt 19.2 (Seite 123) zu SID und EID 
durchlesen.

beste grüße
public

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.