Forum: Mikrocontroller und Digitale Elektronik CAN: NEC V850/FX2 und AksenBoard


von markus (Gast)


Lesenswert?

Hallo,

ich habe ein Development Board von NEC (V850/FX2) und einen AksenBoard 
(mit einem SJA1000 Controller).
Dabei verwende ich das Beispielprogramm "CAN-NEC" auf dem NEC (war auf 
der NEC-CD dabei) und "2can-receive" auf dem AksenBoard (auf der 
Aksen-CD).
Ich möchte einfach eine Nachricht (es geht mir dabei erstmal nur um die 
MessageID) vom NEC zum AksenBoard senden.
Ich hoffe es gibt jemanden der sich mit beiden auskennt.
Beim Code vom NEC habe ich folgende MsgID eingestellt:
1
message.midh = 0x04E0; // Set up Same ID as is defined for CAN0 reception in afcan.h

in bits wäre das also 0000 0100 1110 0000

Leider kommt beim AksenBoard 0x2700 an, in bits: 0010 0111 0000 0000
Nachdem ich das mit verschiedenen MsgIDs ausprobiert habe ist mir 
aufgefallen, dass alle Bits immer um << 3 verschoben ankommen.
Ich habe keine Ahnung woran es liegt. Hat jemand eine Idee?

Mfg

Markus

von Otto (Gast)


Lesenswert?

Hallo Markus,

wahrscheinlich werden die Register des SJA1000 nicht korrekt 
ausgewertet.

Im "CAN address 20" befindet sich ID-Bit 0 ab Bit 3 - somit also genau 
um 3 Bit verschoben.

Siehe SJA-Datenblatt Seite 41.

Gruss Otto

von markus (Gast)


Lesenswert?

Hallo Otto,

erstmal danke für deine Hilfe. Leider bekomme ich es immernoch nicht 
hin. Ich habe folgenden mitgelieferen Code auf dem AksenBoard:
1
xdata at 0x4110 unsigned char CAN_TRANSMIT_FRAMEINFO;
2
xdata at 0x4111 unsigned char CAN_TRANSMIT_ID1;
3
xdata at 0x4112 unsigned char CAN_TRANSMIT_ID2;
4
xdata at 0x4113 unsigned char CAN_TRANSMIT_ID3;
5
xdata at 0x4114 unsigned char CAN_TRANSMIT_ID4;

Hat das damit zu tun? Bin total ratlos... Habe schon einiges 
ausprobiert.

Gruß
Markus

von Philipp (Gast)


Lesenswert?

Hey markus!

Ich habe ebenfalls den v850, jedoch zwei Starterkits. Ich möchte beide 
untereinander kommunizieren lassen.
Ich kann Dir zwar leider nicht zu Deinem Problem helfen, aber vielleicht 
kannst Du mir helfen. Ich krieg das nämlich nicht hin.
Es w#re super, wenn Du dich mal unter jendevi@web.de melden könntest.

Vielen Dank und viele Grüße

von Andreas W. (geier99)


Lesenswert?

Hallo,

>
1
> xdata at 0x4110 unsigned char CAN_TRANSMIT_FRAMEINFO;
2
> xdata at 0x4111 unsigned char CAN_TRANSMIT_ID1;
3
> xdata at 0x4112 unsigned char CAN_TRANSMIT_ID2;
4
> xdata at 0x4113 unsigned char CAN_TRANSMIT_ID3;
5
> xdata at 0x4114 unsigned char CAN_TRANSMIT_ID4;
6
>
>
> Hat das damit zu tun? Bin total ratlos... Habe schon einiges
> ausprobiert.

Ich kenne Dein Teil zwar nicht, aber hier werden wohl die 
Register-Adressen vom SJA festgelegt. 0x4100 ist wohl die Basis Adresse. 
Somit greift dann z.B. CAN_TRANSMIT_ID4 mittels externen Speicherzugriff 
auf die SJA-Adresse 20d  zu.

Benutzt Du das Standard oder das Extended Frame Format?

Ich vermute mal, das Du das SFF - Format verwendest.

Somit wären für Dich die Bits ID.28 - ID.18 interessant.
Allerdings liegt das Bit ID.18  auf dem Bit 5 der CAN Adresse 18.

Somit muss Deine MsgID mit 0x20h multipliziert bzw. dividiert werden.

Beispiel von oben:
>message.midh = 0x04E0; // Set up Same ID as is defined for CAN0 reception in 
afcan.h

  0x04E0 / 0x20  = 0x0027

Wie gesagt, ich kenne Dein System nicht.
Aber anscheinend werden dann noch die beiden Bytes getauscht.
(was hier im Beispiel dann die   0x2700 ergibt)

Ich hoffe mal ich konnte etwas Licht ins Dunkel bringen.

Gruss
  Andy

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.