Hi, ich möchte gerne mehrere AD-Wandler auslesen. Das soll so ablaufen, dass ein µP über SPI verschiedene CS-Leitungen den entsprechenden Baustein auswählt und die Daten eingelesen werden. Allerdings soll das wiederum abhängig von einem anderen Taktsignal sein, das vom µP ausgegeben wird. das Programm soll in C laufen... Ich hatte mir das irgendwie so gedacht: CLK HIGH CS wählen Daten lesen nächsten CS wählen Daten lesen ... irgendwas mit den Daten machen CLK LOW CS wählen Daten lesen nächsten CS wählen Daten lesen irgendwas mit den Daten machen Aber wie kann ich den richtigen Zeitpunkt finden? Die Dauer von CLK im High oder Lowbereich sind beispielsweise jeweils 100ms (5Hz). Innerhalb der Bereiche sollen verschiedene Slaves angesprochen und ausgelesen werden. Wie lange das jeweils dauert kann man über udelay(x) beeinflussen?! Sagen wir einmal 16 bit lesen dauert 350µs und z.B. 5 AD-Wandler also in der Summe 1,75 ms - es wären also pro Wandler min. 57,x Messungen möglich. Nimmt man nun 50 Messungen an...wie berechnet man nun die Restzeit bis man CLK togglen darf? Ich hoffe die Paintzeichnung erklärt was ich meine :/ Vielen Dank schon mal für Tipps frozen yoghurt
Könnte das mal jemand etwas genauer erklären bzw. ein simples Pseudocodebeispiel oder einen Link zu so etwas geben? Wenn ich in der mainloop in einer while(1) die FSM Abfrage und dann z.B. Zustand 1 gegeben ist und ich deswegen Funktion 1 aufrufe etc. an welcher Stelle sollte man den Timer starten? Wenn z.B. eine aufgerufene Funktion gerade läuft und währenddesssen sich ein Timer ändert / high-low wechsel stattfinden soll?! Muss man noch Softwaretimer laufen lassen und mit dem Hardwaretimer vergleichen? C ist linear und es läuft nichts parallel so, dass auf interrupts reagiert werden kann? Wäre nett wenn ihr mir ein wenig auf die Sprünge helfen könntet!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.