Documentation sur le port IO |
||||||||||||||||||||||||||||||||||
Voici de la doc sur le programmation du port de communication que j'ai pris sur TI-FR Documentation
technique du port de la Ti89
Pour toutes vos questions, suggestions
à hiddenfiles@online.fr !!! WARNING About IOCONS.89Z !!! I. Préambule Tout d'abord bonne année 2000 à tous les utilisateurs de Ti89 et aussi aux autres et meilleurs vœux pour cette année qui commence. Il faut partir d'un constat : la documentation autour de la programmation du port de la Ti89 est quasi inexistante, et sinon dans la langue de Sheakspeare. C'est de ce point que m'est venu l'idée d'écrire cette doc. afin que tous ceux parlant la langue de Molière (quelle culture ! mais on aurait aussi pu dire Corneille ou Voltaire ... mais passons) puissent enfin découvrir l'éventail de possibilités que peut offrir cette petit prise Jack 2,5mm. Nous verrons ainsi par la pratique comment construire deux petites interfaces pour la calculatrice ainsi que, pour les plus téméraires, comment programmer l'état du port d'I/O. J’espère que ce ne sera qu'un point de départ et que fleuriront bientôt foule d'accessoires plus utiles les uns que les autres pour cette fantastique machine qu'est la Ti89. |
||||||||||||||||||||||||||||||||||
Je vous conseille de lire cet doc. linéairement, les informations étant disséminées entre les différents chapitres.
II. Une base expérimentale : le programme IOCONS Afin de pouvoir effectuer les premiers test de nos futurs montages, et avant de développer pour ceux là un logiciel spécifique, je vous propose d'utiliser I/O Device Console, sorte de drivers générique que j'ai programmé moi-même. Je dois avouer qu'il s'agit de mon premier programme fonctionnel en Asm 68k (mais, ayant eu une Ti83 avant, je connais aussi pas mal le Z80). A. Installation
B. Utilisation Démarrer iocons() dans le Home Screen. L'interface apparait.
!!!TIPS : Fait étrange, lorsque l'on éteint la calc. et que l'un des fils est à l'etat 0, la calculatrice se rallume aussitôt l'a-t-on éteinte. !!
III. L'exploitation de programme A. Un dispositif de commande basse puissance Ce montage permet, grƒce au logiciel, de contrôler la mise sous tension ou hors tension d'un dipôle (ici une LED) demandant peu de puissance. En effet, la tension et l'intensité aux bornes de ce dipôle dépendent directement de la puissance de l'alimentation (ici une pile plate de 4.5V) et du modÈle de transistor choisi. Je conseille d'utiliser un modÈle C945. --> Piloté par IOCONS.89Z CLGNR.89Z B. Un montage plus évolué de commande haute puissance. Reprise de la nomenclature: * IC : Un circuit intégré ULN2803A ou ULN2804. Ceux-ci disposent de 8 ampli. de courant et on ne se sert que de deux de ceux-ci. Gaspillage ? Si quelqu'un connait un IC équivalent contenant moins d'ampli., qu'il me Mail. * T1 et T2 : Transistors NPN C945 ou équivalents. * D1 : Une bête diode 1N4004, elle est juste là pour protéger l'IC des "Oups, j'ai mis la pile à l'envers !". * RL1 et RL2 : relais miniature Fujitsu FBR244 ou Siemens V23026-A1 monostable ou des autres équivalents. Tout dépend de l'intensité du courant que vous voulez controler. * Pour le reste, faiter comme vous voulez, le vous conseille de placer un interrupteur de coupe circuit ainsi que d'utiliser un support pour IC si vous voulez pas griller l'ULN en le soudant. Utilisez des plaques de backélite et des borniers à vis pour connecter les bornes des relais. Pour connecter à la TI, soit vous coupez votre cable TI-to-TI en deux (comme moi), soit vous achetez une prise femelle pour brancher le cable TI-to-TI entre l'interfaceet la calc. !!! Attention !!! Les prises Jack 2,5mm males vendues dans le commerce ne rentrent pas dans la prise de la Ti89. Le circuit doit être alimenté
en 5V sous environ 200mA. Il est donc préférable d'utiliser
une alimentation stabilisée (si vous n'en avez pas, mailez
moi, je vous enverrais le schéma. On pourrait aussi placer
une résistance au collecteurs des transistors si on voulait
être sur de bien les protéger. De plus, l'ULN n'est
pas un Pentium, mais il à tendance à chauffer, tout
comme les relais sous de fortes intensités. Si vous mettez
le circuit en boite, prévoyez une aération adéquat.
L'avantage de ce systÈme est que vous pouvez couper des tensions
importantes. Les relais Fujitsu par exemple peuvent couper jusqu'a
220V à maximun 1,6A En tous cas, ne dépassez pas 1,6A si vous ne voulez pas voir vos relais fondre. Il ne s'agit pas de contrôler une centrale nucléaire à la 89. Ce montage coute dans les 50 FF, mais il a l'intéret d'être bien Fun et de permettre une automatisation de deux voies, pour peu qu'on écrive le logiciel adéquat (voir Programmer le port). Comment ca marche ?? Le signal de +3V émit par la calculatrice est amplifié une premiÈre fois par les transistors puis fortement amplifié par l'ULN pour permettre de commander les relais. Pour faire fonctionner ces deux montages, servez-vous de IOCONS ou programmez un logiciel spécifique...
IV. Programmation du port
Il est maintenant tant d'apprendre à programmer le port I/O de la 89, et cela en DirectAccess. Ici point de Basic, rien que de l'Assembleur. Si vous voulez acquérir les bases rapidement, jetez vous sur l'excellent Asm89 dispo sur www.ti-fr.org et sur les doc de DoorsOS version Développeur qui, bien que succintent, donnent des informations trÈs pointues (trop ?) sur le software et le hardware de la 89. N'hésitez pas non plus à mater du code source, c'est comme ça qu'on apprend (commencez par jeter un coup d'œil sur IOCONS.ASM, j'ai fait exprÈs de beaucoup commenter le programme). Contrairement aux Z80 et autres 8086, le CPU Motorola 68000 embarqué sur la TI89 ne comporte pas d'instruction de sortie directe sur un port. En Z80, il suffisait de faire OUT port,valeur pour sortir quelque chose sur un port E/S. En 68k, il faut écrire dans des zones de mémoire spécifiques. Les plus importantes pour nous sont les plages 60000C et 60000E, car c'est elles qui ont la lourde responsabilité de gérer la prise de la TI. Ne vous inquiétez pas, tout va devenir plus clair. Une chose importante à savoir est que l'etat par défaut des deux lignes (fils) est 1. Cela à son importance car quand on Reset une des lignes, son état passe à 1 et pas à 0 comme on pourrait le penser.
A. La programmation directe : ----------------------------- * Activer le DirectAccess. * Passer les lignes à
1 (+3V). * Passer les ligne à
0 (0V). * Changer l'état des
lignes. * Bloquer le DirectAccess. B. Programmer avec WIRELIB Si toutes ces commandes esotériques
vous laissent de glace, vous pouvez vous servir de la librairie
WIRELIB. Je l'ai programmée pour faciliter la syntaxe des
commandes. Tout d'abord, il faut penser à l'inclure dans
le header avec :
La fonction wirelib::version retourne dans d0.b un byte tel que #100 pour la version 1.00. A vous d'analyser. C. Exemples ----------- J'ai joint à cette doc deux fichiers pouvant servir d'exemple : CLGNR. est un petit programme permettant de faire "clignoter" l'étatdu fil rouge. On peut s'en servir avec le schéma 1. WIRETEST. est mon programme de débuggage de WireLib. Je l'ai écrit l'arrache et il est trÈs brouillon mais on y voit comment se servir de wirelib. IOCONS. (voir plus haut), illustre bien la programmation directe. Il Contient encore quelques légers bugs. D]le mot de la fin Voila, nous arrivons au bout de cette documentation. Je pense que vous êtes maintenant capable de faire des trucs sympas avec le port I/O de la calculatrice. Aidez-vous des schémas PORT1.BMP et PORT2.BMP pour créer les votres et envoyez-les moi à hiddenfiles@online.fr Je vous promet pour bientôt la deuxiÈme partie de la doc : Comment lire des données sur le port, ainsi qu'une nouvelle version améliorée de WIRELIB. A Bientôt, Hiddenfiles. Vous trouverez les prochaines versions de cette doc sur www.ti-fr.org All rights
reserved, January 2000.
|