4
Elektor 3/99 La spécialisation est, sur la scène des microcontrôleurs, un phénomène évi- dent depuis quelques années déjà. Si, à l’aube de l’ère des microcontrôleurs, il n’existait qu’un très petit nombre de types, dans lesquels on tout ce qu’il était, à l’époque, techniquement pos- sible –et qui, jugé aux critères actuels, était risiblement peu– il devint rapide- ment clair que seule une spécialisation des différents types de microcontrô- leurs permettrait de répondre aux cahiers des charges de plus en plus sévères des utilisateurs. C’est ainsi que naquirent de nouvelles sous-familles qui n’avaient, outre le set d’instructions de base, que fort peu de caractéris- tiques communes. Le meilleur exemple de cette évolution est la famille MCS51, dont la généalogie remonte au 8051. Il n’existait sur le marché, il n’y a encore qu’un bon lustre à peine, qu’une poignée de dérivés du 8051 –qui eurent droit à leur place dans les pages d’Elektor, on se souviendra du SCALP et autres SIM- CAD. Il existe de nos jours des microcontrô- leurs ultra-rapides à 16 voire 8 broches, à set d’instructions réduit et n’embarquant que le strict minimum de péri- phériques mais égale- ment des chevaux de trait utilisables à toutes les sauces (le 80C51 par exemple), ainsi que des microcontrôleurs ultra- sophistiqués avec beau- coup de mémoire aptes à résoudre toutes sortes de problèmes. 80C166: UN CONTRÔLEUR SUR MESURE C’est très précisément dans cette der- nière catégorie que l’on peut classer le SAB 80C166, un microcontrôleur vendu depuis 5 ou 6 ans. De par sa fré- quence d’horloge de 20 MHz et le nombre important de ses sources d’in- terruption, on le retrouve dans des applications exigeant tout à la fois une vitesse de traitement très élevée et une flexibilité importante. Les applications de contrôle enfoui (embedded control) en temps réel (dans les véhicules en par- ticulier) et les contrôles de processus industriels complexes, mais aussi, semi- professionnels et amateurs même, vu C’est la première fois qu’Elektor vous pro- pose un environne- ment de développe- ment pour un micro- contrôleur 16 bits, à savoir l’ancêtre de la famille C166 de Siemens, le SAB 80C166. Une description exhaustive du montage, tant sous l’aspect matériel que logiciel, et une application concrète devraient faciliter vos premiers pas dans le monde des 16 bits. 54 projet : Karl Heinz Domnik carte d’évaluation pour 80C166 kit de développement pour contrôleur 16 bits MICROPROCESSEURS

Carte d'Évaluation Pour80c166 _partie1

Embed Size (px)

DESCRIPTION

document

Citation preview

Page 1: Carte d'Évaluation Pour80c166 _partie1

Elektor 3/99

La spécialisation est, sur la scène desmicrocontrôleurs, un phénomène évi-dent depuis quelques années déjà. Si,à l’aube de l’ère des microcontrôleurs,il n’existait qu’un très petit nombre detypes, dans lesquels on tout ce qu’ilétait, à l’époque, techniquement pos-sible –et qui, jugé aux critères actuels,était risiblement peu– il devint rapide-ment clair que seule une spécialisationdes différents types de microcontrô-leurs permettrait de répondre auxcahiers des charges de plus en plussévères des utilisateurs. C’est ainsi quenaquirent de nouvelles sous-famillesqui n’avaient, outre le set d’instructionsde base, que fort peu de caractéris-tiques communes.

Le meilleur exemple decette évolution est lafamille MCS51, dont lagénéalogie remonte au8051. Il n’existait sur lemarché, il n’y a encorequ’un bon lustre àpeine, qu’une poignéede dérivés du 8051 –quieurent droit à leur placedans les pages d’Elektor,on se souviendra duSCALP et autres SIM-CAD. Il existe de nosjours des microcontrô-leurs ultra-rapides à 16voire 8 broches, à setd’instructions réduit etn’embarquant que lestrict minimum de péri-phériques mais égale-ment des chevaux detrait utilisables à toutesles sauces (le 80C51 parexemple), ainsi que desmicrocontrôleurs ultra-sophistiqués avec beau-coup de mémoire aptesà résoudre toutes sortesde problèmes.

