Je conçois un clavier en VHDL. Tout fonctionne bien lorsqu'une seule touche est enfoncée. J'analyse chaque colonne pour une pression de touche dans une machine d'état et lorsqu'aucune touche n'est enfoncée, ce qui est la condition que pin4pin6pin7pin2 = "0000"
je passe à l'état suivant pour analyser la colonne suivante. J'ai donc défini les colonnes de pin3pin1pin5
manière séquentielle sur "001"
, "010"
et "100"
.
Pendant la numérisation au pin3pin1pin5
fur "001"
et à pin4pin6pin7pin2
mesure, "0100"
il suffit d'appuyer sur "9". Je déclare en VHDL pin4pin6pin7pin2
comme pin3pin1pin5
ports d' entrée et de sortie. Lorsque j'appuie sur 6 et 9 en même temps pin6
et le pin7
sont high
. La première touche enfoncée est lue, la seconde est ignorée. Lorsque j'appuie sur 3 et 7 en même temps, le premier appuyé avec quelques ms avant gagne et la première touche est lue, la deuxième touche est ignorée, pin2
et le pin4
sont high
.
Voici la partie délicate. Quand j'appuie sur 4 et 6 en même temps, je m'attends pin7
à l'être high
mais ça devient low
et pin4pin6pin7pin2 = "0000"
, ce que je ne comprends pas comment et pourquoi. Parce qu'il "0000"
est détecté comme aucune touche enfoncée, la machine d'état passe d'un état à l'autre. Tout en maintenant 4 et 6 si l'on pousse et laisse 4 plusieurs fois, il est détecté comme 6 pressé plusieurs fois, ce qui est un gros bug . Je serais heureux si vous pouviez m'aider à déboguer cela!
La même chose se produit avec "1" et "2", la même chose avec "7" et "8" uniquement pour les touches de la même ligne. Puisqu'il s'agit d'un projet en cours, je ne peux pas mettre mon code VHDL en ligne :( Je serais heureux si vous pouviez me donner des conseils pour surmonter cela!
Ci-dessous, je ne télécharge pas mon code sur la carte, aucun code n'est en cours d'exécution. Connexion Pin5
à la terre, une seule pression sur 1,2,4,5,7,8, *, 0 n'allume pas la Pin3
LED mais si je presse 6 et 4 en même temps, la Pin3
LED est Pin7
allumée et la LED est toujours allumée, mais lorsque mon code s'exécute, cela ne se produit pas. Peut-être que j'ai connecté quelque chose de mal et heureusement Pin7
, je ne sais pas ...
Voici les schémas de la carte du clavier: