Danke das hat funktioniert.
Jedoch läuft der DVK90CAN1 mit 8mhz und nicht mit 16mhz. Ich denke
deswegen bekomme ich es jetzt trotzdem nicht zum laufen.
Ich hab das ganze jetzt geschafft mit der Atmel Bib zu realisieren.
Allerdings kann ich dann keine IDs richtig Filtern.
Das ganze hängt an dieser Funktion (unten angehängt). Vielleicht
versteht ja einer was man damit machen kann. Ich steig nicht dahinter.
Wäre cool.
Das Problem liegt daran, wenn ich einen Mask setzte und eine falsche ID
kommt sendet diese Funktion MOB_NOT_COMPLETED und ich häng damit in
einer while Schleife fest. Leider kann ich diese while nicht verändern,
denn selbst wenn die richtige ID kommt benötigt diese ein paar
durchläufe bevor die unten stehende Funktion nicht MOB_NOT_COMPLETED
zurückgibt.
Ich verwende die Atmel bib. Bekommen von dieser Seite:
https://bitbucket.org/m.kramis/canbootloader/src/784c7fc10a75/libraries/lib_mcu/can/
Jegliche Hilfe die mir eventuell auch nur Mobs besser verstehen lässt
wäre toll. Vielleicht komm ich damit dann irgendwie weiter.
U8 can_get_mob_status(void)
{
U8 mob_status, canstmob_copy;
// Test if MOb ENABLE or DISABLE
if ((CANCDMOB & 0xC0) == 0x00) {return(MOB_DISABLE);}
canstmob_copy = CANSTMOB; // Copy for test integrity
// If MOb is ENABLE, test if MOb is COMPLETED
// - MOb Status = 0x20 then MOB_RX_COMPLETED
// - MOb Status = 0x40 then MOB_TX_COMPLETED
// - MOb Status = 0xA0 then MOB_RX_COMPLETED_DLCW
mob_status = canstmob_copy & ((1<<DLCW)|(1<<TXOK)|(1<<RXOK));
if ( (mob_status==MOB_RX_COMPLETED) || \
(mob_status==MOB_TX_COMPLETED) || \
(mob_status==MOB_RX_COMPLETED_DLCW) ) { return(mob_status); }
// If MOb is ENABLE & NOT_COMPLETED, test if MOb is in ERROR
// - MOb Status bit_0 = MOB_ACK_ERROR
// - MOb Status bit_1 = MOB_FORM_ERROR
// - MOb Status bit_2 = MOB_CRC_ERROR
// - MOb Status bit_3 = MOB_STUFF_ERROR
// - MOb Status bit_4 = MOB_BIT_ERROR
mob_status = canstmob_copy & ERR_MOB_MSK;
if (mob_status != 0) { return(mob_status); }
// If CANSTMOB = 0 then MOB_NOT_COMPLETED
cmd->status =
return(MOB_NOT_COMPLETED);
}