Thread ? <-> OSEK-Betriebssystem?
Filter <-> clever programmieren ?
32Bitter <-> stark ausgelastet?
Michael,
bitte, ein Mikrocontroller ist kein PC !
Wenn Du einen 1MBaud CAN-Bus hast, dann würde er bei Volllast ca 6000
8Byte Botschaften im 2.0 A- Standard (11-Bit-Identifier) maximal
übertragen können. D.h. Deine maximale Bearbeitungfrequenz wäre 6 kHz.
Und das ist selbst für einen ATmega kein Kunststück.
Also, ich habe einen ATMega mit einem MCP2515 zum CAN-Bus-Sniffen
eingesetzt.
Der Mega (lumpiger 8-Bitter mit 16 Mhz - Quarz) brauchte über SPI nur
ca. die halbe CAN-Botschaftsdauer, um die Daten aus dem externen
Controler in den MCU zu kopieren. Der Kopiervorgang umfasst CAN-ID, DLC,
DATEN. Also 12 Bytes. Ich glaube das waren ca. 68µs. Ich habe auch den
SPI mit 8 MHz gequält, was eigentlich out of Spec ist. Es funktioniert
bis heute.
So, jetzt hast Du erst einmal Zahlen...
Das Filtern habe ich erst im MCU gemacht. D.H. der Mega hat jede
Botschaft in die Hände nehmen und bearbeiten müssen. Und das hat der mit
eine Buslast von 60% geschafft.
Soweit zur Praxis.
Was willst Du jetzt machen?
Wie hoch ist Deine Datenrate auf dem CAN?
Wie willst Du die CAN-Botschaften weiterverarbeiten?
Threads, die asynchron parallel arbeiten, müssen sich auch verwalten
bzw. sich gegenseitig verriegeln.
Ich arbeite mit einem kooperativen Round-Robin-Scheduler. Und der
schafft das auch...