LANC mit RX und TX steuern?

Ich nehme an, das hier ist schon bekannt ?
https://create.arduino.cc/projecthub/L-Rosen/serial-to-lanc-control-l-70f735

Klar, aber auch da (wie in allen anderen Lanc-Projekten die ich gefunden habe) wird das über einen GPIO-Pin und bitbanging gelöst.

...wechseln die da zwischen Serial und direktem Portzugriff:
GitHub - macchina/LIN: Arduino library to add dual LIN support on SAM3X based boards with a TJA1021/TJA1027 transceiver
(Der Machina M2 ist ein Due Clon für Automotive Anwendungen.)

Interessantes Projekt, aber auch da wird der nicht-standart UART Teil per bitbanging gemacht.

Mein Problem ist, dass ich insgesamt 9 Geräte an allen verfügbaren SPI, UART im SPI-Modus und UART - Ports des Core Due hängen hab. Davon sind min. 2 äußerst zeitkritisch und die CPU muss aber noch 3D-Gyro Daten auswerten, 3 Schrittmotoren steuern, ein Display mit Daten versorgen und den gesamten Datenverkehr überwachen.
Deshalb möchte ich möglichst viel Arbeit an die Zusatzeinheiten (UART Controller, DMA Controller,...) abgeben. Leider sind die 2 zeitkritischen Geräte genau die, die nicht dem SPI/UART Standart folgen.

Im Moment sieht es also so aus, als müßte ich die Lanc-Leitung direkt an den RX-Pin hängen, der dann nur "zuhört" und parallel dazu einen GPIO-Pin, der das Startbit abfängt, umschaltet und dann sofort per bitbanging den Rest sendet.
Wobei ich noch nicht weiß, wie ich bei den vielen Interrupts das Timing sicherstelle (ohne die CPU zu blocken), da LANC mit 9600 baud extrem langsam ist und das senden eines Bytes einfach ewig dauert (im Vergleich dazu laufen die SPI-Geräte mit 200 kHz bis 1 MHz).

dann ist das wirklich so ein doofes Protokoll. Jetzt hat er ja was er wollte. :slight_smile:

Danke, aber Schadenfreude ist hier etwas fehl am Platz. Ist ja nicht so, dass ich mir dieses bekloppte Protokoll ausgesucht hätte. Oder ganz allgemein, JEDER Kamerahersteller verbiegt die normalen Schnittstelleprotokolle so, dass es immer ein PITA ist, einen Controller selber zu bauen... wozu das auch immer gut sein soll?