Hallo mare_crisium,
bin leider noch nicht all soweit gekommen.
Zum Einen war ich auf Fehlersuche zum Anderen mach ich mir noch Gedanken, wie man die Tasten-Auswertung am Besten realisiert.
Der Fehler:
Bei gedrueckter Taste ist mir aufgefallen, dass ein Tabellenindexfehler erzeugt wurde.
Der Z-Wert sprang von 0x0F auf 0x00 anstatt auf 0x07(wo er dann ohne Pegelaenderung verharren sollte).
Bei losgelassener Taste natuerlich dann auch.
Ursache:
Das Flankenbit wurde in der vorhergehenden Programmversion in TAST_UTILS_V01.asm bei "GET_HIGH_NIBBLE:" geloescht.
..und das ist in der neuen Version nicht mehr eingebunden. Aus diesem Grund gibt es nun eine TAST_UTILS_V02.asm.
Dort wird es jetzt in "NEXT_TAST_ZST:" bei der Beschraenkung der Tabelleneintraegen von ehemals 127(0x7F) auf 119(0x77) geloescht.
Nun ja, da haette ich es auch gleich ablegen koennen..![]()
Gedanken zur Auswertung der Tasten und Flanken:
-----------------------------------------------
Daten im R A M
Flankenbit - Bit3Code:Bsp Taste0 bei gedrueckter Taste.: ----------------------------------------------- TASTCTL0 Byte0 TASTCTL0 Byte1 TASTCTL0 Byte2 ----------------------------------------------- TASTCTL_FLAGS TASTCTL_MASKE ----------------------------------------------- 0000 0010 0000 0000 0000 0001 0x02 0x00 0x01 ----------------------------------------------- 0000 0100 0000 0000 0000 0001 0x04 0x00 0x01 ----------------------------------------------- 0000 0110 0000 0000 0000 0001 0x06 0x00 0x01 ----------------------------------------------- 0000 1111 0000 0000 0000 0001 0x0F 0x00 0x01 ----------------------------------------------- 0000 0111 0000 0000 0000 0001 0x07 0x00 0x01 ----------------------------------------------- || || || ---------------------------- Bsp Taste0 losgelassen(high bzw. gedrueckt voraus gegangen).: ----------------------------------------------- 0000 0111 0000 0000 0000 0001 0x07 0x00 0x01 ----------------------------------------------- 0000 0101 0000 0000 0000 0001 0x05 0x00 0x01 ----------------------------------------------- 0000 0011 0000 0000 0000 0001 0x03 0x00 0x01 ----------------------------------------------- 0000 0001 0000 0000 0000 0001 0x01 0x00 0x01 ----------------------------------------------- 0000 1000 0000 0000 0000 0001 0x08 0x00 0x01 ----------------------------------------------- 0000 0000 0000 0000 0000 0001 0x00 0x00 0x01 -----------------------------------------------
Taste gedrueckt: Bit0 :=0 bis Flanke eintritt dann 1
Taste losgelassen: Bit0 :=1 bis Flanke eintritt dann 0
-> Taste gedrueckt Bit0 :=0 -> dann Flankenbit -> Bit0 :=1 == Taste als High(geschaltet) erkannt
-> Taste nicht gedrueckt Bit0 :=1 -> dann Flankenbit -> Bit0 :=0 == Taste als Low( nicht geschaltet) erkannt
===> Auswertung mit Flankenbit auf Bit0
liegt FlankenBit an und ist Bit0 :=0 dann Tasten nicht gedrueckt
liegt FlankenBit an und ist Bit0 :=1 dann Tasten gedrueckt
------------------------------------------------
im Programm "Tasten_4g_V02" wurden die Flanken mit einem macro in der ISR in ein Register gesichert.
neu soll:
in Main-Schleife - vorangegngene ISR setzt Bit(1) - in rIO_Config fuer Erlaubnis zum FlankenBit testen - Flanke (gesetzt) - Ausgang(LED)Update - Rueckehr in Main-Schleife
in Main-Schleife - vorangegngene ISR setzt Bit(1) - in rIO_Config fuer Erlaubnis zum FlankenBit testen - Flanke (n.gesetzt)- Rueckehr in Main-Schleife
in Main-Schleife - vorangegngene ISR setzt Bit(0) - Rueckehr in Main-Schleife
// bin noch an der richtigen Ausarbeitung und hoffe es bis zum WE noch verneunftig umzusetzen
// habe dann noch weitere Plaene mit der Schaltung- mir schwebt eine Menuefunktion vor, mit der das LED-Update veraendert wird
PS. irgendwie verschwinden meine Leerzeichen im Posting- deswegen das RAM im Code-Schnipsel.







Zitieren

Lesezeichen