Luque Moraño Practica5 InfInd
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.