Hallo!
Ich muß/will/darf ein Problem lösen, bei dem ich doch erst mal nachfrage, da ich mir nicht sicher bin, ob das überhaupt möglich ist.
Es geht um das auslesen eines AD-Wandlers über die SPI Schittstelle. Genauer geht es um den ADS8861.
Dieser schafft max 1 MS/s - mir würden aber auch schon 500 kS/s reichen. Nun habe ich gelesen, daß die SPI Schnittstelle nur mit 16 (oder 32) MHz taktbar ist. Mehr soll zwar einstellbar sein, aber nicht mehr funktionieren.
Der ADS8861 kann mit einem SCL bis 15ns pro Takt betrieben werden -> das wären 66 MHz. Bei 500 kS/s und 16 Bit würden 1,7µs für die 16 Takte bleiben (ca 300ns werden für die Wandlung benötigt). Das sind etwa 10Mhz (1,7µs / 16 Takte). Das sollte also mit den 16MHz möglich sein.
Das Problem ist jetzt: Der AD Wandler braucht etwa 300ns zum Wandeln. Es gibt eine Funktion, bei der das Wandlungsende über einen Pulldown der SDA Leitung signalisiert wird.
Lt. Application Note kann man dies über einen Interrupt auslösen lassen, nur sind die Lösungen (die ich bis jetzt gesehen habe) alle nicht hardwarenahe. Siehe: Sensor-Signal per Interrupt abfragen
Um einen echten Hardware(Kernel)Interrupt zu erzeugen, muß man wohl den Kernel neu komplilieren.
Die Frage ist nun: Hat das schon mal jemand gemacht und kann mir sagen, wie schnell der Interrupt dann ist?
Naiv würde ich sagen: 700Mhz Taktfrequenz - dann sollte der Interrupt innerhalb von 5 Takten ausgelöst sein - also deutlich unterhalb 10ns.
Oder ist die Interruptlösung nichts, und es ist besser zu pollen/warten und dann auslesen und auf gute Datenraten hoffen?