Estou projetando um teclado em VHDL. Tudo funciona bem quando apenas uma tecla é pressionada. Estou digitalizando cada coluna para pressionar uma tecla em uma máquina de estado e quando nenhuma tecla é pressionada, que é a condição que pin4pin6pin7pin2 = "0000"
eu alterno para o próximo estado para digitalizar a próxima coluna. Assim, defino as colunas pin3pin1pin5
sequencialmente para "001"
, "010"
e "100"
.
Durante a digitalização de pin3pin1pin5
como "001"
e se pin4pin6pin7pin2
é "0100"
, em seguida, simplesmente "9" é pressionado. Declaro em VHDL pin4pin6pin7pin2
como pin3pin1pin5
portas de entrada e saída. Quando eu pressiono 6 e 9 ao mesmo tempo pin6
e pin7
são high
. A primeira tecla pressionada é lida, a segunda é ignorada. Quando pressiono 3 e 7 ao mesmo tempo, o primeiro pressiona com alguns ms antes de vencer e a primeira tecla é lida, a segunda tecla é ignorada pin2
e o pin4
é high
.
Aqui está a parte complicada. Quando pressiono 4 e 6 ao mesmo tempo, espero pin7
ser, high
mas ele se torna low
e pin4pin6pin7pin2 = "0000"
, o que não entendo como e por quê. Como "0000"
é detectada como uma tecla não pressionada, a máquina de estado pula de estado para estado. Enquanto segura 4 e 6, se alguém empurra e sai 4 várias vezes, é detectado como 6 pressionado várias vezes, o que é um grande erro . Ficaria feliz se você puder me ajudar a depurar isso!
O mesmo acontece com "1" e "2", o mesmo com "7" e "8" apenas para as chaves na mesma linha. Como este é um projeto em andamento, não posso colocar meu código VHDL on-line :( Ficaria feliz se você pudesse me dar dicas para superar isso!
Abaixo, não estou carregando meu código no quadro, nenhum código está sendo executado. Ao conectar Pin5
ao terra, uma única pressão de 1,2,4,5,7,8, *, 0 não Pin3
acende o LED, mas se eu estiver pressionando 6 e 4 ao mesmo tempo, o Pin3
LED está aceso e o Pin7
LED ainda está aceso, mas quando meu código está sendo executado, isso não acontece. Talvez eu tenha conectado algo errado e, felizmente, Pin7
esteja ligado, eu não sei ...
Abaixo está o esquema da placa do teclado: