Ich muss mehrere analoge Eingänge so schnell wie möglich auf einem ESP32 lesen. Mit möglichst schnell meine ich, dass idealerweise alle Eingänge gleichzeitig gelesen werden.
Momentan lese ich sie einfach nacheinander mit aufeinanderfolgenden AnalogREAD()-Aufrufen in meinem Code, aber es kommt vor, dass ich einen Wert an einem Eingang lese, an dem kein Strom anliegt. Ich habe vor einigen Monaten irgendwo gelesen, dass es in diesen Fällen gut ist, zwischen Read-Aufrufen eine Pause einzulegen, um ihm die Zeit zu geben, zur richtigen Eingabe zu wechseln.
Ist das wahr? Was ist eine angemessene Zeit, die ich dort investieren muss, wenn ich bedenke, dass ich alle (5 Eingaben) so schnell wie möglich lesen müsste?
Alle Eingänge liegen auf dem ADC 1.
Der schnellste Weg wäre, zwei verschiedene ADCs zu verwenden, damit Sie zwei analoge Eingänge gleichzeitig abtasten und konvertieren können.
Der zweitschnellste Weg (laut Referenzhandbuch) wäre, dem ADC eine Liste von Kanälen mitzuteilen, die abgetastet werden sollen, und ihm zu sagen, dass er die Kanäle in der Liste abtasten soll, die Ergebnisse mithilfe von DMA in den Speicher schreibt und mit einem Scan-Complete-Interrupt meldet wenn es fertig ist, die Liste durchzugehen.
Eine Verzögerung zwischen ADC-Umwandlungen bringt wenig Nutzen, wenn es hilft, dann ist es ein Zeichen dafür, dass die abgetasteten Signale zu hohe Impedanzen haben, um ein stabiles Ergebnis zu erhalten, was auch ein Zeichen dafür sein könnte, dass der ADC für die erwarteten Signalimpedanzen falsch konfiguriert ist , und nur eine längere Abtastperiode (oder ein langsamerer ADC-Takt) könnte das Problem beheben. Normalerweise erfolgt die Umschaltung zwischen den Kanälen, wenn die analoge Abtastschaltung nicht mit dem analogen Pin verbunden ist.
Unwichtig
Nur ich