8 0 C 1 6 6 :U N C O N T R Ô L E U R S U RM E S U R EC’est très précisément dans cette der-nière catégorie que l’on peut classer leSAB 80C166, un microcontrôleurvendu depuis 5 ou 6 ans. De par sa fré-quence d’horloge de 20 MHz et lenombre important de ses sources d’in-terruption, on le retrouve dans desapplications exigeant tout à la fois unevitesse de traitement très élevée et uneflexibilité importante. Les applicationsde contrôle enfoui (embedded control) entemps réel (dans les véhicules en par-ticulier) et les contrôles de processusindustriels complexes, mais aussi, semi-professionnels et amateurs même, vu

C’est la première foisqu’Elektor vous pro-pose un environne-

ment de développe-ment pour un micro-contrôleur 16 bits, à

savoir l’ancêtre de lafamille C166 de

Siemens, leSAB 80C166. Une

description exhaustivedu montage, tant

sous l’aspect matérielque logiciel, et une

application concrètedevraient faciliter vospremiers pas dans le

monde des 16 bits.

54

projet : Karl Heinz Domnik

carte d’évaluationpour 80C166

kit de développementpour contrôleur 16 bits

MICROPROCESSEURS

Page 2: Carte d'Évaluation Pour80c166 _partie1

son prix inférieur à 15 �, sont ses ter-rains de prédilection. Le 80C166convient ainsi à merveille pour unpilotage simultané de plusieursmoteurs pas à pas, peut faire office de« cerveau » pour une surveillanced’objet professionnelle, rendre d’émi-nents services en tant que central d’unréseau ferroviaire de superficie impor-tante et à bien d’autres applicationsintéressantes.La caractéristiques la plus importanteet la plus intéressante du 80C166 est,pour le lecteur d’Elektor, qu’il s’agitd’un microcontrôleur 16 bits pourlequel son magazine propose, pour lapremière fois, un set de développe-ment complet (et au prix abordable).La première partie de cet article seraconsacrée au contrôleur lui-même et àses possibilités. Nous ne pouvons bienévidemment pas entrer dans lesmoindres détails. Nous vous deman-dons de vous reporter à la fiche decaractéristiques et au manuel de l’utili-sateur (tous deux au format .PDF) enanglais que l’on peut télédéchargergratuitement d’Internet.La série C166 connaît 3 types de base.Si les membres de la famille 83C166 et88C166 comportent chacun 32 Koctetsde ROM pour le premier et demémoire Flash pour le second, le80C166M ne possède pas ce type demémoire. Ceci explique que notre carted’évaluation mette à disposition unequantité de mémoire sensiblementplus importante, mais externe cettefois.Le SAB80C166, dont on retrouve, enfigure 1, la structure interne, disposed’un espace mémoire adressable de256 Koctets respectant l’architecture de« von Neumann » et connaît 4 modesde bus, 8/16 bits en multiplexé ou non.Nous avons, sur notre platine d’éva-luation, opté pour le mode « 16 bitsmultiplexé ». La chronologie du bus estmodifiable, pouvant se voir appliquerjusqu’à 15 cycles d’attente (wait state).Il est possible, simultanément, d’opterpour 2 configurations de bus diffé-rentes. Le support du mode Multi-Master, dans le cas de systèmes multi-processeurs, est possible. Il existe, dansle domaine d’adresses allant de0$FA00HEX à 0$FDFFHEX, une RAMdouble port (Dual-Port-RAM) internede 1 Koctet dont 255 octets sont adres-sables au niveau du bit.Le 80C166 met à disposition 5 portsreprésentant pas moins de66 Entrées/Sorties ou fonctions spé-ciales adressables au niveau du bitainsi qu’un port à 10 entréesTTL/analogique.Le microcontrôleur comporte, parbancs de registres, 98 registres à fonc-tion spéciale (SFR = Special FunctionRegister) et 16 registres à usage général(GPR = General Purpose Register). Il estpossible de commuter jusqu’à 16 bancs

