Hi,
ich versuche mich gerade ein bißchen in die Can Lib von Atmel (
http://www.atmel.com/dyn/resources/prod_documents/at90CANLIB_3_2.zip
)einzuarbeiten bzw. diese zu nutzen. Das "simple" Beispiel in der Doc
unter \Libraries\lib_mcu\can funktioniert einwadnfrei und feuert die
Nachrichten nur so raus, aber sobald ich das "full" Beispiel in einer
Endlosschleife probiere, schicke ich 15 mal Daten raus und bekomme als
Status 15mal "not completed" obwohl der PC die Daten erhalten hat und
dann stopt die Übertragung.
Daher meine Frage. Gibts ne vernünftige Doc für diese Library, damit ich
mich da etwas besser einlesen kann und nicht einfach alles mit Try&Error
rausfinden muss? :)
Hier mal ein Auszug aus meinem Code:
1 | tx_msg0.cmd = CMD_TX;
|
2 | uart0_puts("betrete Endlosschleife");
|
3 | while(1)
|
4 | {
|
5 | tx_msg0.pt_data[0] = 0x00;
|
6 | tx_msg0.pt_data[1] = 0x0F;
|
7 | tx_msg0.pt_data[2] = 0xF0;
|
8 | tx_msg0.pt_data[3] = 0xFF;
|
9 |
|
10 | //Botschaft versenden
|
11 | if(can_cmd(&tx_msg0) == CAN_CMD_REFUSED)
|
12 | {
|
13 |
|
14 | }
|
15 | else
|
16 | {
|
17 | c_status = can_get_status(&tx_msg0);
|
18 | switch (c_status)
|
19 | {
|
20 | case CAN_STATUS_COMPLETED:
|
21 | uart0_puts("can completed");
|
22 | tx_msg0.cmd = CMD_TX;
|
23 | break;
|
24 |
|
25 | case CAN_STATUS_NOT_COMPLETED:
|
26 | uart0_puts("can not completed");
|
27 | break;
|
28 |
|
29 | case CAN_STATUS_ERROR:
|
30 | uart0_puts("can error");
|
31 | break;
|
32 |
|
33 | default:
|
34 | uart0_puts("can unknown situation");
|
35 | break;
|
36 |
|
37 | }
|
38 | }
|
39 | }
|
EDIT:
Die 15 Nachrichten scheinen von den Möglichen Mob zu kommen. Der
AT90CAN128 hat ja 15 MObs. Die macht das Programm voll und dann ist
Schluss...