[Info] - Remplacement clavier APPLE 2 par clavier PS2

Questions génériques informatiques, vos tutoriaux ou vos astuces de restaurations...

Modérateurs : Membres WDA, Modérateurs complets

Avatar du membre
Krapoutchik
Bureau WDA
Bureau WDA
Messages : 847
Enregistré le : 01 juil. 2009, 08:00
Collectionneur (-euse) ? : Oui
Localisation : Paris

[Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Krapoutchik » 10 juin 2014, 22:23

Dans l"épisode précédent, ici ,je remettais d'aplomb après un très (trop ?) long sommeil un APPLE 2 Europlus.

A la fin de la saison 1 , si la carte mère fonctionnait bien, le clavier ou plutôt l'encodeur fixé juste derrière le clavier avait décidé de partir vers un monde meilleur ::cry: .
Le circuit intégré (KR3600) de cet encodeur est introuvable car il ne peut provenir que d'un clavier APPLE 2 en bon état.
ATTENTION c'est un circuit encodeur "classique'" que l'on peut trouver d'occase mais le mappage du clavier est spécifique APPLE, c'est à dire que ce circuit est programmé d'usine avec le jeu de caractères pour un APPLE 2.
On en trouve dans différents vieux claviers d'autres marques mais pas avec le bon jeu de caractères. donc inutile d'aller chercher chez les vendeurs de circuits d'occasion il y a 99 % de malchances que l'on tombe sur un circuit conçu pour une autre machine.
D'ailleurs sur les APPLE 2e il y a aussi un circuit similaire, AY 3600 PRO , qui est exactement dans le même cas, programmé d'usine avec le jeu de caractères de l'APPLE 2e. ::evil: ::evil:.

Pour me dépanner j'ai trouvé une bibliothèque conçue pour l'Arduino qui permet avec quelques bouts de fils de décoder directement un clavier PS2.
Il suffit d'un tout petit script supplémentaire pour transformer le caractère ASCII en un mot de 7 bits , l'appui sur la touche A sur le clavier et de code ASCII 65 en décimal ou 41 en hexadécimal sera transformé en son équivalent binaire 1000001 sur 7 sorties de l'Arduino, le 1 correspondant à 5v et le 0 à... Ov :mrgreen: .
Pour que l'APPLE 2 comprenne que le code est valide il lui faut une impulsion d'environ 10 µS sur un fil supplémentaire (Strobe) pour prendre en compte le caractère présenté sur les 7 bits.
L'appui sur une touche spécifique du clavier PS2, j'ai pris la touche "Arrêt Défilement" qui a l'avantage d'être dans un endroit éloigné du clavier, envoie une pulse négative de 100 µS sur un fil supplémentaire câblé sur le RESET à travers une résistance de 330 ohms.

Au total il faut donc 7 fils + Strobe + Reset + 5v + 0v soit au total 11 fils à relier sur le connecteur clavier de la carte mère qui alimente ainsi le module Arduino. Il faut ajouter une résistance de 330 ohms, un support de circuit intégré à 16 broches, une prise femelle de clavier PS2 et un module Arduino soit au total une quinzaine d'euro grand maximum, on trouve le module arduino ou plutôt un de ses clônes en Chine pour moins de 10 $, en France il faut compter 20 euros .

Pour ceux qui ne connaissent pas, l'Arduino se programme directement à partir d'un PC (mac, windows, linux), quand le programme est prêt on le transfère sur le module avec un cable USB. Le langage utilisé ressemble au C et n'est pas très compliqué.

En fait la plus grosse difficulté qui m'a pris tout mon temps est simplement la programmation d'une touche spécifique du clavier pour le reset.
En effet, je suis parti sur une installation à partir zéro du dernier kit de développement Arduino (gratuit ::wink: ) 1.0.5 -R2 et j'ai l'impression qu'il y a une incompatibilité avec la librairie PS2KEYBOARD en version 2.4 que j'ai utilisée.
Pour faire court, la librairie retourne 2 caractères au lieu d'un dès que l'on essaye de mapper une touche sur un caractère de code ASCII supérieur à 127. en plus ces 2 caractères sont négatifs mais ça je ne l'ai vu qu'au bout d'une journée de test car je n'arrivai jamais à capturer la touche correctement en faisant un test d'égalité :blindfold: .
A part ça j'ai modifié le mappage du clavier dans la librairie pour qu'il n'affiche que les caractères présents sur le clavier d'origine de l'APPLE2 + ou Europlus.
keyboard apple.zip
Librairie PS2KEYBOARD pour APPLE 2 + ou Europlus.
Mise à jour du 29/06/2014
(11.5 Kio) Téléchargé 182 fois


Petite précision, le clavier PS2 est en majuscule de base et l'appui sur shift présente le code des minuscules, toutes les touches sont auto-repat, le pavé numérique fonctionne ainsi que les touches ESC, TAB et AltGR qui permet d'obtenir certain caractères standard sur le clavier APPLE mais pas sur un clavier PS2 tels { , [ ou ].
La touche contrôle ne fonctionne pas, donc impossible de taper en direct ctrl - S ou ctrl -X par exemple, je verrai ça plus tard.
Je suis une grosse quiche en programmation donc tout fonctionne correctement mais j'ai contourné le problème et pas résolu le bug qui semble provenir d'un souci de typage de variable mais ça je verrai plus tard, l'essentiel est que ça marche :8: .

Dans le zip il faut copier le dossier PS2KEYBOARD directement dans le dossier Mes documents\ ARDUINO\LIBRAIRIE de votre machine. Le script à transférer dans l'arduino se nomme keyboard_reset.ino
Je ferai le plan de câblage un peu plus tard mais il est très simple et peut se déduire au début du script dans la partie #define d0 4, on assigne le nom D0 à la broche de sortie 4....
Tektronix 454A, Atten ADS 1102CAL Powa !!
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes à microprocesseur
Ma petite collection...
Tutoriel pour insérer des photos...

Avatar du membre
Krapoutchik
Bureau WDA
Bureau WDA
Messages : 847
Enregistré le : 01 juil. 2009, 08:00
Collectionneur (-euse) ? : Oui
Localisation : Paris

Re: [Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Krapoutchik » 11 juin 2014, 15:56

Pour les bricoleurs de tout poil, une petite astuce ::idea: .

L'Arduino est limité en nombre de pattes d'entrées et de pattes de sorties, si l'on met un switch externe à la place de chaque touche du clavier on a une possibilité d'avoir 127 entrées pour un prix absolument dérisoire et en ne consommant que 2 pattes d'entrées de l'arduino (une pour les datas et l'autre pour l'horloge venant du clavier) :lighten: .
Tektronix 454A, Atten ADS 1102CAL Powa !!
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes à microprocesseur
Ma petite collection...
Tutoriel pour insérer des photos...

Avatar du membre
Krapoutchik
Bureau WDA
Bureau WDA
Messages : 847
Enregistré le : 01 juil. 2009, 08:00
Collectionneur (-euse) ? : Oui
Localisation : Paris

Re: [Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Krapoutchik » 14 juin 2014, 18:14

Ah ben j'ai mis le temps mais le voilà enfin ce schéma :D .

Keyboard PS2 for apple2.jpg
Schéma Arduino Clavier PS2 pour APPLE 2+


En cas de doute sur le schéma, voici l'assignation des broches tel qu'il est défini dans le script.
Broche 1 (DATA) du connecteur PS2 vers pin 3 de l'arduino
Broche 5 (CLOCK) du connecteur PS2 vers pin 2 de l'arduino
Connecteur APPLE - d0 vers pin 4 arduino
Connecteur APPLE - d1 vers pin 5 arduino
Connecteur APPLE - d2 vers pin 6 arduino
Connecteur APPLE - d3 vers pin 7 arduino
Connecteur APPLE - d4 vers pin 8 arduino
Connecteur APPLE - d5 vers pin 9 arduino
Connecteur APPLE - d6 vers pin 10 arduino
Connecteur APPLE - Reset vers pin 12 avec une résistance de 330 ohms en série (orange, orange, marron)
Connecteur APPLE - Strobe vers pin 13 arduino


Ne pas oublier de relier le +5V du connecteur Apple (pin 1) vers l'Arduino (+5V) et vers le connecteur clavier PS2 (broche 4) et le 0V du connecteur Apple (pin 8) vers l'Arduino (GND) et vers le connecteur PS2 (broche 3).

Précision importante : Pour éditer facilement le script en dehors de l'éditeur intégré du kit de développement téléchargeable gratuitement sur le site Arduino, je vous conseille NOTEPAD++ également gratuit sous licence GPL.
Ne pas ouvrir et enregistrer avec le notepad de Windows car celui ci ne supporte l'encodage UTF8 et enregistre exclusivement au format texte pur en rajoutant l'extension txt à la fin ce qui est inutilisable tel que par le kit de développement.

Le script et la bibliothèque sont compatibles avec tous les modules Arduino et clone chinois.

Bon amusement :banana: .
Tektronix 454A, Atten ADS 1102CAL Powa !!
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes à microprocesseur
Ma petite collection...
Tutoriel pour insérer des photos...

Avatar du membre
Krapoutchik
Bureau WDA
Bureau WDA
Messages : 847
Enregistré le : 01 juil. 2009, 08:00
Collectionneur (-euse) ? : Oui
Localisation : Paris

Re: [Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Krapoutchik » 29 juin 2014, 17:20

Hello !

Petite mise à jour du script PS2KEYBOARD.

Correction d'un problème de reset parasite au démarrage avec une carte dans un slot.
Correction d'une mauvaise affectation des pins par rapport au schéma.
Allongement de la durée du Reset (passage de 100 à 200 µs).

L'archive ZIP plus haut dans ce post est à jour.
Tektronix 454A, Atten ADS 1102CAL Powa !!
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes à microprocesseur
Ma petite collection...
Tutoriel pour insérer des photos...

Tomix
Posteur habitué
Posteur habitué
Messages : 19
Enregistré le : 18 mars 2013, 14:03
Collectionneur (-euse) ? : Oui

Re: [Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Tomix » 21 juil. 2014, 22:06

Bonjour,

Merci du partage, même si je ne suis pas possesseur d'apple2, j'ai pas mal fais joujou ces temps ci avec les micro controleurs (arduino et pics), et j'ai d'ailleurs commencé '(mais pas encore fini) à faire une interface PS/2 vers psp (via irda), dans le but d’émuler un clavier Targus . Cependant je dois reconnaitre qu un clavier PS/2 sus psp c est un peu Overkill donc je reflechis à trouver un plus petit clavier et le projet est en stand by (meme si la moitié des touches fonctionnent)..

Donc j'en profite pour faire part de quelques remarques qui je l'espère pourront être constructives et utiles :

- Le clavier PS/2 :
Attention au type de clavier PS/2, vis à vis de la consommation de ces derniers. J'ai commencé avec un très vieux clavier PS/2 type 286/386. Sa consommation était de l'ordre de 250ma, et j'étais obligé d'alimenter l'arduino avec une alimentation externe. car par le port USB, rien ne fonctionnait (limité à 100 MA si ma mémoire est bonne) . Je travaille maintenant avec un clavier PS/2 HP de récupe , qui lui ne consomme plus que 50 ma :icon_smile:

-L'alimentation 5V :
Je ne connais pas l apple, mais ne serait-il pas possible de repiquer les 5V directement à partir de l'apple pour alimenter l'arduino et le clavier? Ou à défaut une tension supérieure à 7,5V pour l'envoyer au régulateur de l'arduino? A voir les capacités de l'alimentation de l Apple cependant .

-Remplacer l'Arduino en lui même :

L'arduino (et pinguino aussi), sont des micro contrôleurs avec des régulateurs, un bootloader pour charger les programmes, une led et des pinsetc ... J'adore le concept, mais une fois le projet fini, il peut être sympa de n'utiliser que le micro contrôleur pour réduire la taille de l interface, et le coût (il me semble qu'Atmel fournit meme des samples gratuits pour des demandes raisonnables ;) ). Dans ton cas, cela te permettrait peut être de placer ton montage à l intérieur de l apple.

J'ai trouvé ce lien si ça peut t aider : http://highlowtech.org/?p=1695. A voir car il y es mention d 'un attiny (un puce d atmel moins puissante et plus petite), mais l'idée est là :). A mon avis si tu veux utiliser un attinity c est faisable, et pour augmenter le nombre de pins un CD4051 (pas le top certes mais facile à trouver), ou un shift register (mieux) devrait t'aider.

En espérant que ces quelques idées puissent t'aider et encore bravo pour ce pojet (Tiens çà me donne une idée pour mon thomson.. ;)..

Bonne soirée

Avatar du membre
Krapoutchik
Bureau WDA
Bureau WDA
Messages : 847
Enregistré le : 01 juil. 2009, 08:00
Collectionneur (-euse) ? : Oui
Localisation : Paris

Re: [Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Krapoutchik » 22 juil. 2014, 14:30

Merci pour toutes ces idées !

Les grands esprits se rencontrent :8: , ma bidouille est alimentée, ainsi que le clavier PS2, par l'intermédiaire du connecteur clavier d'origine de l'APPLE, donc je n'ai pas de souci de consommation car le clavier PS2 et l'Arduino consomment moins que l'encodeur d'origine.

Le seul truc un peu louche est l'alimentation de l'Arduino par la patte 5V.
Normalement ce 5v est en sortie uniquement puisque généré par un régulateur intégré 5V (NCP1117) sur l'arduino.
Le fait d'y faire rentrer un 5v extérieur pourrait poser un problème pour le régulateur mais celui-ci est protégé en interne contre ce type de comportement.
Le transistor FET FDN340P reçoit lui aussi du 5v sur sa patte Source mais ce n'est pas génant car il ne reçoit rien ou quasi rien sur ses pattes Drain et Gate, on peut considérer à ce moment qu'il se comporte comme une résistance de très forte valeur reliée à rien du tout et on est très en dessous de la valeur de claquage de la jonction Gate/Source ::wink: .

Pour mieux comprendre le raisonnement, ci-dessous le schéma d'un Arduino avec le chemin des différentes tensions.
schema arduino.jpg

La seule chose à laquelle je dois faire attention est de ne pas connecter l'arduino par l'intermédiaire du port USB et de laisser le connecteur clavier Apple en place.
En effet, dans ce cas, cela revient à alimenter toute la carte mère de l'Apple avec le 5v provenant du port USB, dans les faits cela équivaut quasiment à court-circuiter le 5 V provenant de l'USB, il ne va pas apprécier ainsi que le fusible :bullwhip: .

Tomix a écrit :Remplacer l'Arduino en lui même :... meme des samples gratuits pour des demandes raisonnables ...


Hé hé... Le clavier d'origine de l'Apple et toutes les touches sont OK il n'y a que l'encodeur de mort, ce que je compte faire c'est de récréer un encodeur complet avec une sortie directement en 7 bit pour réutiliser le clavier d'origine et de ne plus passer par un clavier PS2 qui n'est là que le temps de tester la carte mère et le floppy APPLE 2.

Comme tu le dis (les grands esprits se rencontrent encore :8: :8: ), j'avais également pensé dans un premier temps à utiliser l'arduino et quelques pavés périfériques pour augmenter le nombre d'I/O mais je voudrais rester dans de la bidouille très facilement reproductible et pas cher.

Je vais demander un sample à ATMEL, je pensais à un ATMEGA 164 qui comporte suffisamment de pattes d'I/O pour me permettre de dématricer correctement le clavier car j'ai besoin de 30 pattes en tout.
En me débrouillant bien, il n'y aura besoin que du circuit lui même et de la cablerie puisque j'ai vu que l'on pouvait utiliser une horloge interne au circuit (limitée à 8 mhz), même pas besoin d'un quartz et condensateurs , elle est pas belle la vie :D .
Tektronix 454A, Atten ADS 1102CAL Powa !!
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes à microprocesseur
Ma petite collection...
Tutoriel pour insérer des photos...

Tomix
Posteur habitué
Posteur habitué
Messages : 19
Enregistré le : 18 mars 2013, 14:03
Collectionneur (-euse) ? : Oui

Re: [Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Tomix » 22 juil. 2014, 16:25

Salut,

Le seul truc un peu louche est l'alimentation de l'Arduino par la patte 5V.
Normalement ce 5v est en sortie uniquement puisque généré par un régulateur intégré 5V (NCP1117) sur l'arduino.


Comme tu dis, les grands esprits se rencontrent, et quand j'ai commencé avec l arduino, je me suis posé cette question. En fait j'ai remarqué un comportement étrange avec ce 5V sur mon arduino r3 (clone chinois). Des fois en branchant le 5V directement sur la pin 5V, la carte plantait, mais repartait après suite à un reset. Vin peut être utilisée aussi, mais dans ce cas il faut vraiment s'assurer de la polarité (et fournir une tension plus élevée)..

Sinon si sur l apple il y a une tension plus élevée de dispo, genre 12V (je ne connais pas apple), tu pourrais aussi la repiquer pour l utiliser sur le power jack, là le régulateur fournirait un 5V, 5V que tu recupérerais pour alimenter le clavier (via la pin 5V).

Comme ton but au final est de recréer un contrôleur clavier, si cela marche autant continuer ainsi :), par contre une fois que tu auras migré le projet sur microcontroleur à part, je ne saurais que te conseiller de rajouter un condensateur pour stabiliser la tension de 5V provenant de l apple.

Code : Tout sélectionner

Comme tu le dis (les grands esprits se rencontrent encore :8: :8: ), j'avais également pensé dans un premier temps à utiliser l'arduino et quelques pavés périfériques pour augmenter le nombre d'I/O mais je voudrais rester dans de la bidouille très facilement reproductible et pas cher.


Je ne peux que comprendre, j'essaie de récupérer le maximum de composants et de bidouiller en dépensant le moins possible. Par exemple pour implémenter l'irda, j'ai récupéré pas mal de diodes infrarouges de vieilles télécommandes et j essaie de récupérer tous les composants qui pourraient m être utiles dans mes projets :D. Il n'y a que les composants CMS que je ne touche quasiment pas, très durs à dessouder et à réutiliser (je ne suis pas équipé).

Code : Tout sélectionner

Je vais demander un sample à ATMEL, je pensais à un ATMEGA 164 qui comporte suffisamment de pattes d'I/O pour me permettre de dématricer correctement le clavier car j'ai besoin de 30 pattes en tout.
En me débrouillant bien, il n'y aura besoin que du circuit lui même et de la cablerie puisque j'ai vu que l'on pouvait utiliser une horloge interne au circuit (limitée à 8 mhz), même pas besoin d'un quartz et condensateurs , elle est pas belle la vie :D .


Je ne suis pas un spécialiste des modèles d'Atmel, car j'utilise plus maintenant des pics18F (parce que je possède un programmateur surtout), mais cela me semble un bon choix. :)

Concernant les oscillateurs internes des pics et des atmels, on peut parfaitement les utiliser dans la mesure où les timings ne sont pas importants (ce qui n'est pas le cas de ton projet) car ils ont tendance à voir les fréquence légèrement changer avec la température, ce qui peut provoquer des problèmes sur certains protocoles (spi,i2c série par exemple).

En plus le gros avantages des atmel, c'est que leur contrôleurs exécutent environ 1 instruction par cycle (Soit 1mips par mhz) à la différence des pics 8bits qui eux exécutent 1 instruction en 4 cycle. Un pic18F/16F avec un quartz de 20 mhz, sera moins rapide qu'un atmel avec son oscillateur interne à 8mhz.

J'ignore quelles sont tes connaissances en arduino et je n ai pas regardé tes sources, mais si tu rencontrais un problème de rapidité (ça m est arrivé avec l infrarouge et l'irda) à cause des fonctions digitalwrite, je te conseille ce petit lien : http://www.billporter.info/2010/08/18/r ... uino-pins/ ::wink:

Bonne journée

Avatar du membre
Krapoutchik
Bureau WDA
Bureau WDA
Messages : 847
Enregistré le : 01 juil. 2009, 08:00
Collectionneur (-euse) ? : Oui
Localisation : Paris

Re: [Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Krapoutchik » 22 juil. 2014, 21:53

J'ai utilisé le +5 car il était disponible sur le connecteur clavier de la carte mère avec tous les signaux à câbler autrement j'aurais été obligé de tirer un fil spécifique à l'autre bout de la carte mère et comme je suis un peu fainéant ... :mrgreen:

Quand je parlais de quartz et condensateurs il s'agissait des petits condos de quelques pf à mettre autour du quartz. C'est sûr qu'il est obligatoire de mettre un condo de découplage au plus près du microcontrôleur ::wink: . Faire un truc pas cher, OK, mais faut quand même que ça marche !

Quant à l'utilisation de l'oscillateur interne, il n'y a besoin que d'un scan des lignes XY du matriçage d'un clavier à une fréquence de quelques dizaines de kilohertz donc la précision n'est pas critique.
Le code sera complétement différent et beaucoup plus simple que celui utilisé pour le décodage du clavier PS2.
J'avoue d'ailleurs que j'ai copié/collé des bouts de codes à droite et à gauche, je n'ai véritablement écrit qu'une dizaine de lignes ::oops: . J'en suis encore à essayer de comprendre la librairie que j'ai utilisée :doh: .

A ce propos, cette librairie utilise abondamment la manipulation de bit pour pouvoir traiter rapidement les signaux séries provenant du clavier PS2 et la manière de coder les instructions ressemble fortement aux exemples donnés dans ton lien.
Merci encore ça va m'aider à mieux comprendre comment ça marche :banana: .

C'est marrant ce que tu dis sur la puissance comparée des PIC's et des ATMEL, je pensais que c'était l'inverse et si un pote ne m'avais pas donné un vieil Arduino j'aurais investi dans les PIC's qui sont bien plus couramment utilisés que les ATMEL.

Pour la récup de composant je suis comme toi d'ailleurs j'ai aussi dépouillé des télécommandes HS ainsi que des télés et portables pour choper des récepteurs infrarouges ::wink: mais à l'occas je récupère quand même quelques CMS (TTL et FET), enfin, les plus gros car mes yeux ne sont plus ce qu'ils étaient :bullwhip:
Tektronix 454A, Atten ADS 1102CAL Powa !!
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes à microprocesseur
Ma petite collection...
Tutoriel pour insérer des photos...

Tomix
Posteur habitué
Posteur habitué
Messages : 19
Enregistré le : 18 mars 2013, 14:03
Collectionneur (-euse) ? : Oui

Re: [Info] - Remplacement clavier APPLE 2 par clavier PS2

Message non lupar Tomix » 23 juil. 2014, 19:26

J'ai utilisé le +5 car il était disponible sur le connecteur clavier de la carte mère avec tous les signaux à câbler autrement j'aurais été obligé de tirer un fil spécifique à l'autre bout de la carte mère et comme je suis un peu fainéant ... :mrgreen:

Quand je parlais de quartz et condensateurs il s'agissait des petits condos de quelques pf à mettre autour du quartz. C'est sûr qu'il est obligatoire de mettre un condo de découplage au plus près du microcontrôleur ::wink: . Faire un truc pas cher, OK, mais faut quand même que ça marche !

Quant à l'utilisation de l'oscillateur interne, il n'y a besoin que d'un scan des lignes XY du matriçage d'un clavier à une fréquence de quelques dizaines de kilohertz donc la précision n'est pas critique.


Je ne pourrais dire le contraire, au vu des honteux bidouillages que je pratique régulièrement :D

Je pense que ça sera largement suffisant :), d autant plus qu un timing plus rapide pourrait peut être poser des soucis à l'apple (j'ignore sa frequence de lecture du controleur mais vu l'epoque elle ne doit pas être très élevé); et autre avantage moins de puissance= moins de courant consommé.

J'avoue d'ailleurs que j'ai copié/collé des bouts de codes à droite et à gauche, je n'ai véritablement écrit qu'une dizaine de lignes ::oops: . J'en suis encore à essayer de comprendre la librairie que j'ai utilisée :doh: .

A ce propos, cette librairie utilise abondamment la manipulation de bit pour pouvoir traiter rapidement les signaux séries provenant du clavier PS2 et la manière de coder les instructions ressemble fortement aux exemples donnés dans ton lien.

Si ça peut te rassurer, j ai utilisé la lirairie PS/2 keyboard telle quelle également souvent.Elle fonctionne d'ailleurs très bien. J'ai du juste un peu la modifier pour intercepter les touches contrôles et Maj (d'une manière pas super propre mais qui fonctionne :D) car j émule un clavier (targus) qui les utilise. Si tu as besoin de faire la modif, ce serait un plaisir de te filer la mienne :)

Voici un petit lien (en anglais désolé) que je trouve sympa (le site aussi est une mine d information pour les bidouilleurs :)
*http://www.pyroelectro.com/tutorials/ps2_keyboard_interface/theory.html (en laissant de coté le code pour pics ;).

En fait le problème de vitesse des digitalwrite et read de l'arduino vient du fait de la simplification voulue par les créateurs, mine de rien pratique. Les micro contrôleurs Atmel ont des pins sur des ports (ex portC portD, et port b sur un atmega8) dont chaque pin possède un numéro exemple PC1,PB1 etc.. qui peuvent être adressé individuellement par leur référence, ou tous ensemble, les 8 pins représentant le port (ou moins, dans ce cas les bits superflus sont ignorés), peuvent être définies sur un octet (8 bits), dont chaque bit représente l'état de la pin . Ouverte à 1 ou éteinte à zéro. Il en va de même pour pinmode, qui lui utilise DDRX(ou x représnte le port,TRIS sur les pic18), qui permet de définir si le port est en input ou output

Ainsi si tu veux mettre une pin en output sur le port B, et la mettre à un tu peux faire par exemple :
DDRB = 0b00000010; //on met la pin en output
PORTB=0b00001010; //On la met à 1

Après toutes les opération de bits que tu peux voir dans les librairies, c'est pour changer leur état le plus vite possible.

Comme arduino dispose de plusieurs cartes assez compatibles entre elles (avec des pins et ports différents), ils ont numéroté ces pins, ce qui implique des tests pour trouver par exemple à quelle pin, suivant le type de modèle, corresponds par exemple la pin numéro 7, quand tu fais un Digitalwrite(7), ou un Pinmode(7, OUTPUT), tests qui ralentissent le programme pour retrouver la bonne pin, qui ont pour conséquence de fausser certains délais. Néanmoins, même si ce n'est pas forcément rapide, je trouve que c'est beaucoup plus simple quand on débute, et ça permet de gagner beaucoup de temps.

Tu trouveras de plus amples informations ici si le sujet t'intéresse :
http://www.codeproject.com/Articles/589299/Why-is-the-digital-I-O-in-Arduino-slow-and-what-ca

J'espère que cette petite explication te sera utile. Je ne suis pas un expert, j'ai commencé l'électronique (et les micro contrôleurs) il y a 6 mois maintenant, et j ai encore énormément de lacunes :mrgreen:

C'est marrant ce que tu dis sur la puissance comparée des PIC's et des ATMEL, je pensais que c'était l'inverse et si un pote ne m'avais pas donné un vieil Arduino j'aurais investi dans les PIC's qui sont bien plus couramment utilisés que les ATMEL.

Pour la récup de composant je suis comme toi d'ailleurs j'ai aussi dépouillé des télécommandes HS ainsi que des télés et portables pour choper des récepteurs infrarouges ::wink: mais à l'occas je récupère quand même quelques CMS (TTL et FET), enfin, les plus gros car mes yeux ne sont plus ce qu'ils étaient :bullwhip:

Mes yeux fatiguent aussi avec l age, et je manque de patience pour les cms. Par contre des que je vois des puces au format DIP, je fonce sur internet voir si je pourrais en faire un truc :)

Tout comme moi, j ai essayé l arduino, et je me suis dit que d'utiliser des pics serait plus judicieux, surtout quand je voyais les fréquences des pics18 à plus de 40mhz comparés aux 16mhz de mon arduino (réflexe d'informaticien.. :doh: ). Alors je suis passé aux pics, non sans mal, et je m'en suis rendu compte de tout ça.. Par exemple là j essaie de programmer une librairie comme TVOut (sortie pal) sur arduino sur un pic pourtant cadencé à 40 mhz, et je lutte un peu niveau vitesse d’exécution, d'autant plus que je ne connais rien à l assembleur pic donc je fais ça en C.

Un autre point en faveur de l'arduino et des atmel, est le compilateur GCC, très optimisé mais surtout gratuit et c++ (quoique sur un microcontrôleur). Les pics 8 bits ne disposent que du c avec xc8/C18 de microchip payant (Mikroc aussi et aussi payant). Une version gratuite est dispo, mais elle ralenti le code :eek: . Il existe sdcc, libre, qui malheureusement n'est pas super optimisé (utilisé sur pinguino) et toujours c mais qui a l avantage d 'être gratuit.

Néanmoins les pics sont sympa (et comme j en ai quelques un en stock) quand même, comme tu dis beaucoup utilisés, et beaucoup de fonctionnalités. et ce que je dis est propre aux pics 8bits, il y a eu pas mal de changement avec les dspics et les pics32 que je ne connais pas très bien.

Tiens si il te reste des pins sur ton arduino/atmega, un truc qui pourrait être super sympa, c'est de tirer deux fils hors de l apple (ou y rajouter une petite prise), afin de pouvoir utiliser le clavier apple pour tes futurs projets arduino ou autres, en mode série (serial.print etc...) . Ce serait la classe :8:

Au plaisir de voir ton projet fini,
Bonne soirée.


Retourner vers « Classe Info, Restauration, Tutoriaux... »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité