Hallo,
Ich verwende den AT90CAN128 mit dem Bustreiber ATA66660
Ausserdem die CAN.lib von www.kreatives-chaos.com
Als Empfänger dient ein CAN-USB-Adapter von PEAK. Der funktioniert
fehlerfrei. Eine Andere Platine mit ATmega8 und MCP2515 läuft mit der
Bibliothek einwandfrei
Der AT90CAN128 verschickt nicht mehr als 15 Nachrichten ... Wenn ich Ihn
neu initialisiere schickt er auch weitere Nachrichten. Aber wieder nur
maximal 15, bis ich Ihn wieder initialisiere.
1 | #include "can.h"
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <util/delay.h>
|
5 |
|
6 |
|
7 | // ----------------------------- MAIN ------------------------------------
|
8 |
|
9 |
|
10 | int main (void) {
|
11 |
|
12 |
|
13 | // ---- CAN original ----
|
14 |
|
15 |
|
16 | // initialisieren des MCP2515
|
17 | can_init(BITRATE_125_KBPS);
|
18 |
|
19 | // erzeuge eine Testnachricht
|
20 | can_t msg;
|
21 |
|
22 | msg.id = 0x123456;
|
23 | msg.flags.rtr = 0;
|
24 | msg.flags.extended = 1;
|
25 |
|
26 | msg.length = 4;
|
27 | msg.data[0] = 0xde;
|
28 | msg.data[1] = 0xad;
|
29 | msg.data[2] = 0xbe;
|
30 | msg.data[3] = 0xef;
|
31 |
|
32 | // Nachricht verschicken
|
33 | for(int i = 0; i < (10); i++){
|
34 | can_send_message(&msg);
|
35 | _delay_ms(100);
|
36 | }
|
37 |
|
38 | can_init(BITRATE_125_KBPS);
|
39 |
|
40 | for(int i = 0; i < (10); i++){
|
41 | can_send_message(&msg);
|
42 | _delay_ms(100);
|
43 | }
|
44 | return 0;
|
45 | } // main(void) - Schleife
|
Ohne den
1 | can_init(BITRATE_125_KBPS);
|
zwischendurch schickt er nur 15, statt 20.
Hat jemand Erfahrung oder Tipps was ich falsch machen könnte? Ich würde
es immer wieder neu initialisieren ... das wäre aber sehr unschön.
mfg
Kristof