de registres, nombre limité par la RAMinterne disponible.On dispose de 32 sources d’interrup-tion à programmation libre, dont19 broches de port. Les interruptionspeuvent se voir attribuer 16 niveaux depriorité à 4 sous-niveaux de groupechacun. L’inertie de réaction à l’appari-tion d’une interruption ne dépasse pasquelque 600 ns. Les sources d’inter-ruption peuvent réagir à des événe-ments externes à, au choix, flanc mon-tant et/ou descendant.Le contrôleur d’événement périphé-rique (PEC = Peripheral Event Control-ler) à 8 unités à programmation libre,permet un transfert de données8/16 bits entre la mémoire et les péri-phériques au cours d’un cycle. Lestemporisateurs universels à 16 bits, aunombre de 5, dont la résolution est res-pectivement de 400 ou 200 ns, peuventêtre utilisés en temporisateur (timer),générateur de durée de porte (GatedTimer) ou en compteur (counter). 2 tem-porisateurs 16 bits indépendants addi-tionnels sont utilisés par les 16 unitésde capture/comparaison.Le 80C166 comporte 2 interfacessérielles dotées chacune de son propregénérateur de taux de transmission(baudrate). Elles peuvent travailler enmode full duplex synchrone ou asyn-chrone jusqu’à 625 Kbauds. Les10 convertisseurs A/N ont une résolu-tion de 10 bits, une durée de conver-sion de 9,7 ms et une durée d’échan-tillonnage de 1,58 ms. Ces valeurs auto-risent des conversions individuelles, enlongueur ou en groupe. L’utilisateurpourra définir entre 25,6 ms et 419 ms,la durée de veille du chien de garde(watchdog).Le 80C166 connaît 2 modes d’écono-mie de courant pour une alimentationpar pile, le mode d’attente (PowerDown) et le mode deveille (Idle). L’exécution

des instructions de fait, dans 90% descas, en un seul cycle, soit en 150 ns(3 cycles d’horloge de 50 ns) à une fré-quence d’horloge de 20 MHz et sanscycle d’attente (wait-state = 0). Lesmultiplications 16x16 bits nécessitent5 cycles, les divisions 32/16 bits se fontelles en 10 cycles.Le set d’instructions, qui ne comporteque des instructions de 2 ou de 4 octetsde long, connaît également des ins-tructions au niveau du mot, de l’octetou du bit puissantes.

L A C O U R D U 8 0 C 1 6 6En tant qu’« ancêtre » de la série C166,le SAB 80C166M ne possède que descapacités en mémoire interne limitées.

Ceci implique, dansle cas d’un système

55Elektor 3/99

Caractéristiquestechniques :➫ Microcontrôleur SAB 80C166 M➫ Quartz 40 MHz = fréquence d’horloge

de 20 MHz➫ Mode 16 bits multiplexé, segmenté➫ 64 Koctets de RAM (à tamponnage par

pile optionnel)➫ 64 Koctets d’EPROM avec programme➫ 2 interfaces sérielles➫ 16 sorties TTL tamponnées➫ 16 entrées TTL tamponnées et interrup-

tibles➫ 10 entrées TTL/analogique, protégées➫ 2 Entrées/Sorties protégées➫ Bus d’extension

Options :➫ 64 Koctets de RAM ou d’EPROM➫ 16/32 Koctets d’EEPROM➫ Pile pour sauvegarde de la RAM et de

l’horloge en temps réel➫ Chien de garde/Commutation de pile➫ Horloge en temps réel (montre)

1

Figure 1. Structureinterne du SAB 80C166M.

Page 3: Carte d'Évaluation Pour80c166 _partie1

de développement, dont on retrouvele synoptique en figure 2, la mise enoeuvre de matériel externe. La cartecomporte les sous-ensembles matérielssuivants :➫ 64 Koctets de RAM (à alimentation

de sauvegarde par pile option-nelle)

➫ 64 Koctets d’EPROM contenant leprogramme

