Forum: Compiler & IDEs Clickzähler mit 16 PIN


von Christoph Krikl (Gast)


Lesenswert?

Hi Leute,

zur Hardware: atMega8, 2x PCF8574 interrupt verbunden mit INT0

ich hab nun also 16 Eingänge, bei Jedem status wechsel am PCF wird ein
interrupt ausgelöst, ich lese bei pcf aus und vergleiche den vorher
wert mit dem aktuellen wert hab ich irgentwo einen flanke von 1-> 0
zähle ich das als klick, max 16 klick pro pin, geht also ein PCF schön
in 4 char rein.

bis dahin ja noch ganz esay und die Variablem und die Größen sind auch
fix, ist auch super durch die interrupt und ums prellen der taster
brauch ich mich auch net kümmern

jetzt will ich aber nach 1sec wenn kein weiterer Click kommt ein
ereignis auslösen, abhängig von der Click zahl.

mit einem Pin ja kein problem timer setzen wenn er abgelaufen ist kommt
der interrupt der die clicks ausliest und danach das richtige  ereignis
auslöst, wenn ein click vor dem ablauf des timers kommt setzt ich den
zähler einfach wieder auf 1sec zurück.

jetzt für 16 wird das ganze ein bisserl kompleziert und irgetwie gerät
jeder lösungsansatz bei mir aus den fugen und wird zu einem Monster aus
buffern und IFs.

überlegt hätte ich mir ja
einen buffer als fifo für den timer(mit nächstem timerwert, Port und
Pin)
ja nur geht das ja auch nicht weil wenn ein click in der zwischenzeit
kommt müsste ich ja den buffer updaten

ein array nach ports aufteilen, bei jedem timerdurchlauf den gesamten
dieses komplett nach den niedrigsten wert zu druchsuchen ist ja nicht
grad sehr fein

und umgekährt bei jedem klick das alles zu machen ist ja auch nicht
wirklich schön

nur fällt mir irgentwei nicht besseres ein, hat jemand von euch
vielleicht eine gescheite lösung für ein solches problem???

danke
Christoph

von Jan (Gast)


Lesenswert?

Ein Timer, der z.B. alle 50ms überläuft und kontinuierlich einen counter
hochzählt. Dann für jeden Taster eine Variable, die die Klicks zählt und
eine, die den counter-Stand bei der letzten Betätigung enthält. Im
Timerinterrupt überprüfst du dann, ob bei einem der Taster die letzte
Betätigung mehr als 20ms zurückliegt und die clicks >=1 sind (er also
überhaupt betätigt wurde). Speicherbedarf ca. 40 Byte

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
Noch kein Account? Hier anmelden.