Luque Moraño Practica5 InfInd

download Luque Moraño Practica5 InfInd

of 9

Transcript of Luque Moraño Practica5 InfInd

  • 7/26/2019 Luque Morao Practica5 InfInd

    1/9

    INFORME DE LA PRCTICA 5

    INFORMTICA INDUSTRIAL

    RAFAEL IGNACIO LUQUE MORAO

    CURSO 2014/2015

  • 7/26/2019 Luque Morao Practica5 InfInd

    2/9

    PRCTICA N 5 DE INFORMTICA INDUSTRIAL. Curso 2014-15

    Sea un sistema compuesto por un sistema central de control y hasta treinta

    dispositivos con los que se comunica. Se desea implementar la conectividad

    entre el sistema de control y los restantes. Se optar por una topologa en

    forma de bus, con enlace serie asncrono. El sentido ser unidireccional, de

    modo que el sistema central actuar como maestro emisor y los restantes

    como esclavos receptores. El direccionamiento se resolver mediante la

    asignacin de un octeto IDa cada nodo de la red, que ser transportado como

    primer carcter del mensaje enviado por el maestro para especificar a qu

    esclavo va dirigido el mensaje.

    Debido a la funcionalidad de cada esclavo, se ha establecido la siguiente

    estructura de la trama de un mensaje:

    ID: Se trata del identificador de la direccin del esclavo

    T: Es un octeto que indica el tamao en octetos del resto de la trama

    O: Es la orden enviada por el maestro al esclavo ID. Su tamao y

    significado podr variar de esclavo a esclavo

    SC: Es un octeto, resultante de la suma acumulada de los octetos

    precedentes, desde ID hasta el ltimo de O.

    ID T O SC

  • 7/26/2019 Luque Morao Practica5 InfInd

    3/9

    Para la implementacin de un eficiente mecanismo de discernimiento por parte

    de cada esclavo de si un mensaje va dirigido o no a l, y, en caso negativo,

    ignorar el trfico por la red de comunicacin hasta que termine el mensaje en

    curso, se seguir el siguiente criterio basado en uno de los modos especiales

    de configuracin del puerto serie estndar de la familia MCS-51. El modo 2 o el

    3 con opcin de enlace multiprocesador (bit SM2=1 en registro SCON) se

    caracteriza por funcionar como una UART de 9 bits; en el modo 2 la frecuencia

    es fija (Fosc/32)x2SMODy en el modo 3 es programable (de la misma forma que

    en el clsico modo 1), adems de que estando el bit SM2=1 se cumple que la

    bandera de recepcin serie, RI, slo se activar si el noveno bit del carctertransmitido (que queda en el bit RB8 de SCON) vale 1. Esta caracterstica

    permite disear la capa lgica de la comunicacin de la manera que sigue.

    Por parte del emisor, cuando se transmite el primer carcter de la trama (ID), el

    noveno bit se emite como un 1 (bit TB8 en SCON), pero a partir del segundo

    octeto, todos los caracteres se emiten con el noveno bit a 0 (no se pierda de

    vista que de los nueve bits de cada carcter, los ocho primeros son los de cada

    octeto original, y el noveno tiene como misin permitir que lleguen los

    caracteres a todos los receptores o slo al que va dirigido el resto del mensaje).

    Por parte de cada esclavo, inicialmente tendr el bit SM2 a 1, para permitir

    recibir el primer carcter de la trama puesto que su noveno bit, en RB8, estar

    a 1. Al evaluar este carcter (en SBUF), que es el ID, si no fuese el suyo no

    har nada y seguir esperando nuevos caracteres, pero si fuese este ID el

    suyo entonces pondr SM2=0. Con esto se consigue que el resto de caracteres

    de la trama, con su noveno bit a 0, sean recibidos por este esclavo, mientras

    que los restantes esclavos ni se enterarn de que hay trnsito en el canal de

    comunicacin puesto que los caracteres que fluyen todos ellos tendrn su

    noveno bit a 0 y por ello el hardware del puerto serie (con SM2=1) los ignorar

    y no avisar a la capa lgica, mediante la bandera RI, de que se ha recibido un

    carcter. El esclavo del ID, una vez finalizada la trama, volver a poner SM2=1.

    Como es lgico, en un receptor la capa lgica de la comunicacin ignorar el

  • 7/26/2019 Luque Morao Practica5 InfInd

    4/9

    noveno bit de cada carcter (que queda en RB8 al recibirse) y trabajar slo

    con los ocho primeros, en SBUF.

    La ventaja que tiene esta manera de filtrar o no cada carcter es que un

    esclavo receptor tan slo dedicar tiempo a evaluar el primer carcter de cada

    trama que no va dirigida a l.

    Para la verificacin simulada y la real supnganse las siguientes rdenes:

    01h-PH-PL: Generar por P3.7 una seal de reloj de perodo P ciclos mquina.PH es el octeto alto y PL el bajo. El ciclo de trabajo ser del 50%

    02h: Cancelar la seal de reloj (P3.7 reposar a 0 lgico)

    03h-N: Poner al estado N.7 el bit que indican los tres bits inferiores de N

    en el puerto indicado por bits 3 y 4 de N (por ejemplo, si N=96h

    habr que poner a 1 el bit 6 del puerto P2)

    Suponiendo que se trabaja con microcontroladores de la familia MCS-51 tipo

    AT89S52, a 12 MHz, y que se desea utilizar una velocidad de comunicacin fija

    de Fosc/32 (con el fin de economizar recursos hardware para la comunicacin),

    se deber:

    a) Disear la capa lgica de un esclavo, cuyo ID ser el que en sumomento se asigne a cada grupo en el laboratorio de prcticas. Elesclavo no tendr nada que hacer entre orden y orden, por lo que serecomienda que entre en modo de bajo consumo (la generacin de laseal PWM se recomienda hacerla con el temporizador 2 y gestionarlapor interrupciones) cuando est esperando un mensaje.

    b) Disear fsicamente el sistema esclavo, suponiendo que se utilizar,para la capa fsica del enlace, la norma TIA/EIA-422 o 485 (deberjustificarse por cul se opta).

  • 7/26/2019 Luque Morao Practica5 InfInd

    5/9

    La programacin se realizar enteramente en lenguaje C.

    Cuntese con que en el laboratorio se dispondr fsicamente del sistema

    maestro emisor para as poder probar experimentalmente el funcionamiento del

    esclavo diseado con el ID asignado.

  • 7/26/2019 Luque Morao Practica5 InfInd

    6/9

    Cdigo de iniciacin esclavo:

    Configuracin de SCON:

    Configurar PUERTO SERIE en MODO 2: UART 9 bits con velocidad fija de

    Fosc/32 (SMOD=1):

    o SM0=1 y SM1=0 //configura en MODO 2

    o SM2=1 // Permite comunicacin multiprocesador. Para el modo 2, RI=1

    slo si el 9 bit (en RB8) =1

    o REN=1 //habilita la recepcin.

    Configuracin de PCON

    SMOD=1 //para que la frecuencia de comunicacin del puerto serie sea de

    Fosc/32. SMOD es un bit que se encuentra en el registro PCON, el cul no es

    direccionable bit a bit. Por tanto, se utiliza la instruccin PCON=0x80;

    Configuracin del temporizador 2 (generacin de PWM de la tarea 1) T2CON

    No se arranca, eso lo hace la tarea 1

    Habilitacin de interrupciones:

    Se requiere habilitar la recepcin serie, pues la recepcin se va a implementar mediante

    interrupciones. As podr implementarse el modo de bajo consumo

    Funcin principal

    La funcin principal no har nada debido a que el sistema se va a gestionar mediante

    interrupciones. La nica instruccin presente es PCON=0X81; que activa el modo idle

    de bajo consumo (recurdese que tambin haba que dejar activado el bit SM2 de dicho

    registro, por eso el valor asignado a PCON. En este modo, las patillas de entrada de los

    puertos siguen activas, por lo que la recepcin se puede iniciar con xito con la

    deteccin del bit de inicio, a cero lgico. Si la recepcin serie ha tenido xito, el bit RI

    se activar y se atender la rutina de servicio asociada al puerto serie. En ese momento,

    el modo de bajo consumo se desactiva automticamente. Cuando termina el cdigo de la

    rutina de servicio, el programa vuelve a ejecutarse por la instruccin posterior a la

  • 7/26/2019 Luque Morao Practica5 InfInd

    7/9

    instruccin que activ el modo de bajo consumo. Resulta que, como es la nica

    instruccin existente en la funcin principal, sta volver a ejecutarse, poniendo en bajo

    consumo al sistema. Conclusin: despus de cada recepcin serie, el consumo de

    energa decrece. Este hecho puede no tener demasiado impacto positivo en el intervalo

    de tiempo empleado en enviar la trama completa (por cada byte, una interrupcin serie y

    una ejecucin de IDL=1). El verdadero sentido del empleo del modo de bajo

    consumo es que entre orden y orden, no se conoce el tiempo que el sistema estar sin

    hacer nada.

    Orden 1: generacin por P1.0 de una seal PWM de periodo P ciclos mquina. PH

    es el octeto alto y PL el bajo. Ciclo de trabajo del 50%.

    Es necesario tener en cuenta que la frecuencia de reloj del microcontrolador es de 12

    MHz (1 s para cada ciclo mquina). Entonces, la seal tendr P s de duracin. Para

    esta labor se va a utilizar el temporizador 2, de modo que provoque una interrupcin

    cada P/2 microsegundos. Al finalizar cada temporizacin, se cambiar el estado del pin

    P1.0 (el cambio de estado se lleva a cabo en la rutina de servicio del temp2)

    El modo de operacin ms indicado es el de recarga automtica. Por tanto, hay que

    definir los valores a colocar en los registros RCAP2H y RCAP2L:

    RCAP2H=(-P/2);

    RCAP2L=(-P/2) >> 8;

    Recurdese que PH y PL son dos octetos pasados por el maestro. Esta informacin,

    enviada por el maestro, se guardar en una variable de 2 bytes denominada periodo.

    Como primero se recibe PH, se asigna a la variable periodo y se realiza undesplazamiento de un byte (8 bits) a la izquierda, de forma que se coloque en la parte

    alta de la variable periodo. Al realizar este desplazamiento, el byte que queda en la parte

    baja de periodotiene valor nulo. Por tanto, cuando se reciba el valor de PL, solamente

    habr que sumrselo aperiodo.

    Para garantizar un primer periodo de P/2 microsegundos, es deseable inicializar TH2 y

    TL2 con estos mismos valores

    Previo a estas operaciones, es necesario parar el temporizador:

  • 7/26/2019 Luque Morao Practica5 InfInd

    8/9

    T2CON=0;

    Una vez inicializados los registros, se arranca el temporizador y se habilita las

    interrupciones del timer 2:

    ET2=1 //habilitacin int timer 2

    TR2=1 //Arranque del temporizador dos

    Orden 2: cancelar la seal PWM

    La manera de parar la generacin de la seal PWM es simplemente poniendo a cero el

    bit de arranque del temporizador 2. Adems, se requiere el bit por el cual se generaba elPWM, repose a cero lgico.

    Orden 3: seleccin de un bit de un puerto, para ponerlo a cero o a uno

    El bit de mayor peso especifica si el bit quiere ponerse a uno, o ponerse a cero. La nica

    informacin que me interesa es el valor de dicho bit. Se utiliza una mscara, de forma

    que todos los bits estn a cero, menos el sptimo, que estar a 1. La aplicacin de esta

    mscara (AND lgica con el byte que ha mandado el maestro, guardado en la variableN) pondr a cero todos los bits, excepto el sptimo, que mantendr su valor original. Si

    al aplicar la mscara, el resultado fuera nulo, el motivo es evidente: el sptimo bit tena

    valor nulo. Por tanto, el bit que se seleccione deber de ponerse a cero. En caso

    contrario, se asignar un uno.

    Se utiliza el mismo razonamiento para decidir sobre qu puerto se va a trabajar. En este

    caso, se evala el estado de los bits 3 y 4.

    dem para la eleccin del bit del puerto sobre el que se va a actuar. sta vez, se

    evaluarn los 3 primeros bits.

    Rutina de servicio temporizador 2

    nicamente cambiar de estado la patilla P3.7 y poner a cero la bandera de

    desbordamiento TF2=0 para permitir nuevas interrupciones del temporizador

  • 7/26/2019 Luque Morao Practica5 InfInd

    9/9

    Rutina de servicio del puerto serie.

    Esta es la funcin ms importante del sistema, ya que es la que implementa la correcta

    comunicacin entre emisor y maestro.

    Como el microcontrolador tiene activo el bit SM2, cuando se produzca una peticin de

    interrupcin, esta ser atendida sin problemas.

    El primer byte recibido es siempre el identificador del esclavo destino de la

    comunicacin. Si el identificador recibido coincide con el identificador establecido

    previamente para dicho esclavo, se establecer la comunicacin. En caso contrario, no

    se har nada y se borrar la bandera RI.

    Si se ha establecido la comunicacin, se borra el bit SM2 para seguir recibiendo bytes,

    ya que los siguientes se enviarn con el noveno bit a 0.

    El segundo byte recibido siempre es el tamao del resto de la trama. Se acumula su

    valor a la suma de control, que previamente ha sido actualizado con el valor del ID.

    El tercer byte recibido siempre es el nmero de la orden requerida por el maestro. Se

    guarda su valor en la variable orden y se actualiza SC

    A partir del cuarto byte, la informacin recibida es distinta, en funcin de la orden que

    se haya dado. Por este motivo, se muestran los 3 caminos posibles, en funcin de la

    orden que se haya impuesto

    Para los siguientes bytes se ha seguido el mismo criterio, ofreciendo las diferentes

    posibilidades, en funcin de la orden requerida.

    Siempre que se reciba el ltimo byte, se llamar a la funcinsalir_comunicacion(). sta

    funcin implementa un mecanismo muy simple para saber si se ha establecido

    correctamente la comunicacin y la misma informacin que ha recibido el esclavo, es la

    que ha sido enviada por el maestro. Este mecanismo es muy sencillo y puede ser poco

    robusto, pero para los objetivos de la prctica es suficiente: se compara el valor de SC

    que enva el maestro con el valor de SC calculado por el esclavo. Si coinciden, se ha

    adoptado el criterio de que se pueda ejecutar la orden. En caso contrario, no se ejecutar

    la orden.