postmaster-ino:
HiUND: Eine CAN-ID ist EINDEUTIG und darf nur von EINEM Sender gesendet werden.
Yep,
hab ich vergessen, mein Beitrag war aber auch so schon lang genug.
Vielleicht wäre es bei diesem Projekt hilfreich, einen Bitbereich in den Message-IDs für die Modulnummer zu reservieren. Einmal kriegt man damit eindeutige Ids, wenn es jede Modulnummer nur einmal gibt. Zweitens könnte man die Module einheitlich aufbauen (auch von der Software her) und die Modulnummer z.B. mit Codierschalter oder "Mäuseklavier" einstellbar machen.
Wo ich mir nicht sicher bin, ist die Kombination von CAN und WS2812. Der Empfang von CAN-Daten führt ja in der Regel zu einem Interrupt. Bei ARM-Controllern mit integriertem CAN ist die Zeit dafür wahrscheinlich relativ unbedeutend. Aber beim MCP2515 führt ein Interrupt über die IO-Leitung ja dazu, dass eine SPI-Transaktion angestossen wird. Was passiert eigentlich wenn das während einer Kommunikation mit den WS2812-LEDs passiert ? Die Interrupts sperren, kann ja beim MCP2515 zu Paketverlusten führen, weil die Hardware intern nur zwei Pakete puffern kann.
Beim Teensy ständen auch DMA basierte Libs für WS2812 zur Verfügung, außerdem kann die Hardware bis zu 16 Messages intern puffern (falls sie aufs Senden ganz verzichtet). Mir ist aber klar, dass bei der großen Anzahl der hier zu bauenden Module die Teensys wohl zu teuer wären.