Gast
#412028
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