<< The Fribotte Homepage >>
Un club de passionnés en robotique participant à la coupe de France E=M6.
[Accueil] [Qui sommes-nous ?] [Robots] [Coupe e=m6] [BD Technique] [Forum] [Reportages] [Liens] [WiKiFri]

Fribotte



Carte ISA Interfacage entre une carte mère de PC et des capteurs
Schéma de principe de la carte (Réalisé pour le robot de l'INT en 98)
Pour le robot nous utilisions une carte mère embarquée, à laquelle il a fallu ajouter une carte d'interface d'où l'idée d'en faire une maison.

Cela ne pose pas beaucoup de problème car le bus ISA du PC est assez simple contrairement au bus PCI. De plus la bande passante du bus est suffisamment grande. Le principe de la carte est l'interfaçage du monde extérieur et du PC par le bus ISA.

Cette carte nous a permis de concentrer l'ensemble des interfaces entre le robot et la carte mère. Celle-ci s'est avèrée très robuste et simple à gérer logiciellement.

La carte possède un décodeur d'adresses réalisé à partir d'un PAL 22V10, reprogrammable électriquement. Ensuite nous avons deux types de circuits :

  • Un timer 82c54
  • Un PIO 82c55
Le principe de la carte, repose sur l'interface ISA avec des circuits esclaves. Le domaine d'adressage est compris entre 0x300 et 0x31f qui est réservé aux cartes d'expérimentation.(voir une doc IBM pour plus d'info)

Pour les deux circuits, 8 adresses sont nécessaires :

  • Domaine pour le 82c55 de 0x300 à 0x303 (trois adresses pour les registres de sortie et une pour le registre de control)
  • Domaine pour le 82c54 de 0x304 à 0x307 (trois registres pour les trois timers, et une pour le registre de control).

Pour information, sur la carte nous avons branché un afficheur LCD 2*16 caractères en mode 4 bits, la carte IR, une carte relais de commande et sur la partie timers, les variateurs des moteurs. Il nous restait un timer de libre.

La programmation du pal a été faite en fonction du choix d'adressage, voici ci-dessous les équations suivantes :

  • CS8255= AEN+/(A9*A8*/A7*/A6*/A5*/A4*/A3*/A2) pour la zone de 0x300 à 0x303
  • CS8254= AEN+/(A9*A8*/A7*/A6*/A5*/A4*/A3*/A2) pour la zone de 0x304 à 0x307

