Forum: Mikrocontroller und Digitale Elektronik Daten abhängig vom Takt einlesen


von frozen yoghurt (Gast)


Angehängte Dateien:

Lesenswert?

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

von Plodderer (Gast)


Lesenswert?

Mit einer Zustandsmaschine und einem Timer

von frozen yoghurt (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.