Moin!
Ich habe folgendes Problem:
At90can128 und 8 Mhz Oszillator:
Meine CAN Sende Funktion die 15 Messages in Reihe sendet läuft in einer
endlosschleife ohne probleme.
Jetzt hab ich einen 16Mhz Oszillator eingebaut:
Und jetzt spuckt er mir nur noch die erste botschaft von den 15 aus.
Wenn die Schleife wieder von vorne anfängt, wieder nur die erste.
Ich dachte an den Watchdog, aber schon ausgeschaltet.
Dann hab ich bisschen Wartezeit zwischen die messages gelegt. Das ging
auch aber nur wenn ich 10ms!! warte zwischen den messages.
1 | void send_std_can_msg(unsigned int std_id, unsigned char std_dlc, unsigned char * buffer)
|
2 | {
|
3 | st_cmd_t msg; // message descriptor store in code area
|
4 |
|
5 | msg.pt_data = &buffer[0];
|
6 |
|
7 | msg.status = 0;
|
8 | msg.handle = 0;
|
9 |
|
10 |
|
11 | msg.ctrl.ide = 0; //-- CAN 2.0A
|
12 | msg.dlc = std_dlc; //-- Max
|
13 | msg.id.std = std_id;
|
14 | msg.cmd = CMD_TX;
|
15 |
|
16 | while(can_cmd(&msg) != CAN_CMD_ACCEPTED);
|
17 | while(can_get_status(&msg) == CAN_STATUS_NOT_COMPLETED);
|
Eigentlich hab ich die Standardfunktionen aus den Beispieen von Atmel
verwendet.
Hat irgendjemand ne Idee was bei mir falsch läuft?
gruß