Equip Didàctic Demostrador de Màquina Digital...

578
Equip Didàctic Demostrador de Màquina Digital Senzilla AUTOR: Pié Vallvé, Jacob. DIRECTOR: Ramírez Falo, José Luis . DATA: Setembre / 2004.

Transcript of Equip Didàctic Demostrador de Màquina Digital...

  • Equip Didàctic Demostrador de Màquina Digital Senzilla

    AUTOR: Pié Vallvé, Jacob.

    DIRECTOR: Ramírez Falo, José Luis .

    DATA: Setembre / 2004.

  • Índex

    MEMÒRIA DESCRIPTIVA..................................................................5

    1 OBJECTE DEL PROJECTE ..........................................................................6

    2 TITULAR .........................................................................................................6

    3 ANTECEDENTS..............................................................................................6

    4 OBJECTIU DEL PROJECTE.........................................................................7

    5 POSSIBLES SOLUCIONS I SOLUCIÓ ADOPTADA. .................................9

    5.1 DECISIÓ DEL CIRCUIT INTEGRAT A UTILITZAR EN LA IMPLEMENTACIÓ...........9 5.2 QUIN MICRO_CONTROLADOR UTILITZAR.....................................................10 5.3 COMPARACIÓ ENTRE MARQUES. ................................................................10 5.4 RECURS ELECTRO-MECÀNIC.......................................................................12 5.5 RECURS VISUAL ........................................................................................13 5.6 ESQUEMA MÀQUINA SENZILLA ..................................................................14

    6 DESCRIPCIÓ DE LA SOLUCIÓ ADOPTADA...........................................15

    6.1 PROTOTIPUS – DESCRIPCIÓ DEL HARDWARE...............................................15 6.1.1 Mòdul MCU-1...................................................................................17 6.1.2 Mòdul MCU-2...................................................................................23 6.1.3 Mòdul LCD.......................................................................................25 6.1.4 Mòdul TECLAT.................................................................................28 6.1.5 Mòdul Descodificador.......................................................................30 6.1.6 Mòdul Elements de Memòria.............................................................31 6.1.7 Mòdul Controlador de Leds ..............................................................34 6.1.8 Software MCU-1...............................................................................35

    6.1.8.1 LCD .............................................................................................35 6.1.8.2 TECLAT ......................................................................................39 6.1.8.3 La rutina de interrupció del MCU-1 ..............................................42

    6.2 MÒDUL DEFINITIU.....................................................................................46 6.2.1 Millora lògica combinacional ...........................................................46

    6.3 BASE DIDÀCTICA DEL PROJECTE ................................................................55 RESUM DEL PRESSUPOST......................................................................................56

    MEMÒRIA DE CÀLCUL .....................................................................58

    PLÀNOLS I ESQUEMES......................................................................61 8.1 ESQUEMA PROTOTIPUS TARGETA MCU-1 ..................................................62 8.2 ESQUEMA PROTOTIPUS TARGETA LCD I TECLAT........................................63 8.3 ESQUEMA PROTOTIPUS TARGETA DESCODIFICADORS .................................64 8.4 ESQUEMA PROTOTIPUS TARGETA ELEMENTS DE MEMÒRIA.........................65 8.5 ESQUEMA PROTOTIPUS TARGETA CONTROLADOR DE LEDS.........................66 8.6 ESQUEMA PROTOTIPUS TARGETA CONTROLADOR DE LEDS.........................67 8.7 ESQUEMA PROTOTIPUS TARGETA MCU-2 ..................................................68 8.8 ESQUEMA MÒDUL DEFINITIU TARGETA MCU-1.........................................69

  • 8.9 ESQUEMA MÒDUL DEFINITIU TARGETA MCU-2.........................................70 8.10 ESQUEMA MÒDUL DEFINITIU TARGETA CPLD’S ....................................71 8.11 POSICIÓ COMPONENTS TARGETA MCU-1...............................................72 8.12 FOTOLIT CAPA TOP TARGETA MCU-1 ....................................................72 8.13 FOTOLIT CAPA BOTTON TARGETA MCU-1 .............................................73 8.14 POSICIÓ COMPONENTS TARGETA CPLD’S ..............................................74 8.15 FOTOLIT CAPA TOP TARGETA CPLD’S ...................................................75 8.16 FOTOLIT CAPA BOTTON TARGETA CPLD’S ............................................76 8.17 POSICIÓ COMPONENTS TARGETA MCU-2...............................................77 8.18 FOTOLIT CAPA TOP TARGETA MCU-2 ....................................................77 8.19 FOTOLIT CAPA BOTTON TARGETA MCU-2 .............................................77

    PRESSUPOST ..............................................................................................78 9.1 MEDICIONS ...............................................................................................79

    9.1.1 Prototipus .........................................................................................79 9.1.2 Mòdul Definitiu.................................................................................89

    9.2 QUADRE DE PREUS ....................................................................................95 9.2.1 Quadre de Preus Prototipus..............................................................95 9.2.2 Quadre de Preus Mòdul Definitiu ...................................................106

    9.3 QUADRE DE PREUS PROTOTIPUS...............................................................113 9.4 MÒDUL DEFINITIU...................................................................................124 RESUM DEL PRESSUPOST....................................................................................131

    ANNEXES ....................................................................................................133 ANNEX 1 – COMPARACIÓ ENTRE MARQUES DE MCU’S.......................................134 ANNEX 2 – FOTOGRAFIES DEL PROTOTIPUS ........................................................142 ANNEX 4 – COMPARACIÓ ENTRE LLENGUATGE ASSEMBLADOR I LLENGUATGE C 145 ANNEX 5 – COMANDOS LCD .............................................................................148 ANNEX 6 – MANUAL DE FUNCIONAMENT NIVELL BÀSIC.....................................149 ANNEX 7 – MANUAL DE FUNCIONAMENT DE LA DEMOSTRACIÓ PAS A PAS..........160 ANNEX 8 – MANUAL DE FUNCIONAMENT NIVELL AVANÇAT - 1 ..........................278

    8.1.1 Descripció Didàctica dels dispositius amb que es realitza la Demostració....................................................................................279

    8.1.2 Descripció Didàctica ......................................................................284 8.1.3 Funcionament de l’Equip Didàctic..................................................293 8.1.4 La simulació ...................................................................................299

    ANNEX 9 – MANUAL DE FUNCIONAMENT NIVELL AVANÇAT - 2 ..........................316 SOLUCIONS A LES QÜESTIONS DE L’ANNEX 9 ......................................................326 ANNEX 10 – DATASHEET PANTALLA LCD..........................................................330 ANNEX 11 – CODI FONT.....................................................................................331 CODI PROGRAMA PRINCIPAL...............................................................................331 CODI ARXIU “TECLAT” ......................................................................................350 CODI ARXIU “DISPLAY” .....................................................................................358 CODI ARXIU “RUTINES” .....................................................................................397 CODI ARXIU “MODUL1” .....................................................................................414 CODI ARXIU “MODUL2” .....................................................................................441 CODI ARXIU “MODUL3” .....................................................................................460 CODI ARXIU “MODUL4” .....................................................................................488 CODI ARXIU “MODUL5” .....................................................................................498

  • 5

    Memòria Descriptiva

  • Memoria Descriptiva

    6

    1 Objecte del Projecte

    El següent projecte té com a objecte l’elaboració d’un prototipus d’un mòdul didàctic, format en diversos blocs, perfectament identificables per a l’alumne, que mostrarà el funcionament del concepte de computador digital ensenyant, a la vegada, el funcionament de la màquina senzilla.

    Mecànicament, el prototipus estarà format de diverses plaques de circuits impresos en les que es podrà observar la distribució, muntatge i cablejat del components. Aquest tindrà una zona on es podran veure els esquemes en que es basaran les explicacions/demostracions didàctiques del projecte. Aquests seran els següents:

    - Un esquema que representarà un computador digital en la seva màxima senzillesa.

    - Un diagrama de flux que representarà les principals funcions del computador (fetch, descodificació...)

    - Un esquema d’un computador digital que detallarà els principals registres i blocs més importants de la màquina senzilla.

    Durant la simulació podrem visualitzar en tot moment la informació que continguin cada un dels blocs de la màquina senzilla, a través d’algun recurs visual (leds, LCD). Seleccionarem aquesta informació, per poder-la visionar, mitjançant elements electro-mecànics (polsadors, jumps).

    2 Titular

    Segons el Real Decret Legislatiu 1/1996, del 12 d’abril (BOE 22-4-1996), el titular del projecte serà l’Escola Tècnica Superior d’Enginyeria de la Universitat Rovira i Virgili, amb direcció: Campus Sescelades, avinguda Països Catalans, 26 C.P.:43007 Tarragona, i en la seva representació el senyor José Luís Ramírez Falo.

    3 Antecedents

    Durant el primer curs de la diplomatura d’Enginyeria Tècnica Industrial, especialitat

    en Electrònica Industrial, es realitza l’assignatura obligatòria d’ Introducció als Sistemes Digitals. L’objectiu d’aquesta assignatura es introduir als alumnes a la lògica combinacional i als sistemes seqüencials. Les pràctiques d’aquesta assignatura ajuden a l’alumne a comprendre el funcionament dels blocs combinacionals, i introdueixen unes breus explicacions d’un programa per gravar i simular pld’s (dispositius lògics programables).

  • Memoria Descriptiva

    7

    En el segon curs de la diplomatura anteriorment esmentada, s’imparteixen les assignatures obligatòries de Sistemes Digitals I i Sistemes Digitals II. Una de les funcions de l’assignatura Sistemes Digitals I és l’explicació de la màquina senzilla. En les pràctiques d’aquesta assignatura s’aprofundeix en els dispositius lògics programables i es realitza una unitat de control d’una màquina senzilla, a efectes de comprendre millor el seu funcionament.

    En l’assignatura Sistemes Digitals II, el professorat realitza un repàs de la màquina senzilla, com a introducció en el món dels processadors i la circuiteria perifèrica d’aquests. S’explica també un entorn assemblador, les diferents tècniques d’entrada/sortida1 i comunicacions. Per assolir els conceptes explicats durant el curs, l’assignatura proposa una sèrie de pràctiques que introdueixen a l’alumne dins del món assemblador, i la programació d’un sistema dissenyat amb micro-processador.

    Durant el tercer curs de la carrera, s’imparteix l’assignatura Sistemes Electrònics amb Micro-controladors. L’objectiu d’aquesta és: conèixer el disseny de circuits electrònics basats en micro-controladors, saber el recursos que ofereixen, dissenyar aplicacions i conèixer les eines de desenvolupament d’aquests. Les pràctiques de l’assignatura introdueixen l’alumne als programes de simulació i gravació de micro-controladors, i al muntatge d’un sistema basat en aquests.

    El projecte es basarà en els conceptes explicats a les assignatures anteriors, donant així una referència global a l’alumne dels sistemes digitals (portes lògiques, cpld’s, micro-controladors).

    4 Objectiu del Projecte

    L’objectiu principal d’aquest projecte és l’explicació del funcionament de la màquina senzilla. Aquest també es podrà utilitzar per demostrar i reforçar els coneixements assolits en assignatures basades en sistemes digitals de primer cicle d’Enginyeria Tècnica Industrial, especialitat en Electrònica Industrial.

    Les assignatures en les quals es podrà fer ús d’aquest mòdul didàctic són: Introducció als Sistemes Digitals, Sistemes Digitals I, Sistemes Digitals II i Sistemes Electrònics amb micro-controladors. Aquest també es podria utilitzar per a captivar a futurs alumnes en fires o instituts, on es realitzen presentacions sobre els continguts de les assignatures de la que esta formada la carrera, donant així una mostra del que es pot realitzar després d’haver cursat l’enginyeria.

    Per ajudar a l’alumne a una millor comprensió dels conceptes explicats en l’assignatura d’Introducció als sistemes Digitals, aquest trobarà un exemple d’utilització de blocs combinacionals i de mòduls seqüencials en l’elaboració de la circuiteria del projecte.

    1 Nota: A partir d’aquest moment abreviarem a les tècniques d’entrada i sortida com a tècniques D’E/S

  • Memoria Descriptiva

    8

    Una de les principals raons de l’elaboració del projecte és intentar fer més entenedora la part del temari de l’assignatura de Sistemes Digitals I, que tracta sobre la màquina senzilla. Una manera d’aconseguir-ho, serà realitzant una simulació d’un computador digital. La simulació es realitzarà a través d’un panell amb certes figures serigrafiades, i un conjunt de leds que aparentaran ser els bussos del sistema i els blocs més importants de que està formada una màquina senzilla.

    Un altre dels objectius del projecte desenvolupat és el de reforçar els aspectes teòrics impartits en l’assignatura de Sistemes Digitals II. Els aspectes que més intentarem aclarir als alumnes seran:

    - Principalment, en les primeres hores de classe, on es faci un recordatori de la màquina senzilla; el mòdul didàctic servirà per fer memòria del funcionament d’aquesta.

    - Amb la simulació de programes, ja prestablerts, ajudarà a entendre millor el funcionament dels modes de direccionament Directe, Absolut, Indirecte i Immediat que són explicats en l’assignatura.

    - Servirà perquè l’alumne sigui conscient de que, quan ha de programar un micro-processador o un micro-controlador, ha d’utilitzar un codi ben estructurat, resoldre el programa d’una forma descendent, elegant, neta i amb comentaris adequats per una bona interpretació del codi font.

    - Tindrà un exemple pràctic d’una comunicació sèrie, la qual es podrà connectar a l’analitzador lògic, per a veure en més detall el funcionament del protocol de comunicació.

    - Un altre dels punts que volem tractar, és la descodificació de perifèrics o memòries externes al micro-processador . El prototipus incorporarà un bus d’adreces, un de dades i les línies de control corresponents per a l’interpretació de l’informació dels diferents busos. Les adreces es descodificaran amb l’ajut de diversos descodificadors i portes lògiques

    - S’ha observat que a l’alumnat li és de difícil comprensió i aplicació les tècniques d’E/S, ja sigui tan per interrupció o programades. Donarem exemples d’aquestes variants, per a què l’alumne les pugui analitzar i comprengui la seva utilització.

    - Els alumnes de l’assignatura de Sistemes Electrònics amb micro-controladors tindran en aquest projecte, un exemple clar de disseny amb micro-controladors, l’utilització dels recursos d’aquests i eines pel desenvolupament en la grabació dels micro-controladors.

  • Memoria Descriptiva

    9

    5 Possibles solucions i solució adoptada.

    5.1 Decisió del Circuit Integrat a utilitzar en la implementació.

    Una de les decisions més importants que s’han de prendre en la elaboració del projecte és saber què s’utilitzarà per controlar tots els components que contingui el muntatge.

    Com que el prototipus és de caràcter digital, tenim diversos components lògics que ens poden ser útils per resoldre-ho:

    - Portes lògiques

    - FPGA

    - Micro_processadors

    - Micro_controladors

    - ASIC

    No és possible realitzar el disseny de projecte solament amb portes lògiques combinacionals, ja que aquestes no permeten l’execució de seqüències de software, però si ens seran útils per a realitzar algunes funcions lògiques.

    Els components FPGA i subfamílies estan pensats per substituir la lògica combinacional de baixa escala d’integració, guanyant una major integració de la circuiteria. Si aquest component sigues suficientment gran es podria implementar un micro-processador i la lògica combinacional necessària per a la implementació del nostre projecte. L’inconvenient que comportaria aquesta implementació, a part de la dificultat de la programació del component, és que s’haurien d’afegir més components externs com memòries, timers ... , elevant el cost i tamany del circuit final.

    Una implementació conjunta amb micro-processadors i lògica combinacional (ja sigui portes lògiques o FPGA) seria molt més viable, ja que ens donaria la possibilitat de poder executar una diversitat de programes sobre el micro-processador, i mitjançant els ports d’entrada i sortida d’aquest es podria controlar la lògica combinacional necessària per el desenvolupament del projecte. L’únic inconvenient d’aquest tipus d’implementació, seria el gran volum final del circuit; ja que, a més del micro-processador, s’hauria d’afegir la circuiteria externa (memòries, timers ... ) pel seu funcionament. Aquesta circuiteria ocasionaria un increment del preu.

    L’opció de fer servir una implementació conjunta amb micro-controladors i lògica combinacional és més viable que l’opció anterior. Al igual que l’anterior opció, poder executar una diversitat de programes sobre el micro-controlador i amb l’ajuda dels ports

  • Memoria Descriptiva

    10

    d’entrada i sortida portar un control de la lògica combinacional necessària per al desenvolupament del projecte. L’avantatge més important sobre l’anterior opció, és que

    els perifèrics necessaris pel funcionament d’un micro-processador ja estan integrats en el micro-controlador, guanyant una clara integració del circuit, apart de la millora econòmica que representaria la integració d’aquest perifèrics.

    Per últim, tindríem la possibilitat de realitzar el disseny creant un ASIC. Per descomptat, en aquesta opció es podrien integrar totes les opcions anteriors, essent totalment viable per a la implementació del nostre projecte. Però el gran inconvenient d’aquesta opció, és la gran despesa econòmica que resultaria per la fabricació d’un ASIC

    Sembla ser que la millor opció, i la més econòmica en aquest cas, seria un disseny conjunt amb micro-controladors i lògica combinacional (portes lògiques o FPGA o subfamílies)

    5.2 Quin micro_controlador utilitzar.

    És molt important remarcar a l’alumne la importància de saber escollir el micro_controlador adequat per a cada aplicació. Abans de decidir-nos per algun, ens hem de preguntar certes qüestions molt importants, com:

    - Preu del Micro-controlador

    - Fonts que el fabriquen

    - La documentació sobre aquest

    - Eines de desenvolupament

    - Característiques del micro-controlador

    Un cop haguem escollit alguns micro-controladors i haver-los comparat entre ells, mirarem si compleixen satisfactòriament les qüestions anteriors.

    5.3 Comparació entre Marques.

    Abans de realitzar qualsevol comparació entre marques de micro-controladors, hem de comentar que l’ample de banda de dades d’aquest serà de 8 bits. La raó és que una gran part dels micro-controladors destinats a la indústria són de 8 bits. També volem demostrar a l’alumne que es poden realitzar controls sobre dispositius sense tenir la necessitat de realitzar-ho amb micro-controladors molt potents.

  • Memoria Descriptiva

    11

    Segons un anàlisis de mercat realitzat l’any 2003 i publicat en un article en la web de TechOnLine [1], les ventes de micro-controladors segons el seu ample de banda va ser:

    Figura 1. Anàlisis de ventes per ample de banda del micro-controladors

    Com es pot observar el 29 % de les ventes de micro-controladors era d’un ample de banda de 8 bits.

    Per saber quines marques de micro-controladors havíem de comparar, ho vàrem buscar el ranking de ventes de micro-controladors. Segons la font Gartner Dataquest el mercat de ventes de micro-controladors durant l’any 2000 era:

    Figura 2. Ranking de ventes de micro-controladors

    En l’annex nº 1 podem veure un breu comentari sobre la comparació entre les diferents marques de micro-controladors i les famílies que aquests subministren amb un ample de banda de 8 bits.

  • Memoria Descriptiva

    12

    En la següent taula podem veure els resultats de la comparació entre marques de l’annex nº 1:

    Documentació

    Eines de Desenvolupament

    MCU amb suficients perifèrics

    per els nostres propòsits

    Adequat per els nostres propòsits Marca MCU

    Lliure Pagament Lliure Pagament

    Tipus de Memòria

    Si No Si No

    Motorola P P Flash P P

    Renesas

    (Hitachy+Nec) P P Flash P P

    Nec P P Flash P P

    Microchip P P Flash P P

    St Microelectronics P P Flash P P

    Infineon P P OTP P P

    Intel P P OTP P P

    Taula 1. Opcions entrre diferents marques de MCU

    Com podem veure en la taula anterior, totes les cases ens subministren gratuïtament la documentació dels seus productes, però en canvi, hi ha un parell que tenen les eines de desenvolupament de pagament, fet que ens les fa descartar directament.

    Un altre causa que ens fa descartar algunes cases de micro-controladors, són els tipus de memòria amb que subministren els seus productes. Si la memòria de programa es de tipus OTP o Rom, el micro-controlador ja no és adequat per als nostres propòsits.

    L’última col·lumna de la taula anterior ens mostra les cases que poden subministrar-nos algun micro-controlador adequat a les nostres necessitats.

    La marca escollida de micro-controladors per a desenvolupar el projecte serà Microchip, ja que és una marca que s’ha estés molt en els últims anys, amb molta documentació lliure i de fàcil accès. A part d’aquestes raons, utilitzant aquesta marca seguim la mateixa tònica de diverses assignatures de la carrera.

    5.4 Recurs electro-mecànic

    Per tal de poder interaccionar amb el mòdul i poder triar d’aquesta manera les diferents opcions del sistema, serà necessari algun recurs electro-mecànic. Aquest recurs

  • Memoria Descriptiva

    13

    haurà de reunir algunes característiques essencials, ja que serà la part del mòdul que estarà en contacte directe amb l’usuari.

    Les principals característiques que haurà de reunir el recurs seran:

    § Robust

    § Compacte

    § Eficient

    § Econòmic

    § I possibilitat de seleccionar diverses opcions

    Segons aquestes especificacions, ens podem inclinar per dos elements diferents.

    § Una bateria de polsadors o interruptors

    § Un teclat matricial o lineal

    Ambdues possibilitats poden ser implementades sense cap dificultat, i conceptualment, realitzarien la mateixa funcionalitat. Però ens inclinarem per a la segona opció, la del teclat. La raó és què aquest és molt més compacte que si utilitzéssim una bateria de polsadors/interruptors, apart de que és un bon exemple de disseny.

    Per elaborar el mòdul s’utilitzarà un teclat matricial numèric de 12 tecles, tenint-ne suficients per a interactuar amb el mòdul.

    5.5 Recurs Visual

    Com ja vam dir amb anterioritat, per poder observar el contingut dels diferents blocs del mòdul en la simulació, era necessari algun tipus de recurs optoelectrònic. Aquest és podia resoldre a través de dos opcions.

    § Display de 7 segments

    § Display LCD

    Suposant que la majoria de registres de la màquina senzilla fossin de 8 bits i utilitzant displays de 7 segments, necessitaríem 2 displays per a cada registre.

    Un dels desavantatges més important d’aquesta opció és el tamany que ocupa cada display, ja que es fa necessari un gran espai per a la ubicació de tots aquests displays. Un dels avantatges que té aquesta opció, és que el valor del display 7 segments es podria veure

  • Memoria Descriptiva

    14

    de més lluny, alhora de fer una demostració del Mòdul Didàctic en una classe plena d’alumnes.

    En canvi, si utilitzem un display LCD, l’espai necessari per a ubicar aquest component serà més petit frent a l’opció anterior. La circuiteria externa per controlar un display LCD també serà menys voluminossa que l’anterior opció (ja que la pantalla LCD ja té integrat un micro-controlador que la controla), els quals haurien de contenir un descodificador BCD-7 segments per a cada display de 7 segments.

    Alhora de decidir quin tipus de dispositiu col·locar al disseny del projecte, ens vam inclinar per la pantalla LCD, ja que aquesta és més fàcil de controlar, que no pas diversos Displays de 7 segments. Apart que aquesta opció fa més atractiva la visualització de la informació a presentar a l’usuari del mòdul.

    A causa de les moltes dades a mostrar a l’alumne, s’ha decidit utilitzar una pantalla LCD de 20 caràcters per 4 línies.

    5.6 Esquema Màquina Senzilla

    Per a poder simular el funcionament de la màquina senzilla és va optar per construir un esquema on es poguessin observar les diferents accions a realitzar en la simulació. El qual va ser extret dels apunts de Sistemes Digitals II.

    Aquest esquema es va realitzar a través de diodes Leds, ja que aquest és un element funcionalitat/preu adequat pel nostre propòsit, fàcil d’integrar i modular.

    Figura 3. Esquema de la Màquina Senzilla

  • Memoria Descriptiva

    15

    L’explicació didàctica d’aquest projecte es basa en la il·luminació, a través de diferents seqüències, dels leds de la figura anterior, demostrant a l’alumne el funcionament de la Màquina Senzilla (temari impartit en l’assignatura Sistemes DigitalsI) d’una manera gràfica. La raó d’haver decidit implementar-ho d’aquesta manera, és que pensem que és més fàcil de comprendre un concepte, si aquest el pots veure simulat. Apart de simular el funcionament de la Màquina Senzilla, ensenyarem a la vegada el funcionament dels modes de direccionament més importants del microprocessador 68000 (temari impartit en l’assignatura Sistemes DigitalsII)

    6 Descripció de la Solució Adoptada.

    Aquest projecte s’ha realitzat en dues etapes, les quals són:

    § Prototipus

    § Mòdul definitiu

    En la primera etapa, s’ha desenvolupat la idea inicial del projecte, creant una circuiteria més o menys eficient, en la qual s’ha realitzat la programació dels micro-controladors i l’ elaboració de la memòria descriptiva.

    En la següent fase, s’ha millorat aquesta circuiteria, fent-la més eficient. La raó d’aquest desenvolupament és que volem que l’alumne se n’adoni que, des de la idea inicial fins a l’objecte final, el projecte pot sofrir variacions i millores. Les millores implantades al prototipus serviran per reforçar conceptes als alumnes, com ja veurem amb posterioritat.

    6.1 Prototipus – Descripció del Hardware

    Per crear el prototipus del mòdul didàctic hem optat per dividir-lo en diferents apartats, desglossant així el disseny d’aquest. La raó d’haver dividit els diferents apartats el disseny del projecte és perquè és més fàcil realitzar el disseny de petit problemes, que no pas de grans problemes. Aquests apartats/mòduls són perfectament diferenciables per a l’alumne en el prototipus subministrat. D’aquesta manera, tenint una noció global de l’idea a implementar, anirem solucionant un per un els diferents mòduls de que consta el prototipus.

    Així dons, aquest constarà dels següents mòduls:

    § MCU principal

    § MCU secundari

    § LCD

  • Memoria Descriptiva

    16

    § TECLAT

    § Descodificador

    § Elements de Memòria

    § Controlador de leds

    § Esquema de la Màquina Senzilla

    § Software dels diferents MCU’s

    En l’annex 2 podem veure unes fotografies del prototipus amb els diferents mòduls identificats.

    Els quals s’interconexionen de la següent manera:

    LCD

    SENZILLAMÀQUINA

    SOFTWARE

    TECLAT

    MCU - 2

    MCU - 1 ELEMENTS DE MEMÒRIACONTROLADOR DE LEDS

    DESCODIFICADOR

    Figura 4. Esquema modular del prototipus

    Com es pot observar en l’esquema de la figura nº 3, el micro-controlador principal o MCU-1 és qui controla tots els dispositius annexes. Podem veure que d’aquest parteixen tres bussos diferents, dos són de dades i un de direccions.

    El bus nº1 és de dades i és comparteix entre els mòduls LCD i TECLAT, amb dues senyals per poder direccionar l’habilitació dels dos mòduls anteriors. El bus nº 2 es de direccions, l’utilitzarem per a seleccionar els diferents dispositius (biestables). I per últim, el tercer bus, que és de dades, l’utilitzem per a comunicar-nos amb el mòdul MCU-2 o micro-controlador secundari.

  • Memoria Descriptiva

    17

    El mòdul LCD conté en el seu interior una pantalla LCD de 20 caràcters per 4 línies i el controlador necessari per al seu bon funcionament i comunicació amb el mòdul MCU-1.

    El mòdul TECLAT inclou un teclat matricial de 12 tecles, amb el corresponent controlador per al seu funcionament i comunicació amb el mòdul MCU-1

    El mòdul Descodificador s’utilitzarà per seleccionar els diferents dispositius del següent mòdul.

    El mòdul Elements de Memòria contindrà en el seu interior uns dispositius que tenen la propietat d’emmagatzemar les dades suministrades que provenen del mòdul anterior, recordant així els dispositius seleccionats. Aquest mòdul també atacara al mòdul de la Màquina Senzilla

    El mòdul Controlador de Leds, com diu el mateix nom, contindrà un controlador per atacar el mòdul de la Màquina senzilla.

    El mòdul de la Màquina Senzilla inclourà en el seu interior l’esquema de la figura nº 2, construit a partir de leds, com ja s’ha explicat amb anterioritat.

    I per últim el mòdul MCU-2, que contindrà el micro-controlador secundari, que controlarà el Diagrama d’estats, el Diagrama de Computador Digital i l’exemple de Descodificació de Direccions.

    En el mòdul definitiu conservarem aquesta organització del sistema, però comprimirem alguns d’aquests blocs per fer-los més efectius.

    6.1.1 Mòdul MCU-1

    Com ja hem explicat amb anterioritat, aquest governarà i es comunicarà amb la resta de mòduls, podent parlar de l’unitat central.

    Després d’haver decidit conscientment quina marca de micro-controladors utilitzarem, s’haurà de escollir la família més adequada per als nostres propòsits. Per decidir aquest punt, haurem de saber les prestacions necessàries que ha de tenir aquest, per així poder governar i comunicar-se amb la resta de mòduls. Segons l’esquema de la figura nº 3, haurem de tenir en compte una sèrie de punts.

    Punts a tenir en compte:

    - Un bus de 8 bits per comunicar-se amb el mòdul LCD i TECLAT.

    - 3 bits de control per poder governar el mòdul LCD, segons el tipus de LCD escollit.

    - 1 bit de control per poder habilitar el mòdul TECLAT.

    - Un bus de direccions de 7 bits per atacar el mòdul Descodificador, poden seleccionar fins a 128 dispositius diferents.

  • Memoria Descriptiva

    18

    - 5 bits a repartir entre bits de control i resta de senyals necessàries per controlar els mòduls Descodificador, Elements de Memòria i el Controlador de Leds

    - Un bus de comunicació sèrie, per poder rebre i transferir dades des del bloc MCU –2.

    - 1 pin d’interrupcions externes al MCU

    - I finalment els pins necessaris per al funcionament del micro-controlador.

    Finalment tenim:

    8 pins de bus de dades3 pins de control LCD1 pin de control TECLAT7 pins de direccions5 pins control/senyal2 pins comunicació sèrie1 pin interrupcions externes+ X pins funcionament micro-controlador

    TOTAL: 27 pins + X funcionament MCU

    Taula 2. Nº de pins necessaris

    Així doncs necessitem un micro-controlador de 27 pins + X pins de funcionament.

    Segons la marca que hem escollit, aquesta subministra MCU’s amb diversos encapsulats:

    - Encapsulats DIP 28 amb 22 pins destinats a entrada/sortida (essent aquesta sèrie insuficients per a les nostres necessitats).

    - Encapsulats DIP 40 amb una mitja de 33 pins destinats a entrada/sortida (essent aquesta sí, suficient per els nostres propòsits).

    Com ja hem explicat amb anterioritat, el micro-controlador que hem d’utilitzar ha de tenir memòria de programa de tipus Flash, amb la fi de poder realitzar un bon desenvolupament del software de l’equip, i provar així les diferents versions d’aquest observant el seu progrés.

    Un altre punt que tindrem en compte, alhora d’escollir el MCU, és que la família escollida mantingui relació amb les assignatures de la carrera, com Sistemes Electrònics amb micro-controladors on s’estudia i s’utilitza la sèrie 16F8xx.

    Així doncs, seguirem en la línia de l’assignatura Sistemes Electrònics amb micro-controladors i utilitzarem la família 16F8xx.

    Microchip subministra amb format DIP els micro-controladors 16F874 i 16F877, amb 4k i 8k respectivament, de memòria de programa. Preu per preu (10,7 € el micro-controlador

  • Memoria Descriptiva

    19

    16F874 i 10 € el micro-controlador 16F877) , surt més econòmic utilitzar el 16F877, ja que incorpora el doble de memòria que l’altre micro-controlador.

    Un cop escollit el micro-controlador a utilitzar, haurem de saber la configuració mínima de funcionament.

    Configuració mínima:

    § Un cristall per generar el rellotge del MCU

    § Una patilla per realitzar el reset del MCU

    En referència al rellotge del sistema, segons la configuració del MCU i el cristall col·locat en la placa, pot anar a diferents freqüències.

    MODE FREQÜÈNCIA

    XT 455 kHz2,0 MHz4 MHz

    HS 8 MHz16 MHz

    Taula 3. Freqüències de rellotge del 16F877

    Com que la nostra aplicació no es un procés d’alta velocitat, no necessitem una excessiva velocitat en l’execució del programa, per tant es va decidir utilitzar una freqüència de rellotge de 4 MHz, ja que és la velocitat de rellotge que habitualment és sol col·locar en aplicacions d’ aquests micro-controladors.

    En aquest tipus de micro-controladors no es indispensable utilitzar un oscil·lador per generar el rellotge, només hem d’interconnectar el cristall entre unes patilles del MCU, ja que ell mateix ja porta incorporat el circuit necessari per generar l’ona del rellotge (s’han de connectar uns condensadors ceràmics per filtrar sorolls).

    Referent al reset del sistema el col·locarà un polsador en paral·lel amb un circuit capacitiu ( per evitar els rebots d’aquest), per provocar el reset. (Veure plano nº 1 apartat Planos)

    Pel que fa els bussos i resta de senyals de control, aquestes s’hauran de distribuir segons les necessitats de cada mòdul externs al MCU.

    El dispositiu escollit ,16F877, compte amb:

    - 3 ports d’entrada/sortida de 8 bits (PortB, PortC i PortD)

    - 1 port de 6 bits (PortA)

    - 1 port de 3 bits (PortE)

  • Memoria Descriptiva

    20

    Una distribució geogràfica d’aquestes senyals és:

    Figura 5. Disponibilitat geogràfica del MCU

    D’aquesta manera tenim que el bus de dades i control compartit entre els mòduls LCD i TECLAT tindrà la següent distribució:

    Nom Pin Pin DIP Tipus I/O DescripcióLCD: Output, Bit de dades nº 0

    TECLAT: Input, Fila nº 1 (pin 1)

    LCD: Output, Bit de dades nº 1

    TECLAT: Input, Fila nº 2 (pin 2)

    LCD: Output, Bit de dades nº 2

    TECLAT: Input, Fila nº 3 (pin 3)

    LCD: Output, Bit de dades nº 3

    TECLAT: Input, Fila nº 4 (pin 4 )

    LCD: Bit de dades nº 4

    TECLAT: Col·lumna nº 3 (pin 7)

    LCD: Bit de dades nº 5

    TECLAT: Col·lumna nº 2 (pin 6)

    LCD: Bit de dades nº 6

    TECLAT: Col·lumna nº 1 (pin 5)

    LCD: Bit de dades nº 7

    TECLAT: No connectat

    RC0 15 O LCD: *Comando/Dato

    RC1 16 O LCD: Read/*Write

    RC2 17 O LCD: *Enable

    RC4 23 O TECLAT: *Enable

    RB0 33 I Interrupció externa procedent del mòdul TECLAT

    Llegenda I: Input O: Output I/O: Input/Output

    RD6

    RD7

    RD2

    RD3

    RD4

    RD5

    O

    O

    20

    21

    22

    27

    28

    29

    30

    I/O

    I/O

    O

    O

    RD0 19 I/O

    I/ORD1

    Taula 4. Configuració del bus nº1 compartit entre mòduls LCD i TECLAT

  • Memoria Descriptiva

    21

    Podem veure que no tot el PortD esta configurat com a sortida del MCU. En el cas de comunicació amb el mòdul LCD, aquest estarà configurat en mode sortida, i l’accés a aquest és realitzarà a través d’enquesta (justificat en l’apartat mòdul LCD). I en el cas del mòdul TECLAT, la part baixa del PortD es configurarà com a entrada, i la part alta com a sortida. L’accés aquest últim mòdul és realitzarà a través d’interrupcions externes al MCU (justificat en l’apartat mòdul TECLAT).

    A part del bus de dades, també necessitem unes senyals de control per habilitar la comunicació entre el Mòdul MCU-1 amb els mòduls LCD i TECLAT. Les senyals necessàries per a controlar el mòdul LCD seran , i per controlar el mòdul TECLAT seran

    De la mateixa manera tenim que el bus de direccions i control que ataca al mòdul Descodificador té la següent distribució:

    Nom Pin Pin DIP Tipus I/O DescripcióRB1 34 O Bit de Direccions nº 1

    RB2 35 O Bit de Direccions nº 2

    RB3 36 O Bit de Direccions nº 3

    RB4 37 O Bit de Direccions nº 4

    RB5 38 O Bit de Direccions nº 5

    RB6 39 O Bit de Direccions nº 6

    RB7 40 O Bit de Direccions nº 7

    RA0 2 O Rellotge del Sistema (Clock)

    RA1 3 O Enable Decodificador

    RA2 4 O Shift Registers - S0

    RA3 5 O Shift Registers - S1

    RA5 7 O Clear Mòduls

    Llegenda O: Output

    Taula 5. Configuració del bus nº2 de direccions i control que ataca al mòdul Descodificador

    Pel bus de direccions utilitzarem el PortB del micro-controlador, utilitzant els pins . Aquests pins estaran configurats com a sortida. Aquest bus ens serà útil per seleccionar els diferents dispositius que ataquen al mòdul de la Màquina Senzilla (esquema de leds). Pel que fa, la part de control tindrem els pins , que habilitaran i controlaran els dispositius que ataquen al mòdul de la Màquina Senzilla.

  • Memoria Descriptiva

    22

    I per últim el bus de comunicacions amb el mòdul MCU-2, que te la següent distribució:

    Nom Pin Pin DIP Tipus I/O DescripcióRC6 25 O Bit de transmisió de dades via sèrie

    RC7 26 I Bit de recepció de dades via sèrie

    Llegenda I: Input O: Output

    Taula 6. Configuració del bus nº3 amb protocol sèrie

    L’últim bus del sistema l’utilitzarem per transmetre informació entre el bloc MCU-1 i el bloc MCU-2, ja que elements d’aquest últim bloc necessiten certes variables del programa del MCU-1 pel seu funcionament.

    Per tal de protegir contra curt circuits i millorar el fan-out del MCU s’han instal·lat uns buffers als bussos nº 1 i nº 2. (Veure plano nº 1 apartat Planos), ja que la màxima corrent subministrada pels pins del MCU no és suficient per proporcionar un nivell lògic acceptable a la circuiteria perifèrica al bloc MCU-1

    DispositiuCorrent pins de Sortida

    24,4 mA16F877 25 mA74LS244 64 mA

    Total corrent mòdulsLimit de la franja de correntNivell aceptable

    Estimació de Intensitat dels Mòduls en alguns pins

    24 dispositius * 0,8 mA13 dispositius * 0,4 mA

    Mòdul Elements de MemòriaMòdul Controlador de Leds

    Taula 7. Nivell necessari de corrent de les senyal de control

    Algunes de les senyals de control que ataquen els mòduls externs al MCU han de tenir una potència més elevada, a causa dels molts dispositius penjats en aquestes senyals, tal i com demostrem a la taula nº 7.

    Per solucionar aquest problema, intercalem entre el bus i el mòdul adjunt un buffer TTL (74LS244) per augmentar la potència de les senyals, evitant així els possibles desperfectes a la unitat MCU.

  • Memoria Descriptiva

    23

    6.1.2 Mòdul MCU-2

    La funció d’aquest mòdul es la de controlar el Diagrama de Flux de les instruccions, l’esquema del Computador Digital i l’exemple de descodificació de les direccions dels bancs de memòria on resideix el programa de demostració.

    Recordem que aquest mòdul rep informació via sèrie a través del mòdul MCU-1. Aquesta informació anirà dirigida al el Diagrama de Flux, l’esquema del Computador Digital hi ha l’exemple de descodificació de les direccions.

    Les senyals necessàries per a controlar els dispositius anteriorment esmentats que formen part d’aquest bloc són:

    - 3 senyals per a seleccionar fins a 6 estats del Diagrama d’Estats.

    - 1 senyal per habilitar el Diagrama d’Estats.

    - 2 senyals per a seleccionar els 3 leds que formen el Diagrama de Computador Digital.

    - 1 senyal per habilitar el Diagrama del Computador Digital.

    - 6 senyals per a l’exemple de la Descodificació de les direccions dels bancs de memòria.

    - 2 senyals per a la comunicació sèrie.

    - I finalment els pins necessaris pel seu funcionament.

    3 senyals de selecció1 senyal d'habilitació2 senyals de selecció1 senyal d'habilitació6 senyals de dades2 pins comunicació sèrie+ X pins funcionament micro-controlador

    TOTAL: 15 pins + X funcionament MCU

    Taula 8. Nº de pins necessaris

    Així doncs necessitem un micro-controlador de 15 pins + X pins de funcionament.

    Seguint la tònica de l’anterior MCU, aquest també serà de la marca Microchip, però no amb tants recursos com l’anterior. El model escollit es 16F873 amb 4 kBytes de memòria de programa, subministrat amb un encapsulat DIP de 28 pins, destinant 22 a entrada/sortida.

  • Memoria Descriptiva

    24

    A igual que l’anterior MCU, aquest no tindrà una aplicació on sigui necessària una gran velocitat d’execució. S’ha decidit col·locar la mateixa configuració que el MCU-1.

    Pel que fa les senyals necessàries pel control del Diagrama d’Estats i del Diagrama del Computador Digital són:

    Nom Pin Pin DIP Tipus I/O DescripcióRB1 22 O Bit de Direccions nº 1

    RB2 23 O Bit de Direccions nº 2

    RB3 24 O Bit de Direccions nº 3

    RB4 25 O Senyal d'habilitació Diagrama d'Estats

    RB5 26 O Bit de Direccions nº 1

    RB6 27 O Bit de Direccions nº 2

    RB7 28 O Senyal d'Habilitació Diagrama Computador Digital

    Llegenda O: Output

    Taula 9. Senyals necessàries pel control del Diagrama d’Estats i el diagrama del Computador Digital

    Les senyals RB1:RB3 estaran connectades a un descodificador 3-8 línies (74ls138), de tal manera que podem descodificar i il·luminar a través de leds en quin estat ens trobem de la instrucció. La senyal d’habilitació d’aquest descodificador serà RB4

    Les senyals RB5:RB6 estaran connectades a un descodificacor 2-4 línies (74ls139), de tal manera que podem descodificar i il·luminar a través de leds els tres estats possibles del Diagrama del Computador Digital. La senyal d’habilitació d’aquest descodificador serà RB7.

    Pel que fa les senyals necessàries pel control de l’exemple de descodificació de les direccions dels bancs de Memòria, aquestes senyals seran:

    Nom Pin Pin DIP Tipus I/O DescripcióRC0 11 O Bit de Direccions nº 10

    RC1 12 O Bit de Direccions nº 9

    RC2 13 O Bit de Direccions nº 8

    RC3 14 O Bit de Direccions nº 7

    RC4 15 O Bit de Direccions nº 6

    RC5 16 O Senyal AS*

    Llegenda O: Output

    Taula 10. Senyals necessàries pel control de l’exemple de la Descodificació dels bancs de memòria

    La funcionalitat d’aquestes senyals ja es veurà en l’annex pertinent.

  • Memoria Descriptiva

    25

    Pel que fa les senyals necessàries de la comunicació sèrie, aquestes són:

    Nom Pin Pin DIP Tipus I/O DescripcióRC6 17 O Rx de la comunicació sèries

    RC7 18 I Tx de la comunicació sèries

    Llegenda I:Input O: Output

    Taula 11. Senyals comunicació sèrie

    Una altra raó per la qual s’ha col·locat aquest MCU és perquè l’usuari pugui observar les trames de dades enviades des de el mòdul MCU-1 a aquest mòdul. A través de l’analitzador lògic, podrem veure la transferència d’aquestes dades.

    6.1.3 Mòdul LCD

    Com el seu nom indica, aquest mòdul alberga una pantalla LCD en seu interior, junt amb la circuiteria necessària per al seu funcionament.

    Tal i com hem explicat amb anterioritat, a causa del volumen de dades a presentar a l’usuari, és va decidir utilitzar un Display LCD de 20 caràcters per 4 línies. Gràcies al tamany d’aquest, podem col·locar més informació en pantalla sense haver d’accedir-hi amb tanta freqüència.

    La pantalla LCD escollida és el model PC 2004- H de Powertip (veure datasheet en annex 10), que incorpora en el seu interior el controlador S6A0069 de Samsung. Aquest controlador és molt semblant al controlador Hitachi 44780, però amb una inicialització diferent.

    Aquestes senyals de la taula següent provenen del mòdul MCU-1, recordant que estan compartides amb el mòdul TECLAT. Per enviar correctament aquestes dades a un dels dos dispositius que pengen d’aquest bus, hem provis de dues senyals de direccions per a seleccionar un dels dos dispositius (RC2 i RC4).

    La raó de tenir 2 senyals de direccions, és perquè els buffers que separen el bus de dades dels dispositius tenen una habilitació per nivell lògic baix, en canvi la pantalla LCD té la senyal d’habilitació per nivell alt. Si haguéssim fet la descodificació amb una sola senyal de direccions, alhora de deseleccionar a través de la direcció la comunicació amb la pantalla LCD i habilitar-la pel Mòdul TECLAT, el LCD interpretava dades incorrectes per culpa de la diferencia entre nivells lògics..

  • Memoria Descriptiva

    26

    Per separar el bus de dades amb el mòdul LCD s’ha intercalat un buffer tristate (74LS245) entre aquests dos, evitant que el LCD interpreti dades incorrectes quan aquestes no es dirigeixen per a ell.

    Les senyals necessàries per a comunicar-se i habilitar aquest mòdul són:

    Nom Pin Tipus I/O DescripcióRD0 I LCD: Bit de dades nº 0

    RD1 I LCD: Bit de dades nº 1

    RD2 I LCD: Bit de dades nº 2

    RD3 I LCD: Bit de dades nº 3

    RD4 I LCD: Bit de dades nº 4

    RD5 I LCD: Bit de dades nº 5

    RD6 I LCD: Bit de dades nº 6

    RD7 I LCD: Bit de dades nº 7

    RC0 I LCD: *Comando/Dato

    RC1 I LCD: Read/*Write

    RC2 I LCD: Direcció - *Enable

    Llegenda I: Input

    Taula 12. Senyals del mòdul LCD

    Les senyals que provenen de la pantalla LCD són:

    Nom Pin Pin DIP Tipus I/O Descripció

    Vss 1 - GNDVcc 2 - Vcc

    Vo 3 - Control ajust contrastRS 4 I Dada/*Comando

    R/*W 5 I Read/*WriteE 6 I Enable

    DB0 7 I Dada busDB1 8 I Dada bus

    DB2 9 I Dada busDB3 10 I Dada bus

    DB4 11 I Dada busDB5 12 I Dada bus

    DB6 13 I Dada busDB7 14 I Dada bus

    A 15 - Retroalimentacó (+)K 16 - Retroalimentacó (-)

    Llegenda I: Input

    Taula 13. Senyals provinents del controlador S6A0069 del LCD

  • Memoria Descriptiva

    27

    El pin Vo s’utilitza per regular el contrast de la pantalla LCD, i els pins A i K (no utilitzats) són per alimentar la il·luminació de la pantalla.

    Després tenim les senyals de control del controlador :

    - La senyal RS indica al controlador S6A0069 que la data enviada es una ordre o bé una data a escriure en la pantalla.

    - La senyal R/*W indica al controlador si estem lleguin o escrivint

    - I la senyal Enable que habilita la comunicació agafant les dades o bé col·locant les al bus.

    Si observem les senyals d’habilitació, podem veure que la senyal que habilita al mòdul té com a nivell lògic actiu el nivell baix, i en canvi la senyal que habilita el controlador S6A0069 té com a nivell lògic actiu el nivell alt. Essent la senyal d’habilitació del mòdul i del controlador les mateixes, es resoldrà aquesta diferencia de nivel actiu invertint la senyal del controlador S6A0069, tal i com es pot veure en plano nº 2 apartat Planos.

    Per a poder accedir, i utilitzar aquesta, tenim tres possibles formes de realitzar-ho:

    § Per enquesta

    § Per accés directe

    § Per interrupcions

    Encara que aquest mòdul és la part potser més visible del demostrador, no es pas un element de gran complexitat, i els accessos que realitzem al mòdul seran totalment controlats. Amb això volem dir que, no és necessari que l’accés a aquest mòdul sigui per interrupcions, ni per enquesta, podent utilitzar-lo per accés directe.

    La raó d’aquesta decisió, és simplement la complexitat de realitzar ela accessos per interrupcions o per enquesta.

    Si l’accés fos per interrupcions, hauríem de crear un circuit que ens provoques una interrupció cada vegada que el LCD estigués lliure després d’haver executat la dada enviada. El que comportaria un disseny massa rebuscat.

    Si l’accés fos per enquesta, després d’enviar cada dada s’haurien de tornar a configurar els ports del MCU com a entrades, per d’aquesta manera poder llegir la bandera de no ocupat del controlador del LCD, comprovant-ho cada vegada que enviéssim una dada o comando.

    En canvi si realitzéssim l’accés per accés directe, quan enviéssim alguna dada al mòdul LCD, només hauríem d’esperar un temps marcat per el fabricant. Aquest ens diu que tarda

  • Memoria Descriptiva

    28

    en realitzar l’operació, i que no s’enviem cap altra dada sense haver transcorregut aquest temps.

    Per a que el controlador S6A0069 del LCD interpreti les dades enviades, s’ha de realitzar una seqüència amb la senyal d’habilitació. Aquesta s’ha de mantenir a 500 ns com a mínim en nivell alt, i després, transcorregut aquest temps, s’ha de posar en nivell baix.

    6.1.4 Mòdul TECLAT

    Una altra part del sistema és el mòdul TECLAT que serveix perquè l’usuari pugui interactuar amb el demostrador.

    Aquest mòdul alberga en el seu interior un teclat matricial de 12 tecles, junt amb el seu controlador, per a una comunicació eficient amb el mòdul MCU-1.

    Les senyals necessàries per a comunicar-se i habilitar aquest mòdul són:

    Nom Pin Tipus I/O DescripcióRD0 O TECLAT: Fila nº 1 (pin 1)

    RD1 O TECLAT: Fila nº 2 (pin 2)

    RD2 O TECLAT: Fila nº 3 (pin 3)

    RD3 O TECLAT: Fila nº 4 (pin 4 )

    RD4 I TECLAT: Col·lumna nº 3 (pin 7)

    RD5 I TECLAT: Col·lumna nº 2 (pin 6)

    RD6 I TECLAT: Col·lumna nº 1 (pin 5)

    RD7 I TECLAT: No connectat

    RC4 I TECLAT: *Enable

    RB0 O Interrupció externa procedent del mòdul TECLAT

    Llegenda I: Input O: Output

    Taula 14. Senyals del mòdul TECLAT

    Com ja hem dit en l’apartat anterior, aquest bloc comparteix el bus de dades amb el mòdul LCD. Per distingir en quin d’aquests blocs ens dirigim tenim la senyal d’habilitació. Al igual que al mòdul LCD, aquest bloc incorpora un buffer tristate (74LS244).

    Al contrari del mòdul anterior, per accedir ha aquest bloc haurem de realitzar-ho a través de interrupcions. Hem d’utilitzar aquesta tècnica perquè no podem saber l’interval de temps que l’usuari estarà sense prémer una tecla.

    L’avantatge de fer servir aquesta tècnica és que quan el mòdul tingui alguna dada nova, ell mateix ens provocarà una interrupció (a través de lògica combinacional) perquè anem a buscar-la. En canvi si utilitzéssim la tècnica d’enquesta, hauríem d’estar observant sempre el teclat. D’aquesta manera podem saber si l’usuari ha premut alguna tecla, sense perdre així molt de temps del MCU.

  • Memoria Descriptiva

    29

    Hem col·locat unes resistències de pull-up a les columnes del teclat i unes resistències de pull-down a les files d’aquest, perquè el mòdul ens provoqui una interrupció quan l’usuari premi una tecla; tal i com mostra la figura nº 6.

    1 2 3

    4 5 6

    *

    7

    0 #

    8 9

    IN

    IN

    IN

    OUT

    OUT

    OUT

    OUT

    Figura 6. Connexió Teclat 12 tecles

    Aquesta manera, quan l’usuari premi una tecla, es forma un divisor de tensió. Amb una relació adequada d’aquestes resistències, passarem de tenir un nivell baix a un nivell alt (TTL) a la sortida2 que correspongui la tecla. Si realitzem una or de totes les files, hi ho connectem al pin RB0 de PortB, quan l’usuari premi qualsevol tecla es provocarà una interrupció. Un cop s’hagi provocat la interrupció, passarem a realitzar la recercade la tecla polsada.

    En aquest mòdul, hem de fer especial atenció amb els condensadors de desacoplo de l’alimentació. Ja que en l’accionament de l’interruptor d’alimentació del demostrador, les portes Or provoquen un glitch a la patilla que ataca l’interrupció del mòdul MCU-1, provocant una interrupció falsa.

    Un detall que hem de tenir en compte és que si l’usuari manté premuda una tecla amb un interval de temps indefinit (veure figura nº 7), el teclat repeteix el valor d’aquesta cada 61 ms, provocant una interrupció a cada flanc de pujada. Aquesta propietat del teclat no ens interessa que succeeixi, ja que alhora de polsar les diferents opcions que pot tenir el software desenvolupat , el valor de l’opció pot estar repetit i provocar entrar en una opció a la qual no teníem intenció d’entrar. Aquest punt el resoldrem a través del software.

    2 Nota: Considerem com a entrades al Teclat les columnes, i com a sortides les files d’aquest. El buffer 74LS244 te configurat el buffer 1A com a entrada al mòdul (columnes) i el buffer 2A com a sortides del mòdul (files)

  • Memoria Descriptiva

    30

    Figura 7. Forma d’ona que provoca el teclat per una fila quan es polsa una tecla

    En la figura anterior podem veure la forma d’ona que sorgeix d’una fila quan l’usuari prem una tecla durant un temps indefinit. Si observem el detall, veiem el rebots electromecànics que s’ocasionen quan es polsa una tecla (detall que solucionarem a través del sofware).

    6.1.5 Mòdul Descodificador

    El mòdul Descodificador ens servirà per seleccionar els diferents dispositius que ataquen al mòdul de la Màquina Senzilla. A través del bus de direccions provinent del MCU-1 descodificarem els dispositius dels mòduls Elements de memòria i Controlador de Leds.

    Aquest bloc estarà composat per 4 descodificadors (com es pot veure en plano nº 3 apartat Planos), dividits en dues etapes.

    § Primera Etapa: 1 Descodificador 3 a 8 línies

    § Segona etapa: 3 Descodificadors 4 a 16 línes

    Primera etapa ataca a l’habilitació dels descodificadors de la següent etapa, i aquests últims seleccionen directament els dispositius que controlen el mòdul de la Màquina Sencilla.

  • Memoria Descriptiva

    31

    Les senyals necessàries per a controlar aquest mòdul són:

    Nom Pin Pin DIP Tipus I/O DescripcióRB1 34 I Bit de Direccions nº 1

    RB2 35 I Bit de Direccions nº 2

    RB3 36 I Bit de Direccions nº 3

    RB4 37 I Bit de Direccions nº 4

    RB5 38 I Bit de Direccions nº 5

    RB6 39 I Bit de Direccions nº 6

    RB7 40 I Bit de Direccions nº 7

    RA0 2 I/O Rellotge del Sistema (Clock)

    RA1 3 I Enable Decodificador

    RA2 4 I/O Shift Registers - S0

    RA3 5 I/O Shift Registers - S1

    RA5 7 I/O Clear Mòduls

    Llegenda I:Input I/O: Input/output

    Taula 15 . Senyals del mòdul Descodificador

    El mòdul MCU-1 podrà establir una comunicació amb aquest bloc, si tenim la senyal Enable Descodificador (RA1). Quan aquesta senyal tingui el valor lògic adequat, el valor que hi hagi en el bus de direccions (RB7:RB1) del mòdul MCU-1 serà descodificat, i per tant, atacarà al dispositiu que es volia seleccionar.

    El bus de direccions es divideix en dues parts (com es pot veure en plano nº 3 annexes Planos) , les senyals que s’utilitzen en la descodificació de la primera etapa, i les senyals que s’utilitzen en la segona etapa de descodificació.

    Les senyals Clock, Clear, S0 i S1 són propagades al següent bloc.

    6.1.6 Mòdul Elements de Memòria

    Aquest bloc atacarà el mòdul Controlador de leds i el bloc Màquina Senzilla. La funció que esperem d’aquest bloc és la de mantenir un nivell lògic alt a la seva sortida, si aquest s’ha seleccionat; alhora, si es torna ha seleccionar, el bloc ha de baixar la seva sortida a nivell baix.

  • Memoria Descriptiva

    32

    La funció del bloc en forma de taula de la veritat està en la següent figura.

    T Qn Qn+1

    0 0 00 1 11 0 11 1 0

    Figura 8. Taula de veritat i funció en forma d’ona de l’Element de Memòria

    Com podem observar en la gràfica, la funció d’aquest bloc es la de dividir la freqüència d’entrada al bloc. Aquesta funció correspon a un biestable tipus T.

    Aquest tipus de biestables es poden implementar de dues formes diferents:

    § Utilitzant biestables tipus D

    § O bé utilitzant biestables tipus JK

    Aquest mòdul, en l’elaboració del Mòdul Didàctic definitiu sofreix una millora. Aquest s’integra en dispositius lògics programables. A causa del software d’elaboració dels programes o equacions lògiques per gravar aquests tipus de dispositius, els biestables tipus D amb sortida negada no existeixen en les llibreries estàndards, impedint-nos així, realitzar un divisor de freqüència. Per aquesta raó s’ha decidit realitzar la implementació d’aquest mòdul amb biestables JK, per poder demostrar més endavant conceptes explicats en Sistemes Digitals I.

    Per a aconseguir un biestable tipus T, a partir d’un biestable tipus JK, hem de realitzar les següents connexions:

    JK

    CLK QINOUT

    Figura 9. Biestable JK en forma de biestable tipus T

    Com podem veure en el plano nº 4 apartat planos, aquests biestables estan configurats en mode asíncron, i activats per flanc de pujada. Aquests han d’estar configurats asincronament, ja que si estiguessin configurats sincronament, no podrien fer la funció de divisors de freqüència.

  • Memoria Descriptiva

    33

    Les entrades a aquest bloc provenen del mòdul Descodificador que junt amb les sortides són:

    Nom Pin Tipus I/O Descripció Nom Pin Tipus I/O Descripció3D1 I Bit 0 Descodificador 1 Q1 O Sortida biestable 1

    3D2 I Bit 1 Descodificador 1 Q2 O Sortida biestable 2

    3D3 I Bit 2 Descodificador 1 Q3 O Sortida biestable 3

    3D4 I Bit 3 Descodificador 1 Q4 O Sortida biestable 4

    3D5 I Bit 4 Descodificador 1 Q5 O Sortida biestable 5

    3D6 I Bit 5 Descodificador 1 Q6 O Sortida biestable 6

    3D7 I Bit 6 Descodificador 1 Q7 O Sortida biestable 7

    3D8 I Bit 7 Descodificador 1 Q8 O Sortida biestable 8

    3D9 I Bit 8 Descodificador 1 Q9 O Sortida biestable 9

    3D10 I Bit 9 Descodificador 1 Q10 O Sortida biestable 10

    3D11 I Bit 10 Descodificador 1 Q11 O Sortida biestable 11

    3D12 I Bit 11 Descodificador 1 Q12 O Sortida biestable 12

    3D13 I Bit 12 Descodificador 1 Q13 O Sortida biestable 13

    3D14 I Bit 13 Descodificador 1 Q14 O Sortida biestable 14

    3D15 I Bit 14 Descodificador 1 Q15 O Sortida biestable 15

    3D16 I Bit 15 Descodificador 1 Q16 O Sortida biestable 16

    RA0 I Rellotge del Sistema (Clock) RA0 O Rellotge del Sistema (Clock)

    RA1 I Enable Decodificador RA1 O Enable Decodificador

    RA2 I Shift Registers - S0 RA2 O Shift Registers - S0

    RA3 I Shift Registers - S1 RA3 O Shift Registers - S1

    RA5 I Clear Mòduls RA5 O Clear Mòduls

    Llegenda I: Input O: Output

    Entrades al mòdul Sortides al mòdul

    Taula 16 . Senyals d’entrada i sortidaal Mòdul Emenets de Memòria x 3

    Si recordem el mòdul anterior, aquest tenia 3 descodificadors en la segona etapa, els quals ens proporcionen les sortides per a aquest mòdul. Cada sortida dels descodificadors anteriors ataca l’entrada d’un biestable, i la sortida d’aquest, atacarà bé un led del mòdul de la Màquina Senzilla, o bé la lògica del mòdul Controlador de Leds.

    En resum, aquest mòdul està format per una bateria de biestables tipus T, amb la funció de dividir per dos la freqüència de l’ona d’entrada.

    Si observem el plano nº 4 annexes planos, les senyals de control es propaguen al següent mòdul. La senyal de Clear s’utilitza per posar a zero l’estat dels biestables.

  • Memoria Descriptiva

    34

    6.1.7 Mòdul Controlador de Leds

    Com ja hem dit amb anterioritat, aquest mòdul atacarà al bloc de la Màquina Senzilla, realitzant un control sobre els leds de que esta format el mòdul anterior.

    Per fer més atractiva la demostració del funcionament de programes preestablerts en l’esquema de la figura nº 2 (La màquina senzilla), dotarem a través d’aquest mòdul un moviment aquests leds.

    L’únic sistema eficient per dotar de moviment aquests leds, és utilitzant registres de desplaçament. Variant la freqüència de rellotge d’aquests, la sensació de velocitat serà major o menor. L’avantatge d’utilitzar els registres de desplaçament és que els leds es mantindran encesos mentre no es realitzi un reset del sistema .

    Agruparem , en lo possible, els leds de la figura nº2 (Màquina Senzilla) en grups de 4 i 8 leds, ja que els registres de desplaçament es distribueixen amb 4 o 8 sortides.

    Com que l’efecte que hem d’aconseguir és de moviment línial (un led darrera l’altre), ens interessen els registres de desplaçament de carrega sèrie, amb sortida paral·lel, de forma que inicialment els leds estiguin apagats, i la dada d’entrada es vagi desplaçant fins al final del tram seleccionat.

    Les senyals d‘entrada a aquest mòdul són:

    Nom Pin Tipus I/O Descripció

    Q1 I Sortida biestable 1Q2 I Sortida biestable 2

    Q3 I Sortida biestable 3Q4 I Sortida biestable 4

    Q5 I Sortida biestable 5Q6 I Sortida biestable 6

    Q7 I Sortida biestable 7Q8 I Sortida biestable 8

    Q9 I Sortida biestable 9

    Q10 I Sortida biestable 10

    Q11 I Sortida biestable 11Q12 I Sortida biestable 12

    Q13 I Sortida biestable 13Q14 I Sortida biestable 14

    Q15 I Sortida biestable 15Q16 I Sortida biestable 16

    RA0 I Rellotge del Sistema (Clock)

    RA2 I Shift Registers - S0

    RA3 I Shift Registers - S1RA5 I Clear Mòduls

    Llegenda I:Input

    Taula 17. Senyals d’entrada al mòdul Controlador de LEds

  • Memoria Descriptiva

    35

    La senyal de Clock provindrà del mòdul MCU-1, i serà la que marcarà la velocitat de desplaçament dels leds. Aquesta velocitat pot ser modificada per l’usuari.

    Les senyals S0 i S1 són necessàries pel funcionament dels registres de desplaçament, ja que els indica en quin sentit tenen que desplaçar les dades (dreta o esquerra)

    Finalment, la senyal Clear posa a zero tots els registres de desplaçament, forçant-los a posar un zero a les seves sortides.

    El mòdul estarà composat per 7 registres de desplaçament de 4 bits i de 6 registres de desplaçament de 8 bits, en total 13 trams de leds, el que comporta 76 leds connectats a aquest mòdul. La resta de leds serà controlada pel mòdul Elements de Memòria.

    6.1.8 Software MCU-1

    Per a desenvolupar aquest software teniem dues opcions:

    § Utilitzar llenguatge C.

    § O bé utilitzar llenguatge Enssamblador.

    L’avantage que hi ha entre utilitzar el llenguatge Enssamblador respecte al Llenguatge C és que, alhora de compilar un codi realitzat en llenguatge C amb un compilador per a transformar-ho a llenguatge màquina, aquest ocuparà més espai i no serà tant eficient com si s’hagués elaborat amb llenguatge Enssamblador.

    En l’annex nº 4 tenim la comparació entre una rutina d’alta importancia en el codi en els dos llenguatges.

    6.1.8.1 LCD

    Abns de poder utilitzar la pantalla LCD, hem de realitzar una inicialització d’aquesta. Sense aquesta inicialització el controlador S6A0069 no interpretarà correctament les dades enviades.

    Aquesta seqüència és:

  • Memoria Descriptiva

    36

    Figura 9. Inicialització del controlador S6A0069

    Un cop realitzada aquesta inicialització ja podrem utilitzar la pantalla LCD. Hem de recordar que perquè el controlador S6A0069 interpreti les dades hem de seguir un ordre en l’enviament de dades/comandos.

    Ordre enviament dades/comandos:

    - Col·loquem dada al port de dades

    - Línia de R/*W en el mode d’escriptura

    - Línia RS a 0 o 1, segons sigui comando o dada

    - Línia d’Habilitació a 1

    - 500 ns d’espera mínim

    - Línia d’Habilitació a 0

  • Memoria Descriptiva

    37

    A part, aquest controlador accepta una sèrie d’ordres que ens ajuden a utilitzar la pantalla LCD, els comandos utilitzats en aquest projecte són:

    Comando RS R/*W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

    Clear LCD 0 0 0 0 0 0 0 0 0 1Cursor posició inicial 0 0 0 0 0 0 0 1 -

    Mode de introducció 0 0 0 0 0 0 0 1 I/D S

    Pantalla On/Off 0 0 0 0 0 0 1 D C BMode de desplaçament 0 0 0 0 0 1 S/C R/L - -

    Funció 0 0 0 0 1 DL Línies Font - -

    Direcció DDRAM 0 0 1 Direcció DDRAM

    Taula 18. Codi comandos acceptats pel controlador S6A0069

    On cada comando significa:

    - Clear LCD : borra la pantalla LCD i situa el cursor en la posició inicial (posició 0X00)

    - Cursor posició inicial: el cursor es col·loca en la posició 0X00

    - Mode de instrucció: configura la direcció del cursor. Si I=1 incrementa la posició del cursor, en canvi si I=0 es decrementa. Si S=1, es realitza el desplaçament, del contrari no es realitza l’operació.

    - Pantalla On/Off: si D=0 s’apaga el Display, del contrari es manté encès. Si C=0 el cursor no es visible, en canvi si C=1 el cursor es visible. Si B=1 el cursor parpadeixa, del contrari si B=0, aquest es manté sense cap efecte.

    - Mode de Desplaçament: segons el valor del bit S/C es crearà un efecte dels caràcters de la pantalla. El bit R/L indica el sentit del moviment, si es cap a la dreta o esquerra.

    - Funció: el bit DL indica el tipus de interface a utilitzar. Aquest controlador pot utilitzar-se amb un bus de dades de 4 bis o de 8 bits. El bit N especifica el número de línies que tindrà la pantalla. I per últim el bit F, que especificarà el tamany de la font a imprimir.

    - Direcció DDRAM: col·loca la dada enviada a la posició especificada de la pantalla LCD.

    En la següent taula especifiquem les direccions exactes de la pantalla LCD utilitzada en aquest demostrador. Aquestes direccions ens seran útils alhora de col·locar els caràcters en el punt on nosaltres vulguem.

  • Memoria Descriptiva

    38

    0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13

    0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4A 0x4B 0x4C 0x4D 0x4E 0x4F 0x50 0x51 0x52 0x53

    0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27

    0x54 0x55 0x56 0x57 0x58 0x59 0x5A 0x5B 0x5C 0x5D 0x5E 0x5F 0x60 0x61 0x62 0x63 0x64 0x65 0x66 0x67

    Taula 19. Posicions de Memòria del LCD PC 2004- H

    En el Annex 5 tenim més informació sobre els comandos del controlador S6A0069 de la pantalla LCD, amb les diferents combinacions dels bits anteriorment explicats.

    Com ja hem dit amb anterioritat, utilitzem la pantalla LCD en mode d’accés directe, llavors hem de saber exactament el temps que s’ha d’estar sense realitzar una altra operació, per poder tornar a enviar una altra dada, i sigui interpretada correctament per el controlador del LCD.

    Aquests temps varien segons l’ordre a executar per el controlador S6A0069, els qual són:

    Constant Temps d'execució

    LCD_CLEAR 1,53 msLCD_HOME 1,53 msADRESS_DDRAM 39 usLCD_MODE_DEC 39 usLCD_MODE_INC 39 usLCD_ON 39 usLCD_OFF 39 usLCD_CURSOR_ON 39 usLCD_BLINK 39 usLCD_CURSOR_LEFT 39 usLCD_CURSOR_RIGHT 39 usLCD_LEFT 39 usLCD_RIGHT 39 us

    Taula 20. Temps d’execució dels comandos

  • Memoria Descriptiva

    39

    6.1.8.2 TECLAT

    La rutina per realitzar la recerca de la tecla premuda del teclat és la que més temps de desenvolupament a ocupat en la elaboració del software. Ja que aquesta potser molt llarga i pot trigar un temps considerable a executar-se. Això pot esdevenir a causa del rebots electro-mecànics, ja que com aquests es filtren a través del software, provocaria un retard considerable en l’execució de la rutina d’atenció a la interrupció del Teclat. Si aquest retard es considerable, pot provocar la pèrdua d’altres interrupcions de diferents dispositius.

    Una de les opcions que tenim per a reduir el temps d’execució de la rutina es depurant-la, per fer-la més eficient.

    L’altra opció que tenim és la d’habilitar les interrupcions mentre s’està executant la rutina d’atenció a la interrupció del Teclat. Deshabilitant la interrupció del teclat i habilitant la resta, donaríem pas a l’execució de rutines més ràpides, deixant en segon pla la rutina d’atenció al Teclat i tornant a la seva execució un cop acabada la rutina de l’altre dispositiu.

    Aquesta manera, tindríem una interrupció reentrant i evitaríem la pèrdua de interrupcions dels altres dispositius.

    Per poder realitzar l’operació anterior, s’ha de seguir una seqüència:

    - Baixar la bandera d’interrupció pendent de INTB

    - Deshabilitar la interrupció B

    - Habilitar les interrupcions, ja que es deshabiliten quan es dona servei a qualsevol interrupció

    Aquesta seqüència es col·locarà al principi de la rutina d’atenció a la interrupció del Teclat.

    De la mateixa manera que s’ha deshabilitat la interrupció del teclat, un cop es dona servei a aquesta (ja que és una forma d’evitar sorolls en la línia d’interrupció). Un cop s’acaba s’ha de tornar a habilitar aquesta, ja que de no ser així no podria entrar cap més interrupció procedent del teclat.

    Un cop produïda la interrupció del Teclat s’haurà de realitzar la recerca de la tecla polsada. Per poder esbrinar-la, primerament hem de llegir les files del Teclat, ja que de la manera que està connectat hi haurà un ù lògic en la fila de la tecla polsada. Llavors, per saber quina columna correspon la tecla polsada, anirem col·locant seqüencialment zeros lògics a les columnes fins que desaparegui l’ù lògic de la fila anterior.

    La seqüència a seguir en la recerca de la tecla serà:

  • Memoria Descriptiva

    40

    RRF AUX2

    COM COL ++RRF AUX

    PORTD=W

    W=PORTDNOP

    *

    COM COL>2

    END

    HABILITA INTB

    VALOR2=AUXTECLAANTERIOR=AUXTECLA

    TECLA=AUXTECLA

    HABILITA INTERRUPCIONS

    CLEAR TEMPS

    TECLA=ERROR

    *

    80 ms

  • Memoria Descriptiva

    41

    On cada punt de la rutina significa:

    1. En aquest punt baixem el flag que indica que s’ha produït la interrupció del Teclat a través del pin RB0, a més a més deshabilitem aquesta interrupció i habilitem la resta d’interrupcions.

    2. Es configura el PortD del MCU de forma que els 4 bits de menys pes siguin entrades al MCU i els 4 bits de més pes com a sortides d’aquest. Es configura d’aquesta manera, perquè amb la part baixa del bus llegirem les files del teclat, ja que en la part alta hem de poder col·locar els zeros lògics per esbrinar la Tecla.

    3. Assignació de diferents valors a variables auxiliars que utilitzem en l’escaneix. La variable Aux2 l’utilitzem per saber en quina columna ens trobem, i la variable Aux es la que transmetem al portD.

    4. Realitzem l’operació de escriure i llegir el portD, per veure el valor que hi ha en totes les files del Teclat.

    5. Fem una And del valor llegit del portD per quedar-nos amb la part baixa de les dades, o sigui, només el valor de les files.

    6. Per tal de filtrar els rebots del teclat, fem una espera de 20 ms.

    7. Després del temps prudencial per evitar els rebots, tornem a llegir el portD i fem una And amb una constant, per només quedar-nos amb la part baixa del bus de dades.

    8. En aquest punt, si el valor de les files no és igual que el valor anteriorment llegit, interpretem la interrupció com a soroll i passaríem al punt 23.

    9. En el cas de ser iguals, comprovarem si el nivell lògic del pin que provoca la interrupció està en nivell alt, de no ser així també interpretarem que la interrupció ha estat provocada per soroll, i passaríem al punt 23.

    10. Assignació de valors a les variables auxiliars. Assignem el primer zero a la columna nº1.

    11. Col·loquem els zeros a la columna indicada, i llegim el nou valor de les files del Teclat.

    12. Realitzem una And amb una constant, per quedar-nos només amb els valors de les files llegit anteriorment.

    13. En aquest punt comprovem si el valor de les files és el mateix que l’anterior. En el cas de siguin iguals, vol dir que no es la columna indicada i passaríem al punt 14. En el cas de ser diferents, haurem trobat la columna de la tecla polsada.

    14. Si el número de columnes escaneixades es major de 2, ho considerem error i passem al punt 23, de no ser així passem al punt 15. El número de columnes a escaneixar no pot ser més gran de 2 perquè només tenim 3 columnes en el nostre teclat (0-1-2).

    15. Rotem cap a la dreta els valor de Aux2 i Aux, i incrementem el valor de les columnes escaneixades. Rotem Aux2 per saber que estem a la columna següent, i també rotem Aux, perquè d’aquesta manera desplazem el zero que hem de col·locar a la columna següent.

  • Memoria Descriptiva

    42

    16. En aquest punt ja hem trobat el valor de la tecla polsada i sumarem el valor llegit de les files amb el número de columna en la que ens trobem. Tot seguit, cridem a una rutina perquè ens descodifiqui del valor binari al valor en decimal de la tecla.

    17. Comprovem si el valor de la tecla és igual que l’anterior valor. De ser així, aquesta pot ser una repetició provocada per el teclat i saltarien a l’estat 21. De no ser així, sabem que el valor es el valor d’una nova tecla, i saltaríem a l’estat 18.

    18. Assignació de variables. Assignem a la variable Tecla, Anterior i valor2 el valor de la tecla polsada per l’usuari.

    19. Habilitem la interrupció INTB del teclat, i la resta d’interrupcions.

    20. Sortim de la rutina d’atenció a la interrupció.

    21. En el cas de que el valor de la tecla sigui igual que l’anterior, comprovem si el valor del temps de repetició de tecla és inferior a 40 ms, sí això és així vol dir que s’ha estat un espai de temps llarg sense polsar una tecla, i la tecla que s’ha polsat és igual a l’anterior. En cas de complir-se aquesta condició saltarem a l’estat 22, del contrari saltarem a l’estat 23.

    22. Realitzem un reset del timer que utilitzem per saber si ha estat un rebot de teclat.

    23. En el cas de que el valor de la tecla sigui igual que l’anterior, comprovem si es tracta d’un rebot del teclat. Si el valor de la tecla obtingut està entre 80 ms i 120 ms de la tecla anterior, ho considerem com un nou valor. De no ser així, considerem que ha estat una repetició del teclat i passem l’estat 23.

    24. Assignem a la variable tecla, el valor d’error.

    6.1.8.3 La rutina de interrupció del MCU-1

    La rutina d’atenció a les interrupcions del MCU-1 dóna servei a les interrupcions dels perifèrics utilitzats en aquest mode. Les possibles fonts d’interrupció que tenim en el mòdul MCU-1 són les següents:

    § Interrupció externa a través del PORTB

    § Timer 2

    § Timer 1

    La interrupció externa a través del pin de menys pes del PORTB serà provocada pel mòdul Teclat. Hem de recordar que la subrutina d’atenció a aquest habilita la resta de interrupcions, mentre s’està executant aquesta, deixant pas a altres fonts de interrupció.

    La raó de que la rutina a la interrupció tingui aquesta propietat és per no perdre interrupcions de Timer 2. El Timer 2 es utilitzat per comptar, en milisegons, el temps que transcorreix entre les pulsacions d’una tecla apretada per part de l’usuari.

    L’interval que hi ha entre interrupcions del Timer 2 és de 10 ms. En el cas de que no hi haguessin les interrupcions habilitades, quan estiguéssim en la rutina d’atenció al teclat, al

  • Memoria Descriptiva

    43

    ser molt llarga (eliminació de rebots a través de software) tindríem la mesura de l’interval de temps entre les pulsacions totalment inexacte.

    La font d’interrupció del Timer 1 és utilitzada pel rellotge que ataca al mòdul Controlador de Leds. Cada vegada que s’exhaureix el temps programat en el Timer 1 és dona servei a la rutina d’aquest rellotge. Aquesta canvia el nivell lògic del pin del MCU-1 que ataca al mòdul Controlador de Leds.

    En tenir una rutina d’atenció a les interrupcions amb la possibilitat de donar servei a noves interrupcions, mentre s’està executant la subrutina del teclat, hem de tenir especial compte alhora de salvar les variables de l’estat del micro-controlador. Aquestes variables s’han de salvar cada cop que entrem a la rutina de servei a qualsevol interrupció, però en espais de memòria diferent.

    Imaginem per uns moments que es dona servei a la subrutina d’interrupció del teclat, llavors entrem a la rutina d’atenció a les interrupcions i el primer que fem es salvar les variables d’estat del micro-controlador. Mentre s’està executant aquesta rutina, el Timer 2 provoca una sol·licitud de servei, i s’accedeix a l’assistència d’aquesta, llavors tornaríem a entrar a la rutina d’atenció a les interrupcions i guardaríem les variables d’estat del micro-controlador. La qüestió és on guardar aquestes variables, no podem sobrescriure les variables anteriosr, perquè sinò perdríem l’estat del micro-controlador (al no haver acabat de donar servei a la rutina del teclat i no haver tornat encara al programa principal). Llavors, hauríem de tenir la precaució de tenir diferents variables per salvar l’estat del micro-controlador, per a cada font d’interrupció, ja que no és sobrescriurant perquè no tindrem dues vegades donant servei a la interrupció del mateix dispositiu.

    Una altra característica de la rutina d’atenció a les interrupcions és que aquesta està prioritzada en tres nivells, els quals corresponen a les diferents fonts que poden provocar una interrupció. Com podem veure en la figura següent, l’ordre d’aquest prioritat és:

    § Servei a la interrupció Timer 2

    § Servei a la interrupció Timer 1

    § Servei a la interrupció externa del PORTB

    Podem veure en la següent figura el diagrama de blocs de la rutina d’atenció a les interrupcions, provocades en el MCU-1, on cada estat significa:

    1. En aquest estat salvem les variables d’estat del micro-controlador, perquè quan tornem al programa principal estiguem en la mateixa situació que abans de saltar a la rutina d’atenció a la interrupció.

    2. Comprovem si la interrupció ha estat provocada per el desbordament del timer 2, de ser així saltarem a l’estat 3, en cas contrari passarem a l’estat 7.

    3. En aquest estat copiem les variables de l’estat del micro-controlador, salvades en l’estat número 1, però en les posicions especifiques per a la interrupció del timer 2.

  • Memoria Descriptiva

    44

    4. En aquest punt s’executa el codi destinat al timer 2, on s’incrementa el valor del comptador de mesura del temps entre pulsacions del teclat.

    5. En aquest estat es restaurem les variables d’estat del MCU-1, per tot seguit retornar al programa principal.

    6. Retorn d’interrupció al programa principal.

    7. En aquest estat comprovem si la interrupció ha estat provocada per el desbordament del timer 1, el qual s’utilitza per a canviar el nivell lògic del pin del rellotge que ataca al mòdul Controlador de Leds. De ser certa la condició, saltarem a l’estat número 8, en cas contrari passarem a l’estat 12.

    8. En aquest punt, copiem les variables de l’estat del micro-controlador salvades en l’estat número 1, però en les posicions especifiques per a la interrupció del timer 1.

    9. S’executa el codi associat al timer 1.

    10. En aquest estat es restaurem les variables d’estat del MCU-1, per tot seguit retornar al programa principal.

    11. Retorn d’interrupció al programa principal.

    12. En aquest punt comprovem si la petició d’interrupció ha estat provocada pel pin del PORTB, provinent del teclat.

    En el cas de ser així, passarem a executar la rutina associada a aquesta interrupció, de no ser així saltarem a l’estat número 27 per retornar al programa principal.

    13. En aquest punt, copiem