Hallo Leute, ich stehe vor einen Problem, wo ich leider noch keinen vernünftigen Ansatz gefunden habe. Ich möchte Impulse zählen in einen festgelegten Zeitraum. Ein ATtiny2313 soll von einen Münzzählgerät Impulse zählen. Dieses Gerät gibt in einer festen Zeit unterschiedliche Anzahl von Impulsen in einer festen Zeitbasis von 100ms, je nach Münzstück. Diese möchte ich auswerten um die Summe der Münzstücke zu addieren. Meine Überlegungen bisher: Ich nutze einen Timer und konfiguriere ihn mit externen Takt und lege dort mein Impulsausgang vom Münzzahler an. Ein zweiter Timer kann mir helfen das Zeitfenster von 100ms zu erstellen. Aber mir fehlt ein Ansatz, wie ich nun den uC sage wann diese 100ms eigentlich anfangen. Sie fangen ja mit dem ersten Impuls von dem 100ms Zeitfenster an und können ja jederzeit anfangen. Hat jemand einen Denkanstoß für mich? Ich bin über jede Hilfe dankbar.
Karl M. schrieb: > Tipp: bitte zeichne eine Zeitdiagramm. Danke für den Tipp, ich hatte bereits eins gezeichnet. Nicht professionell aber es macht deutlich was passiert. Hab es im Anhang eingefügt.
Es gibt eine, die Erste steigende Flanke - das wäre aus Sicht des Diagramms der Start. Richtig?
Es wäre sinnvoller ein Interrupt zu nutzen der ab der ersten Signalflanke vom Münzzähler die Zeit bis 100ms startet und dann die Anzahl der Impulse auswertet. Was haltet ihr von der Lösung, sinnvoll?
Karl M. schrieb: > Es gibt eine, die Erste steigende Flanke - das wäre aus Sicht des > Diagramms der Start. > > Richtig? Richtig, diese kommt aber irgendwann, also sobald eine Münze eingeworfen wird. Absolut zeitunabhängit. Aber wenn eine Münze eingeworfen wird, gibt der Automat eine Impulsanzahl innerhalb der 100ms aus.
Du musst es programmieren, mach mal. Und vergessen nicht deine Ideen vorher genau aufzuschreiben. Draus entstehen dann Erfassungs-Zustände, die man in einen Automaten überführen kann.
Flanken ISR: 1. Flanke erkennen 2. läuft das 100ms-Intervall? (noch) nicht? 2a. Interval-Timer starten 2b. Impuls-Zähler auf 0 setzen 3. Impuls-Zähler erhöhen Interval-Ende-ISR 1. Impuls-Zahlerstand speichern (für Auswerteroutine) 2. Fertig-Meldung abgeben Das wären zwei ISR: Eine wird aufgrund eine Flanke an einem IO-Pin ausgelöst, die andere beim Überlauf eines 100ms-Singleshot-Timers (kein automatisches Reset).
Interrupts an prellenden Kontakten sind selten eine gute Idee. Schau Dir doch an, wie man eine Wählscheibe einliest, das ist das gleiche Prinzip. https://www.instructables.com/id/Interface-a-rotary-phone-dial-to-an-Arduino/
Mario M. schrieb: > Interrupts an prellenden Kontakten sind selten eine gute Idee. Schau Dir > doch an, wie man eine Wählscheibe einliest, das ist das gleiche Prinzip. > https://www.instructables.com/id/Interface-a-rotary-phone-dial-to-an-Arduino/ Der beschriebene Münzzähler wird wohl kaum einen Ausgang mit mechanischem Kontakt haben. Sascha
Gehören die Threads irgendwie zusammen, unter 2 verschiedenen Gast-Usern? Beitrag "Pulse auswerten und Kontakt schließen"
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.