La deuxième année nous avons rajouté un circuit 8255, pour avoir 24 I/O supplémentaires (il y a de l'inflation dans l'air : les informaticiens ont toujours besoin de plus d'informations et donc de capteurs...).

La zone d'adressage pour les cartes d'expérimentations va jusqu'à 0X31F.
On peut donc mettre deux cartes en paralléles, mais à condition de reprogrammer le
pal de la deuxième carte.
Pour la programmation des circuits, il faut se reporter au datasheet des circuits.
En langage C on utilise les commandes IN pour lire sur le port, et OUT pour écrire sur le port.

Le cout de la carte est raisonnable.

Ci-dessous le schéma de principe:
On retrouve le décodeur d'adresse basé sur un PAL 22V10 ( reprogrammable électriquement).
Un 8254 pour le timer, et un 8255 pour les entrées sorties numériques.
Attention les entrées sorties ne sont pas protégées.

Ci-dessous on retrouve le typon. La carte est de taille inférieure à une carte standard ISA, ceci dans un soucis d'économie de place. Il est nécessaire d'utiliser un circuit double face pour cette carte.

Ci-dessous les doc des deux circuits de chez INTEL au format pdf. Pour information Motorola fabrique aussi des PIO pour les µc 68x :

Fichier au format eagle 2.5 pour le routage : Une version avec 2 PIO ( 8255 a été réalisé pour la compétion de 1999). On avait connecté 16 capteurs de ligne 1écran, etc...
Composants
  • 1 PAL 22V10 reprogrammable électriquement.
  • 1 8255 version 10Mhz.
  • 1 8254 version 10Mhz.
  • 3 10nF plastique.
  • 3 connecteurs 2*5.
  • 3 connecteurs 1*5.
  Programmation 
Pour la programmation on se penche vers la documentation du 8255, et 8254, pour la configuration des différents modes. Il suffit juste d'adapter la zone d'adressage de la carte à ses besoins par reprogrammation du PAL.

Des exemples de routines sont disponibles ci-dessous comme la programmation d'un écran LCD. Cet écran été branché sur le port du 8255.

Le code est en C, nous faisons tourner la carte sous linux et il n'y a pas de problème d'interfacage. Il faut cependant être root pour accéder au port matériel. En tapant sudo ./lcd, le prog lcd est executé en mode "root" (lcd.zip).



 Le bus ISA document
Le brochage du bus ISA est le suivant:
Patte
Signal
Description
Direction
Coté composants
A1 -I/0 CH CK I/0 channel check; active low=parity error In
A2 D7 Data bit 7 In/Out
A3 D6 Data bit 6 In/Out
A4 D5 Data bit 5 In/Out
A5 D4 Data bit 4 In/Out
A6 D3 Data bit 3 In/Out
A7 D2 Data bit 2 In/Out
A8 D1 Data bit 1 In/Out
A9 D0 Data bit 0 In/Out
A10 -I/0 CH RDY I/0 Channel ready; pulled low to lengthen memory cycles In
Al1 AEN Address enable; active high when DMA controls bus Out
A12 A19 Address bft 19 Out
A13 A18 Address bft 18 Out
A14 A17 Address bft 17 Out
A15 A16 Address bft 16 Out
A16 A15 Address bft 15 Out
A17 A14 Address bft 14 Out
A18 A13 Address bft 13 Out
A19 A12 Address bft 12 Out
A20 A11 Address bft 11 Out
A21 A10 Address bft 10 Out
A22 A9 Address bft 9 Out
A23 A8 Address bft 8 Out
A24 A7 Address bft 7 Out
A25 A6 Address bft 6 Out
A26 A5 Address bft 5 Out
A27 A4 Address bft 4 Out
A28 A3 Address bft 3 Out
A29 A2 Address bft 2 Out
A30 A1 Address bft 1 Out
A31 A0 Address bft 0 Out
Coté soudure
B1 GROUND    
B2 RESET DRV Active high lo reset or Initialize system logic Out
B3 +5Vdc    
B4 IRQ9 Interrupt request 9 In
B5 -5Vdc    
B6 DRQ2 DMA request 2 In
B7 -12Vdc    
B8 -CARD SLCTD Card selected; activated by cards In XT's slot J8 In
B9 +12Vdc    
B10 GROUND    
B11 -MEMW Memory write Out
B12 -MEMR Memory read Out
B13 -IOW I/O write In/Out
B14 -IOR I/O read In/Out
B15 -DACK3 DMA acknowledge 3 Out
B16 DRQ3 DMA request 3 In
B17 -DACK1 DMA acknowledge 1 Out
B18 DRQ1 DMA request 1 In
B19 -REFRESH Refresh In/Out
B20 CLOCK System clock (67 ns,6 or 8MHz); 50% duty cycle Out
B21 IRQ7 Interrupt request 7 In
B22 IRQ6 Interrupt request 6 In
B23 IRQ5 Interrupt request 5 In
B24 IRQ4 Interrupt request 4 In
B25 IRQ3 Interrupt request 3 In
B26 -DACK2 DMA acknowledge 2 Out
B27 T/C Terminal count: pulses high when DMA term count reached Out
B28 ALE Address latch enable Out
B29 +5Vdc    
B30 OSC High-speed clock (70 ns, 14.31818Mhz),50%duty cycle Out
B31 GROUND    

Remarque le -5v n'est pas toujours implémenté. 

Le bus en photo :


Les chronogrammes et autres données techniques sont dans le fichier ci-dessous en attendant de faire la version française.
isa.txt;


Complétez cette page, posez vos questions et remarques ici : WiKiFri

Page http://fribotte.free.fr/bdtech/isa/isa.html modifiée le 14/10/2002.
Copyright fribotte@free.fr, libre de droit pour toute utilisation non commerciale.
Reproduction autorisée par simple mail