FR 2329016 A1 19770520 FR 7632304 A 19761021 l'invention concerne des claviers électroniques en général et plus particulièrement des claviers à protection contre une double entrée, à mottage parallèle et â codage. Ls systèmes de claviers classiques comprennent des touches de contact momentané que l'on eut schématiquement représenter comme des matrices ayant des rangées et des colonnes, caque touche étant balayée i une cadence déterminée par une horloge interne. Ces systèmes ont jusqu'ici nécessité des circuits relativement complexes pour faciliter l'entrée paral île des données. De plus, la possibilité d'erreurs dans le système est assez élevée. Si, par exemple, on abaisse deux touches simultanément, il en résulte d'ordinaire une entrée erronée.D'autres erreurs sont introduites par le rebondissement des touches du fait de l'action mécanique vibratoire de la mise en contact et de l'interruption du contact, ainsi que des effets fantomes quand on appuie sur trois touches adjacentes faisant partie d'un carré de la matrice. Selon l'invention, on prévoit un clavier électronique qui utilise une proramnerie fixe en combinaison avec un circuit d'entrée simplifié pour déterminer la validité des données codées par touches. Le codage par touches comprend des rangs de touches que lton peut schématiquement représenter comme une matrice ayant des rangées et des colonnes dont chaque intersection correspond à une touche et se trouve balayée suivant une séquence pour en déterminer l'état. De balayage est exécuté au moyen d'un décodeur qui est couplé aux rangées et d'un codeur qui est couplé aux colonnes par une paire de compteurs binaires dont la sortie de comptage correspond aux codes des touches du clavier et se trouve surveillée par la programmerie fixe. Deux bascules J-K reliées entre elles complètent le système séquentiel et sont adaptées pour produire un signal d'interruption quand une touche est abaissée pendant deux cycles complets de balayage de la matrice. Ce signal d'interruption est détecte par la programmerie fixe qui envoie un signal de verrouillage pour verrouiller les compteurs pendant un temps suffisant pour lire et traiter les données parallèles codées par touches. Quand les touches sont levées après avoir été abaissées, il se produit un signal d'interruption pour signaler à la programmerie fixe que toutes les touches sont en position haute. La programmerie fixe, qui se présente sous la forme d'une mémoire à lecture seule, a des instructions pour garder trace des codages par touches, en réponse aux signaux d'interruption. Elle comprend un empilement de mémoires qui peut stocker jusqu'à trois codages par touches pour une triple exploration de touches. Quand une touche apparaft deux fois dans l'empilement, elle est communiquée au processeur ou a l'écran de visualisation comme une touche valable. Xi l'on voit plus de trois touches dans un cycle de balayage, aucune touche n'est communiquée au processeur.Si aucune touche n'est vue hlDendant un cycle de balayage l'eripilemet de mé- moires est remis à zc ro. La programmerie fixe fournit aussi un rythme de répétition variable et facilite l'extension d'un clavier å mode simple à un clavier à mode octuple comprenant: des fonctions de haut et de bas de casse, une touche de com- mande, une touche de décalage et un verrouillage TTY. Un objectif de l'invention est donc de fournir un clavier à protection contre les doubles entrées. Un autre objectif de l'invention est d'éliminer le rebondissement des touches dans un clavier. Un objectif supplémentaire est de fournir un circuit d'entrée simplifié pour une entrée parallèle de données. Un objectif de l'invention est aussi de fournir un clavier à explorations de touches multiples. Un objectif de l'invention est encore de fournir un clavier avec autorépétition à rythme de répétition variable. L'invention a aussi pour objectif de développer un clavier à mode simple en un clavier à mode octuple. L'invention a encore pour objectif d'utiliser les instructions d'une mémoire à lecture seule pour piloter un clavier. Les points principaux de l'invention ressortent des revendications jointes. On aura une compréhension plus profonde des objectifs et avantages de l'invention, énumérés ci-dessus ou autres, en se référant à la description qui suit, considérée conjointement avec les dessins joints. La Fig 1 est un diagramme synoptique général d'un système utilisant un clavier. La Fig 2 est le schéma d'un clavier selon l'invention. La Fig 3A est un schéma d'un système séquentiel comprenant une paire de- bascules J-K reliées l'une à l'autre et une porte OU-NON. La Fig 3B est la table de vérité des bascules J-K de la Fig 3A. La Fig 3C montre un diagramme d'état des bascules J-K de la Fig 3A. La Fig 3D montre un diagramme en échelle du fonctionnement des bascules de la Fig 3A. La Fig 4 montre la succession des instructions programmées contenues dans la programmation fixe. Dans la Fig 1, les chiffres de référence désignent les organes suivants: 1= clavier c= microprocesseur 4= mémoire à lecture seule 5= mémoire à lecture/ écriture 6= voie des adresses Y voie des données b= voie de commande Dans la Fig 1, qui représente le diagramme synoptique général d'un système utilisant un clavier1 le clavier 1 est montré relié à un microprocesseur 2 afin de diriger les opérations du système, aussi bien en ce qui concerne le décodage des instructions que l'exécution des opérations arithmétiques et logiques. Les instructions pour le microprocesseur sont fixées de manière permanente dans une mémoire à lecture seule 4.Du fait que ces instructions sont fixées de manière permanente1 on désignera les instructions pour le microprocesseur sous le nom de "programmerie fixe". De manière typique, le microprocesseur 2 reçoit une instruction de la mémoire à lecture seule en plaçant une adresse sur la ligne des adresses 6. La mémoire de lecture seule 4 répond en envoyant l'instruction stockée à cet emplacenent au microprocesseur, par la ligne des données 7. Le microprocesseur décode et exécute l'instruction.Une mémoire à lecture/ écriture 5 est utilisée pour stocker temporairement des données, des instructions de programme et des résultats intermédiaires obtenus pour les opérations arithmétiques La mémoire à lecture/ écriture 5 conserve aussi les données et programmes que le clavier 1 a fait entrer dans le système, et elle a la souplesse voulue pour permettre à l'information d'entre modifiée ou remplacée à tout moment. Un système tel que celui de la Fig I peut être étendu pour incorporer d'autres dispositifs périphériques, d'affichage ou autres. La Fig 2 est le schéma d'un clavier selon l'invention. Le clavierlui- même est représenté par une matrice 10 formée par des intersections électriques disposées en colonnes et en rangées. Quand les touches sont en position haute, ces intersections sont ouvertes et quand les touches sont en position basse, ces intersections sont fermées ou court-circuitées. Un décodeur 12 est relié aux rangées et un codeur 14 est relié aux colonnes. Le décodeur 12 peut être le circuit intégré du commerce 74159, et le codeur 14 peut être le circuit intégré du commerce 74151. L'état actif du décodeur 12 correspond à un niveau bas sur les lignes O à 15 tandis que les lignes Do à D7 du codeur 14 rejoignent une source convenable de tension positive, par exemple 5 V, par l'intermédiaire de résistances 16 à 23. Le décodeur 12 et le codeur 14 sont pilotés par une paire de compteurs binaires 26 et 28 qui peuvent être-les circuits intégrés du commerce 7493. est Le compteur 26 conduit par une horloge 30 par l'intermédiaire d'une porte ET-NON 31. Les compteurs 26 et 28 sont disposés de manière que chaque intersection de la matrice soit balayée séquentiellement par colonnes et rangées, ainsi que cela est bien connu dans cette technique. Quand une touche est abaissée, l'intersection oui lui correspond est court-circuitée, et, quand cette colonne particulière et cette ligne particulière sont habilitées dans la séquence de balayage, un niveau bas est transmis à la sortie Y du codeur 14. Cette sortie Y du codeur 14 est reliée à un circuit de commande d'interruption 35. Ce circuit 35 est également adapté à recevoir le débordement du compteur 28 de sorte que, lorsque la cycle de balayage est achevé, le circuit de commande d'interruption 35 en reçoit notification.Ce circuit de commande d'interruption, qui sera décrit en détail plus loin, reçoit l'information qu'une touche est abaissée, pendant un cycle de balayage, mais il attend jusqu'à la fin d'un second cycle de balayage avant d'envoyer un signal d'interruption à une unité centrale de traitement 40 associée, par un adaptateur d'interface périphérique 42. Cette unité centrale de traitement 40 accuse réception du signal d'interruption en renvoyant, par la ligne d'accusé de réception 41, un signal au clavier afin d'arrêter la séquence de balayage à cette touche. Le signal d'accusé de réception est appliqué à la porte ET-NON 31 qui met hors service l'entrée du signal d'horloge venant de l'horloge 30. Les compteurs binaires 26 et 28, qui ont arrêté leurs comptes à une position de touche particulière, envoient leurs sorties de comptage binaire 32 comme données à l'unité centrale de traitement 40. Cette unité centrale de traitement lit ces données, puis relâche les compteur6 par la ligne d'accusé de réception 41, de manière qu'ils puissent poursuivre la séquence de balayage. L'unité centrale de traitement 40 comprend une mémoire à lecture seule et une mémoire à lecture/ écriture comme on l'a décrit à propos de la Fig 1. L'adaptateur d'interface périphérique 42 peut être le composant du commerce MOTOROLA MC 6820. Sur la ligne des données, en plus des données à codage par touches, se trouve une information concernant le modé de fonctionnement du clavier. Ces modes de fonctionnement font intervenir des touches de décalage 45, 46 qui permettent d'engendrer deux caractéres à partir d'une seule touche; la touche de commande 47 permet d'introduire des fonctions spéciales et la touche de verrouillage TTY 48 fournit un mode dans lequel tous les carac tères engendrés sont haut de casse. Ces touches 45 à 48 ont été représen tées sur la Fig2 sous la forme d'interrupteurs à contact momentané. Cés lignes de sortie sont normalement maintenues au niveau haut par des résistances 50 à 52 reliées à une source de tension positive. Quand on appuie sur l'une quelconque des touches 45 à 4 & la ligne particulière concernée est mise à la terre et elle est lue par l'unité centrale de traitement comme un niveau logique bas.Cette utilisation de données parallèles permet à un clavier à mode simple d'hêtre mis en oeuvre comme un clavier à mode octuple. Les données des lignes de données sont lues par l'unité centrale de traitement uniquement à la réception d'un signal d'interruption venant du circuit de commande d'interruption 35. On va maintenant décrire ce circuit en se référant aux Fig 3A à 3D La Fig 3A montre le circuit de commande d'interruption 35 qui comprend une paire de bascules J-Ix 60 et 61 et une porte OU-4ON 64. Une première borne d'entrée 66 reçoit la sortie du compteur binaire 2t, comme on l'a décrit précédemmento et une deuxième borne d'entrée ; reçoit l'information de scrutation des touches venant du codeur 14, comme on l'a également décrit précédemment.Le signal dtinterrup- tion qui est engendré est disponible à la borne de sortie 70. L'action de ce circuit va maintenant être décrite en se référant à la table de vé- rité, au diagramme des états et au diagramme des formes d'onde (Fig 3R à 3D). Sur la table de vérité (Fig 38), on a indiqué par: Qg, Q qu'il nty 0 avait pas de changement d'état, et par: Qui qu'il y avait changement d'état, et le signal de remise à zéro a été désigné par CLR comme l'entrée sur laquelle il agit et qui est visible sur la Fig 3A.Sur le diagramme des états (Fig 3C), pour chaque état, le premier niveau logique indiqué est celui de la sortie Q de la bascule 60 et le deuxième niveau logique indiqué est celui de la sortie Q de la bascule 61. Sur le diagramme des formes d'onde (Fig 3D), on peut voir de gauche à droite, successivement, un état de repos RI, une touche abaissée TAI, un premier signal de fin de balayage (FB1), une touche abaissée TA2, un deuxième (FB2), puis un troisième (FB3) signal de fin de balayage et un état de repos R2. Initialement, le circuit de commande d'interruption 35 est à l'état de repos (10) qui est défini comme étant l'état des sorties Q des bascules 60 et 61 respectivement. Dans cet état de repos (R1), l'entrée de renversement 66 et l'entrée de scrutation des touches 68 sont toutes deux au niveau haut, c'est-à-dire au niveau 1. Comme la sortie Q de la bascule 60 est au niveau bas (le complément de la sortie Q; voir la table de vérité), la borne 70 est au niveau haut. On supposera que, pendant un cycle de balayage de la matrice du clavier, on détecte l'abaissement d'une touche (TA?). La borne 68 passe au niveau bas pendant un comptage, ce qui remet à zéro les bascules et impose le niveau haut à la sortie Q de la bascule 60. La borne de sortie 70 reste au niveau haut jusqu'au prochain comptage pour lequel la borne 68 prend le niveau haut, ce qui donne à la borure r;v le niveau bQ* A la fin du cycle de balayage il'31), la borne ;^ prend le niveau bas pendant un comptage, ce qui commande le renversement des bascules.La sortie G) de la bascule 61 prend le niveau haut et le circuit de comnande d'interruotion 95 est maintenant armé et produira un signal d'interruption dans le nrochain cycle de balayage si une touche est abaissée. Si une touche n'est pas abaissée, le circuit de commande d'interruption reviendra à 11 état de repos. Si l'on suppose cependant qu'une touche abaissée est détectée (TA2) pendant le second balayage, le niveau bas à la borne bb fait passer la borne de sortie au niveau haut et la sortie Q de la bascule ó1 au niveau bas. L'unité centrale de traitement reconnart le front positif (FP1) apparaissant à la borne 70 comme étant un signal d'interruption.Le signal d'accusé de réception est renvoyé au clavier pour verrouiller les compteurs, comme on l'a décrit précédemment, suffisamment longtemps pour que l'unité centrale de traitement lise 11 information codée par les touches Les compteurs sont ensuite relâchés pour continuer le cycle de balayage de la matrice. A la fin du cycle de balayage (FB2), la borne 66 passe à l'état bas, ce qui renverse les bascules et amène la sortie 0 de la bascule 61 au niveau haut. La sortie Q de la bascule 50 restera au niveau haut aussi longtemps qu'une touche est repérée dans chaque cycle de balayage, et à la sortie Q de la bascule 61 alterneront des niveaux haut et bas.En suivant l'action de la forme d'onde sur la Fig 3D, on peut voir que, Si aucune touche n'est repérée pendant le troisième cycle de balayage, les bascules 60 et 61 sont à nouveau renversées (FB3), ce qui remet le circuit de commande d'interruption 35 à l'état de repos (R2). Quand la sortie Q de la bascule 60 passe à l'état bas, la borne de sortie 70 passe au niveau haut, ce qui produit un autre signal d'interruption (FP2). L'unité centrale de traitement verrouille les compteurs et lit les données, ce qui correspond au débordement des compteurs. Cela est interprété par l'unité centrale de traitement comme une condition dans laquelle toutes les touches du clavier sont en position haute. L'unité centrale de traitement peut alors remettre à zéro ses registres de stockage temporaire. Comme on l'a indiqué précédemment, la programmerie fixe est utilisée en combinaison avec le clavier pour garantir que, seules, des données codées par touches qui sont valables soient envoyées au processeur. La programmerie fixe comprend des instructions de programme qui sont stockées dans une mémoire à lecture seule.La succession de ces instructions est représentée sur la Fig 4 où les chiffres de référence 100 à 114 ont la signification suivante: 100 = interruption du clavier; 10 = lecture du codage par touches par le matériel (relâchement des compteurs pour la recherche d'une nouvelle touche); 12 = était-on revenu au codage "toutes les touches relevées? 103 = 1) remise à zéro du registre temporaire de touches; 2) remise à zéro du registre de mode; 104 = transmission de l'information "pas de touche" au processeur; 105 = fin de l'interruption de clavier; 106 = remise à zéro du registre de mode? (c'est-à-dire s'agit-il du passage d'une première touche?); 107 = référence au matériel pour établir le mode (commande de mode, déplacement de commande, décalage, verrouillage);; NCb = mise à jour du registre temporaire de touches (ce registre conserve trois touches et l'état pour la logique d'exploration et de répétition); 109 = les cons tisons suivantes sont-elles remplies? 1} moins de quatre touches abaissées, a) pas de rebondissement et/ou attente qu'un délai se soit écoulé pour la touche en cours (pour autorépétition); 11G = transmission de l'information "pas de touche" au microprocesseur; 111 = fin de l'interruption de clavier; 112 - conversion du codage par touches en valeur réelle, en utilisant le registre de mode; 113 = transmission de la touche valable au processeur;; 114 = fin de l'interruption de clavier L'unité centrale de traitement comprend un ensemble de registres pour stocker temporairement l'information codée par touches. Jusqu'à trois codages par touches peuvent être stockés pendant une triple exploration des touches. Quand le même codage par touches apparat deux fois dans les registres, il est envoyé au processeur. Si l'on voit quatre touches pendant un cycle de balayage, aucun codage par touches ne sera envoyé au processeur, ce qui le protège d'une possibilité d'erreur due à une touche fantome. Si l'on ne voit aucune touche dans un cycle de balayage de la matrice du clavier, le triple empilement de mémoires pour les touches est remis à zéro. La programmerie fixe lit aussi les lignes de données de mode à chaque interruption pour établir le mode correct de clavier.Le mode de clavier et l'information codée par touches sont convertis de nombres binaires en code ASCII pour l'usage par le processeur. Si la programmerie fixe repère qu'une touche doit entre répétée, c1est-à-dire que la touche est maintenue abaissée pendant plusieurs cycles de balayage de la matrice de clavier, un mode auto-répétitif est établi; l'information codée par touches est ainsi envoyee de manière répétitive au processeur après des intervalles de temps prédéterminés.Ces intervalles de temps deviennent plus courts si la touche est continuellement maintenue abaissée, de sorte que la cadence d'auto-répétition est accrue de manière variable En résumé, on peut voir qu'un circuit de commande d'interruption 35 fournit une protection contre une double entrée et élimine les effets de rebondissement des touches dans un clavier, et qu'un clavier combiné avec une programmerie fixe fournit une triple exploration de touches, une autorépétition à cadence variable, et une extension des possibilités du clavier du mode unique à un mode octuple. Bien que le système de clavier de ltin- vention ait été décrit en se référant à une réalisation spécifique, de nombreuses modifications, aussi bien que d'autres réalisations de l'invention, apparaRtront évidentes â des personnes compétentes en la matière. On doit donc considérer que les revendications jointes ne sont pas à interpréter dans un sens limitatif et qu'elles couvrent toutes modifications ou réalisations tombant dans l'objet véritable de l'invention. REVENDICATIONS 1- Clavier pour un dispositif de traitement de données associé, comprenant des rangs de touches, caractérisé en ce qu'il comprend: des moyens pour balayer cycliquement ces rangs de touches dans une séquence prédéterminée et engendrer des données parallèles codéespar touches correspondant à chaque touche; des moyens de commande d'interruption pour repérer les touches abaissées pendant deux cycles successifs de balayage et engendrer en réponse un signal d'interruption; et des moyens répondant à ce signal dlin- terruption pour lire et stocker des données codées par touches correspondant à ces touches abaissées. 2- Clavier selon la revendication 1, caractérisé en ce quelles rangs de touches sont schématiquement représentés par une matrice à colonnes et ran gées, et les moyens pour balayer ces rangs comprennent: une horloge, des moyens de comptage répondant à cette horloge, des moyens de codage répondant à ces moyens de comptage pour valider les colonnes de la matrice dans une séquence prédéterminée et des moyens de décodage répondant aux moyens de comptage pour rendre actives les rangées de la matrice dans une séquence ce prédéterminée, chaque comptage des moyens de comptage correspondant à une intersection des colonnes et des rangées. 3- Clavier selon l'une quelconque des revendications précédentes, caractérisé en ce que les moyens de commande d'interruption comprennent une paire de bascules J-K et une porte OU-NON, ces bascules recevant un signal de remise à zéro en réponse à un signal de touche abaissée et un signal de renversement en réponse à un signal de débordement à la fin de chaque cycle de balayage, et la porte OU-NON engendrant le signal d'interruption en réponse à la sortie des bascules et au signal de touche abaissée. 4- Clavier selon l'une quelconque des revendications précédentes, caractérisé en ce que les moyens répondant au signal d'interruption comprennent une mémoire à lecture seule qui contient un ensemble d'instructions de programme de sorte que les données codées par touches sont traitées sous co"- mande par programme.