Hi,
ich habe hier ein etwas spezielles Signal, das wie SPI aussieht, aber leider keines ist. Kurz: es gibt ein Sync-Signal und einen Clock. Bei jeder positiven Flanke auf Clock sind zwei GPIOs einzulesen (Data). Da SYNC leider irgendwo mitten in einem Frame nur für die Dauer eines Clock kommt, kann ich kein SPI verwenden. Meine Idee wäre jetzt, einen 120MHz ATSAMD51G zu nutzen und den Krempel in Code zu gießen:
CLock und Sync lösen jeweils einen Interrupt aus. Sync kommt eher selten, mein Problem ist das Clock-Signal: dieses kommt mit einer Frequenz von 2 MHz, also hätte ich bei 120 MHz in der ISR theoretisch etwas weniger als 60 Taktzyklen Zeit, um die zwei GPIOs zu lesen, und die Bits in je eine Variable zu shiften und um vielleicht noch eine Statusvariable zu setzen.
Meiner Meinung nach sollte das aufgehen, sprich 60 Zyklen sollten eigentlich genug sein für so ein paar simple Operationen, so dass der main-Loop auch noch genügend Rechenzeit abbekommt.
Allerdings: kann diese Rechnung stimmen? wie groß ist der Overhead bei einem External Interrupt auf dem ATSAMD51G? Wie viel von meinen 60 Zyklen geht da allein durch den Interrupt verloren?