Re: Interrupt Handler verbiegen klappt nicht
Verfasst: Di 3. Mai 2016, 11:59
Bei CAN bin ich einen anderen Weg gegangen weil ich diesen GlobalAPI zu hakelig finde.
Ich habe ein Array aus Funktionszeigern angelegt und habe diese dann über macros im CAN Treiber aufgerufen, so kann man jeder Mailbox einen eigenen Handler zuweisen und einfach ändern.
Das mit dem ACR/AMR/CMD registern ist ein wenig spooky, schein als wäre da IP einfach eingekauft worden.
Das mit dem Filter gucke ich mir dann auch nochmal an, mache das derzeit in Software (schalte den Interrupt nur frei wenn ich auf Nachrichten von Servern warte).
Das CMD register habe ich mal auseinander genommen:
Ich habe ein Array aus Funktionszeigern angelegt und habe diese dann über macros im CAN Treiber aufgerufen, so kann man jeder Mailbox einen eigenen Handler zuweisen und einfach ändern.
Das mit dem ACR/AMR/CMD registern ist ein wenig spooky, schein als wäre da IP einfach eingekauft worden.
Das mit dem Filter gucke ich mir dann auch nochmal an, mache das derzeit in Software (schalte den Interrupt nur frei wenn ich auf Nachrichten von Servern warte).
Das CMD register habe ich mal auseinander genommen:
Code: Alles auswählen
CMD 1000 0000 0000 0000 0010 1000
| | |||| |||| || |---// bit 0: ACK
| | |||| |||| ||
| | |||| |||| ||-----// bit 2: RTR Abort
| | |||| |||| |------// bit 3: Buffer Enabled
| | |||| ||||
| | |||| ||||--------// bit 4: RTR Reply
| | |||| |||---------// bit 5: Interrupt Enable
| | |||| ||----------// bit 6: Linking enabled
| | |||| |-----------// bit 7: Write Protection Low
| | ||||
| | ||||-----------------------// bit 16: DLC[0]
| | |||------------------------// bit 17: DLC[1]
| | ||-------------------------// bit 18: DLC[2]
| | |--------------------------// bit 19: DLC[3]
| |
| |----------------------------// bit 20: IDE
|
|
|-------------------------------// bit 23: Write Protection High