mikrocontroller.net

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


Autor: frozen yoghurt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Plodderer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einer Zustandsmaschine und einem Timer

Autor: frozen yoghurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.