Hallo
Ich möchte das Display spätestens aller 2 Sekunden aktualisieren.
Dazu werden einmal die Laufzeit angezeigt, und zum anderen andere Meßwere. Darunter auch ein Counter der ein Hi-Low als Verhältnis eines Eingangssignales verarbeitet.
Ich habe bisher noch keine Erklärung gefunden warum eine entzelne Messung mit
time_pulse_us(self.input, 1, 1_000_000)
beim Beginn der Anfrage unter gewissen Umständen erst einmal ein falsches Ergebnis liefert, obwohl der Signaleingang momentan noch von einem Funktionsgenerator gespeist wird.
on_time = sum([time_pulse_us(self.input, 1, 1_000_000) for _ in range(counter + 2)][2:]) / counter
Damit habe ich einen recht konstanten Wert erzielen können. Ich habe das ganze auch schon einzeln ablaufen lassen, also auf mehrere Zeilen aufgegliedert, um ermitteln zu können, wie viele Werte ich bei dieser Betrachtung abschneiden muss.
Nun wird dieser Vorgang auch noch einmal mit dem Sprung auf Low = Status 0 wiederholt. Dazu schalte ich jeweils noch den Eingangspin von Pull_Down auf PulL_Up um, um das Zeitverhältnis Low to High und High to Low ermitteln zu können.
Dazu hatte ich mir zu erst zwei Timer geschrieben, einer der das Display aktualisiert, und einen der diesen Meßzyklus startet. Das funktionierte überhaupt nicht. Wenn diese Abfrage noch lief und mit der Displayaktualisierung zeitlich zusammen gefallen ist, hatte ich nur fehlerhafte Meßwerte, egal wie klein ich den Counter gesetzt hatte. Mein Problem für die Endanwendung ist ich möchte das Verhältnis Low zu High in einem Frequenzbereich zwischen 35 Hz und 12 kHz ermitteln. Ein weiteres Problem, welches ich bisher auch noch nicht lösen konnte ist die Tatsache wie komme ich aus einer solchen Abfrage heraus, wenn das Signal aussetzt. Somit der Eingangspegel für eine Zeit X auf Low abfällt und bleibt.