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