➫ 64 Koctets de RAM ou d’EPROM➫ 16/32 Koctets d’EEPROM➫ 16 sorties TTL tamponnées➫ 16 entrées TTL tamponnées à pilo-

tage potentiel par interruption➫ 10 entrées TTL/analogique

protégées➫ 2 interfaces RS-232➫ 2 entrées/sorties bidirectionnelles

protégées➫ un bus d’extension pour cartes

additionnelles➫ pile pour sauvegarde de la RAM et

de l’horloge➫ chien de garde/commutation de

pile➫ Horloge en temps réel (montre)

C H R O N O L O G I E D U B U SNotre carte n’utilise, des 4 modes debus que connaît le 80C166, que le mode16 bits multiplexé. Les 16 bits d’adresse0 à 15 ne sont présents que 50 ns auport d’adresses/de données et doiventêtre maintenus, par le biais du signalALE (Address Latch Enable), dans lesverrous, IC9 et IC10. Les bits 16 et 17sont présents, pour la durée d’un cycle,sur un autre port. Après présentationde l’adresse, le transfert de données à16 bits se termine. La durée d’un trans-fert est, après remise à zéro, de 100 ns+ (15 cycles d’attente à 50 ns « pièce »),soit 850 ns, pouvant être ramenée, parmodification, au niveau du pro-gramme, du nombre d’cycles d’attente,à 100 ns + (0 cycle d’attente à 50 ns« pièce »), soit 100 ns. Il en résulte untemps d’accès mémoire de 50 ns +transfert de données de 90 à 150 ns,valeur dont il faut soustraire la duréede transfert de porte requise par l’acti-vation de la ligne de sélection de puce(Chip Select), soit entre 15 et 35 ns. Ilfaudra utiliser, si l’on travaille à 0 cycled’attente, des mémoires à temps d’ac-cès inférieur à 120 ns. Les pas de 50 nsdérivent de la fréquence d’horloge de20 MHz fournie par un oscillateur àquartz travaillant à 40 MHz.La mémoire destinée au code du pro-gramme est subdivisée en 4 segmentsde 64 Koctets chacun. Une GAL 16V8,IC4, fournit tous les signaux de sélec-tion des mémoires ainsi que le signald’écriture pour les accès à 8 bits. Nousreproduirons le contenu de la GALdans le second article publié le moisprochain !Le début de programme pourra êtreinstallé dans les segments suivants :

Cela permet d’installer, de charger,voire d’appeler différents programmes.Il est possible, par modification ducontenu de la GAL, de définir d’autresconfigurations de la mémoire. Un pro-gramme démarre toujours àl’adresse 0. Vu que l’on trouve, sur lacarte d’évaluation, à ladite adresse, de lamémoire volatile (RAM), les donnéesprésentes après mise sous tension dusystème sont purement aléatoires. Ceciexplique que le code du programmesoit mis dans un segment comportantde l’EPROM pour ensuite, après misesous tension ou RAZ (Reset), être trans-féré (miroir) vers le segment 0. En find’initialisation, l’instruction de fin d’ini-

Tableau 1. Définition des segments

JP2 JP1

Segm

ent

Adresse

0 0 1 1$0000h - 1$FFFFh

0 1 2 2$0000h - 2$FFFFh

1 0 3 3$0000h - 3$7FFFh

0$8000h - 0$F9FFh

1 1 0 0$0000h - 0$F9FFh

tialisation, EINIT, termine le processusde mirorisation de sorte que l’onretrouve, en segment 0, de la mémoire.Lors d’une RAZ la sortie RSTOUT ducontrôleur est mise au niveau bas pourêtre remise au niveau haut par le biaisde l’instruction EINIT. C’est le signalassurant la mirorisation.

E N T R É E S / S O R T I E SLa carte met 16 sorties à la dispositionde l’utilisateur. Elles sont tamponnéespar le biais des circuits TTL 74LS541(avec inversion dans le cas du74LS540). Après une RAZ, toutes lesbroches du contrôleur sont passées enentrées, le programme devant déclarercelles qui doivent devenir des sorties.16 entrées attaquent le contrôleur viales 74LS541. Les entrées sont interrup-tibles, 5 d’entre elles étant program-mables en compteur. On pourra, le caséchéant, inverser la polarité dessignaux d’entrée en substituant des74LS540 aux 74LS541.Il est recommandé d’utiliser des circuitsintégrés TTL aux entrées et sorties depréférence à des CMOS vu qu’ils sontbien moins sensibles aux court-circuitset surtensions. La création d’un court-

