-
-
Erfahrener Benutzer
Robotik Einstein
Ich würd das was Du vorhast in einer Interruptroutine plazieren.
Der A/D Wandler wird im Hauptprogramm für den ersten Kanal in single Conversation gestartet.
Wenn die Wandlung fertig ist löst der A/D Wandler einen Interrupt aus.
Der A/D Wandlerwert wird ausgelesen und vorerst mal abgespeichert.
Jetzt wird innerhalb der Interruptroutine auf den nächsten Kanal umgeschaltet und eine neue single Conversation gestartet.
Das Spielchen geht jetzt so lange weiter bis alle gewünschten Kanäle einmal dran waren.
Jetzt werden die temporärwerte ausgelesen und mit dem Schwellwert verglichen.
Ist einer der Werte über dem Schwellwert werden die Daten endgültig abgespeichert, ist kein Wert dabei, werden die Daten im temporären Speicher beim nächsten Durchlauf überschrieben.
Ob Du dann einen neuen Zyklus in der Interruptroutine startest, oder wieder im Hauptprogramm ist deine Entscheidung.
Ein Interrupt sollte imme so kurz wie möglich ausfallen.
Also keinen unnötigen Code, oder gar Zeitschleifen reinbasteln.
Alternativ kannst Du die Wandlerergebnisse auch im Hauptprogramm erfassen, dann musst Du aber das "Conversation Ready Bit" (Weiss jetzt nicht genau wie das wirklich heisst) pollen (=ständig abfragen).
Eine Wandlung erst starten, wenn ein Wert überschritten wurde kann nicht funktionieren, weil Du ohne A/D Wandlung natürchlich auch keine Wandlerergebnisse hast.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen