Nachdem die Übertragung selbst nun funktioniert, die CAN Nachricht als
empfangen wird und ein ACK gesendet wird. Verzweifle ich daran an die
Daten zu kommen.
Es gibt ja 6 MOBs die man mittels CANPage auswählt, wie liest man nun
aber den Identifier und die Daten aus, wenn man das ganze nicht per
Maske ausfiltert sondern jede Nachricht verwerten will.
Spielt mir da der FIFO CAN Date Buffer einen streich weil dieser
weiterhochzählt.
Ich habe mal den Code etwas ausgekürzt (Stackpointer,
Portinitialisierung, Interruptvektortabelle...weggekürzt)
Das Programm verbleibt einfach in einer Schleife und bei einem Interrupt
soll einfach das 1 Byte (0b00000001 oder 0b00000000) ausgewertet werden
und per LED angezeigt werden.
Keine Ahnung was der Code macht, das tue ich mir nicht an.
Aber, erstmal steht im CANSIT2 Register drin, welche Message-Box den
Interrupt ausgelöst hat.
Entsprechend wird über das CANPAGE Register die Message-Box ausgewählt.
Und dann findet man über die CANIDTn Register raus welche ID die
empfangene Botschaft hat.
Bits 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 – IDTn: Identifier Tag
Identifier field of the remote or data frame to send. This field is
updated with the corresponding value of
the remote or data frame received.
Wenn man denn weiss wohin das soll, kann man die Botschaft über das
CANMSG Register auslesen.