56 Elektor 3/99

RAM2 x 256 kBit

= 64 kB

EPROM2 x 256 kBit

= 64 kB

RAM/EPROM2 x 256 kBit

= 64 kB

EEPROM2 x 64 kBit

= 16 kB

HorlogeRTC

MAX 690

Analogique

Accu

GAL 16V8

Décodeur

Bus d'extension

Latc

h

Entrées

Sorties

SIO 1

SIO 2

SAB80C

166M

A1..A15

RESETNMI

ALE

CS

990028 - 12

CS/RD/WR

5V

D1..D15

2Figure 2. Le microcontrôleur est entouré d’un quar-teron de composants périphériques.

Page 4: Carte d'Évaluation Pour80c166 _partie1

circuit au niveau d’une borne de sortiedu 80C166 se traduit, en règle générale,par la destruction du contrôleur.10 entrées se laissent programmer enentrée TTL ou en entrée analogiqueà résolution de 10 bits. Elles sont pro-tégées par un réseau résistance/diodezener contre les surtensions et lesinversion de polarité. 2 entrées/sor-ties bidirectionnelles protégées decette façon peuvent être utiliséespour des applications requérant dessignaux d’horloge et de donnée, dansle cas, par exemple, d’un clavier ou

d’un bus I2C. L’entrée d’horloge estinterruptible.Il existe une paire d’interfaces RS-232permettant la communication avec lemonde extérieur. On a besoin de SIO 2dans le cas de l’utilisation d’un pro-gramme moniteur. Les entrées de RAZet NMI (Non Maskable Interrupt) sontégalement accessibles de l’extérieur.Toutes les entrées et toutes les sorties,ainsi que l’alimentation 5 V, sont recon-duites sur 3 rangées de pastilles de sou-dure. On pourra y implanter diffé-rentes sortes d’embases :

➫ Une embase autosécable femelle de2 x 32 contacts pouvant recevoir desplatines enfichables dotées d’élé-ments de réglage, de commutationet/ou d’affichage, des étages depuissance, une alimentation, etc...

➫ Un connecteur DIN à 2 x32 contacts (ac ou ab) ou à 3 x32 contacts (abc) permettant l’im-plantation de la platine dans unrack 19”.

L A M É M O I R ELa platine comporte 6 supports pourdes mémoires de 64, 128 ou 256 Kbits

ainsi que 2 supports destinés à desEEPROM de 64 ou 128 Kbits. Ces cir-cuits doivent toujours être montés parpaire (16 bits = 2 x 8 bits). On a besoin,pour un fonctionnement en versionminimale, de RAM dans le domaine0$0000HEX à 0$F9FFHEX (IC11/IC12) etd’un programme, moniteur ou appli-cation peu importe, en EPROM(IC13/IC14) à compter de 1$0000HEX.0$FA00HEX et 0$FFFFHEX délimitent ledomaine de la mémoire interne et desregistres du 80C166.

L E S O P T I O N SLa carte de développement à 80C166offre toute une série de fonctionsoptionnelles.

Extension de mémoire 1Les supports IC15/IC16 peuvent rece-voir soit de la RAM soit de l’EPROM.Ces 2 types de circuits n’étant pas com-patibles broche à broche, il faut procé-der à une redirection de lignes par lebiais des cavaliers JP7 à JP9. Le choixentre une alimentation par pile ou sous5 V se fait par l’intermédiaire de JP6,sachant cependant qu’il faudra impé-rativement alimenter les EPROM en5 V sous peine de retrouver l’accu desauvegarde à plat en quelquesminutes.

