Programmation du port I/O, par Philippe MAIRE (Philou) |
|
Introduction Pour utiliser le modem radio, il va falloir établir notre propre protocole. Pour ceci, il ne sera pas possible d'utiliser les fonctions du TIOS qui fonctionnent selon le protocole TI. Il va falloir lire et écrire directement sur les deux fils du port I/O. Pour les tests et l'expérimentation, j'ai utilisé le schéma suivant :
|
|
Ce schéma étant reproduit une fois par fil (rouge/blanc). Il permet de voir l'état du fil, tout en le modifiant grâce au switch. Pour la programmation, que ceux qui ne connaissent pas les bases minimales de l'assembleur passent leur chemin, bien que j'envisage de faire un programme comme basiclib mais permettant l'utilisation du port IO. Bon passons aux choses sérieuses. Ce document se composera de deux parties principales : Définition de l'état d'un fil Lecture de l'état d'un fil Attention, la TI travaille en logique négative et pas en TTL : 0=0V 1=3.3V (à peu près) Par défaut le port est à 1, pour le mettre à 0 il suffit de faire un court-circuit entre le fil voulu et la masse (sans danger pour la TI : 150 µA débités avec des piles presque neuves). Cette logique a l'avantage de ne pas nécessiter de rentrer du courant dans la TI. Pour mettre le fil à 1, la résistance entre le fil et la masse doit être supérieure à 6.5kW (à peu près) Pour le mettre à 0, faire un court-circuit entre nos deux chers fils ou mettre une résistance inférieure à 6kW. Il ne faut donc jamais d'alimentation externe comme en logique positive. Bon pour l'écriture je vais pomper une partie de la page écrite par HiddenFiles, disponible sur ti-fr --------- * Activer le DirectAccess. * Passer les lignes à
1 (+3V). * Passer les ligne à
0 (0V). [...] * Bloquer le DirectAccess. --------- Bon voilà pour l'écriture. Passons à la lecture maintenant. Pour lire l'état du port, il faut comme avant avoir activé le DirectAccess. Tapons donc : bset.b #6,$60000C Ensuite, pour lire le fil blanc, il faudra utiliser : btst.b #3,$60000E ou pour le fil rouge : btst.b #2,$60000E En utilisant ces deux instructions, seul le registre Z est modifié selon l'état du fil. Sil le fil est à 0, Z vaut 1 et vice-versa Par conséquent, pour faire un saut si le fil est à 0, il faut utiliser l'instruction bne, pour faire un branchement si le fil est à 1, utiliser beq. Ensuite, il ne faut pas oublier de désactiver le DirectAccess, ni de remettre les fils à 1, au moyen, par exemple, de la procédure suivante : disable_DA:
Voilà, avec ça vous devriez être capable de vous débrouiller. Si toutefois vous avez un problème, n'hésitez pas à m'écrire un mail : philippe.maire@evc.net ou bien à me contacter par ICQ : 59264316.
Merci à HiddenFiles qui m'a laissé prendre quelques extraits de son article.
|