Hallo Schmelz,
Problem gelöst?
So ganz ist mir nicht klar, wo dein Problem ist.
Es gibt ein Beispiel fon Fujitsu, welches sehr schön zum Evaluieren des
CAN auf dem DICE-Kit geeignet ist: dicekit_can_uart_async-v30.zip
Gefunden auf Andi's Seitenempfehlung:
http://mcu.emea.fujitsu.com/mcu_tool/detail/DICE-KIT.htm -> DICE-KIT -
SOFTWARE EXAMPLES
Ich hab's dir angehängt ;-)
Wenn Du Interrupts einschaltest, wird __interrupt void IRQ_CANRX (void)
aufgerufen.
Dort
1 |
|
2 | GetCanData (buffer, CAN_Receive_Data); /* Readout Message Buffer */
|
und Du hast díe Empfangsdaten iin CAN_Receive_Data[] stehen.
Die ID in CAN_Receive_ID.
Du könntest also zum Beispiel sowas machen:
1 | if (CAN_Receive_Data[1] == 0x01
|
2 | {
|
3 | Teilprogramm1();
|
4 | }
|
5 |
|
6 | if (CAN_Receive_Data[1] == 0x02
|
7 | {
|
8 | Teilprogramm2();
|
9 | }
|
ginge natürlich auch mit einer switch Anweisung:
1 | switch (CAN_Receive_Data[1])
|
2 | {
|
3 | case 0x01: Teilprogramm1();
|
4 | break;
|
5 |
|
6 | case 0x02: Teilprogramm2();
|
7 | break;
|
8 |
|
9 | default: ... Teilprogramm_unbekannt();
|
10 |
|
11 | }
|
Okay, in der Interrupt-Routine sollte das vielleicht nicht gerade
passieren, aber das Prinzip sollte klar sein ...
Sind dir denn die Prinzipien von CAN klar, was IDs sind, und wie CAN
Nachrichten aussehen?
Poste doch mal dein Projekt, dann verstehen wir vielleicht besser was Du
meinst und wo das Problem liegt.
Ich habe übrigens auch ein DICE-Kit ... und für einfache Dinge ist das
ganz gut brauchbar und einfuch zu bedienen. Und die Entwicklungssoftware
bei Fujitsu ist kostenlos. Allerdings ist der Core etwas veraltet, und
auch Fujitsu setzt mitlerweile auf ARM Cortex-M3.
Aber für einfache Steuerung und Lehrzwecke ist das DICE-Kit ein schönes
"Spielzeug"
Gruß,
Mic Roller