Extension de mémoire 2On pourra mettre, dans les supportsIC17/IC18, des EEPROM de 64 ou128 Kbits. Dans ces conditions, 16 ou32 Koctets de données restent conser-vées même après disparition de la ten-sion d’alimentation ou en l’absenced’accu de sauvegarde. Le temps d’ac-cès à ce type de composant est del’ordre de 200 ns voire plus. Il faudra

donc, pour ledit domaine, programmerle nombre de cycles d’attente requis.

Le circuit horloge (RTC)Il faudra, au cas où l’on implante le cir-cuit intégré d’horloge RTC-72421, IC5,mettre en place le décodeur 74HC138,IC6. L’horloge en temps réel continuede fonctionner, même après coupurede la tension d’alimentation à condi-tion que l’accu de sauvegarde soit enplace (et chargé).

Le bus d’extensionLe bus de données/d’adresses, lessignaux de commande et 6 lignes desélection de puce (CS) du 74HC139,IC6, sont tirées vers une rangée de32 pastilles de soudure. Une embase à1 rangée de contacts permet une exten-sion, bidirectionnelle, de la carte d’éva-luation à 80C166.

Le signal Wait/ReadyEn cas d’activation de l’entrée Ready, ilest possible d’obtenir, lors d’accès à cer-tains domaines d’adresse de la GAL,par le biais de IC7, un 74HC123, le geldu contrôleur pendant la durée définiepar R25/C5. Cette option est à réserveraux « Initiés ».La seconde moitié du 74HC123 selaisse piloter par le biais de P1.13 etremettre à zéro pendant la pseudo-période de R16/C7. La sortie est utili-sable librement.

Sauvegarde par accuNous avons prévu un accu 3,6 V pourla sauvegarde des données des circuitsde RAM. Les cavaliers JP5/JP6 permetd’opter entre un tamponnage ou nonde l’alimentation de la RAM. Le bascu-lement du 5 V à la tension fournie parl’accu est le domaine d’un MAX 690,IC3.

Ce MAX 690remplit 2 fonctions additionnelles :1. Si l’entrée WDI (WatchDog Input) estouverte, le chien de garde est en som-meil, si elle se trouve, par le biais deJP3, à niveau TTL, Cerbère est actif. Aubout de quelque 100 ms environ il doity avoir un changement de niveau surl’entrée CS6, faute de quoi le MAX 690déclenche une RAZ.2. Si la tension appliquée à l’entrée PFI(Power Fail Input) chute en-dessous de1,34 V, la sortie PFO (Power Fail Output)présente un niveau bas. Il est possible,via JP4, d’utiliser ce signal pour uneRAZ ou une NMI.

Dans le prochain numéro d’Elektornous aborderons l’aspect réalisation dela carte d’évaluation, le processus desoudure du contrôleur CMS à100 contacts en particulier.

(990028-1)

57Elektor 3/99

Tableau 2. Cartographie de la mémoire

RAM 64,0 kB 2 x RAM 62256 0$0000h-0$F9FFh

Contrôleur 1,5 kB 80C166 RAM et registres 0$FA00h-0$FFFFh

EPROM 65,5 kB 2 x EPROM 27C256 1$0000h-1$FFFFh

RAM ou EPROM 65,5 kB 2 x RAM 62256 ou 2 x EPROM 27C256 2$0000h-2$FFFFh

EEPROM 32,8 kB 2 x EEPROM 28C64 / 28C128 3$0000h-3$7FFFh

Décodeur 16,4 kB 3$8000h-3$BFFFh

CS0# CS 0 pour cartes d'extension 3$8000h-3$87FFh

CS1# CS 1 pour cartes d'extension 3$8800h-3$8FFFh

CS2# CS 2 pour cartes d'extension 3$9000h-3$97FFh

CS3# CS 3 pour cartes d'extension 3$9800h-3$9FFFh

CS4# CS 4 pour cartes d'extension 3$A000h-3$A7FFh

CS5# CS 5 pour cartes d'extension 3$A800h-3$AFFFh

CS6# Chien de garde (MAX 690) 3$B000h-3$B7FFh

CS7# Horloge RTC (RTC-72421) 3$B800h-3$BFFFh

Libre 16,4 kB Domaine libre 3$C000h-3$FFFFh