Enginyeria Tcnica Industrial (esp. Electrnica Industrial) B.O.E. 6-Mar-2001 Asignatura: Imparticin: Curso: Profesores: 4683 InIormatica Industrial (9 creditos) En Extincion 2 Curso-Anual 2012-2013 Javier Antich !"#$%& (" ")*+",%- ./ (" ")"+0 (" 12.3 4#0)50#%*0+6% %)*6#67%(%8 3. (" 9%:0 (" 12.3 4#0)50#%*0+6% 0+(6)%+6%8 #09;)6 #%#6 <) % *+%5=& (" ;) >;& 6 1# : "? 6 )*"+!%@ +&A 131 Se pretende utilizar un microcontrolador 8051 para analizar los numeros que un usuario escribe por un teclado. En concreto, el analisis consiste en determinar si cada numero introducido es o no capica. Ademas, en el caso de que sea capicua, el correspondiente numero debe ser almacenado en una memoria EEPROM 24LC64 de Microchip. Conexionado Tal y como muestra la Iigura 1, el microcontrolador (C) tiene dos dispositivos conectados a el: un teclado y una memoria EEPROM 24LC64. La conexion del teclado se lleva a cabo via un interIaz serie RS-232. Por otro lado, la memoria se conecta al C a traves de un enlace I2C conIigurado en modo estndar. Figura 1 Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich Interaccin con el teclado En el Pinnacle 52, para simular la conexion RS-232 del teclado con el C debeis seguir los siguientes pasos: 1. Acceder a Project Project Options Serial Port Simulation, y en la opcion Main UART seleccionar Term Window. 2. Acceder a View UARTS UART Terminal Emulation y os aparecera la ventana de la Iigura 2. Cualquier pulsacion que hagais sobre ella con vuestro teclado provocara el envio al 8051 del codigo ASCII en version de 8 bits asociado con la tecla pulsada. Dicho codigo quedara almacenado en el registro SBUF del C. 3. En la seccion de inicializaciones de vuestro programa, debeis conIigurar el interIaz RS-232 en modo 0 shift register, habilitar la recepcion de datos SCON.4/REN, y activar la interrupcion vinculada al puerto serie. De esta manera, la pulsacion de cualquier tecla causara la ejecucion de la rutina de servicio de interrupcion del puerto serie (en el texto que sigue, esta rutina se denomina RSI serial ). Como Iuncion principal, RSI serial debe ir acumulando los digitos del numero que este siendo actualmente introducido por el usuario mediante el teclado (notar que se debera ignorar cualquier pulsacion de tecla que no se corresponda con ningun digito numerico, con la unica excepcion del espacio en blanco). Una vez el numero ha sido completamente escrito (el Iin de un numero viene dado por la pulsacion del caracter espacio en blanco), RSI serial ha de: Comprobar que el numero es capicua. Comprobar que el numero no esta Iormado por mas de 8 digitos. Si el numero no es capicua o esta Iormado por mas de 8 digitos, entonces se descarta. En caso contrario, el numero se debe almacenar en la memoria EEPROM 24LC64. En la memoria EEPROM 24LC64 solo se podran almacenar los 5 ultimos numeros capicua introducidos por el usuario (por simplicidad, cada numero capicua ocupara 8 posiciones de memoria de la EEPROM, es decir, se utilizara una posicion de memoria de la EEPROM por cada posible digito del numero capicua; ademas, notar que los numeros capicua deberan ser almacenados en Iormato BIG-ENDIAN, es decir, los digitos mas signiIicativos del numero ocuparan las posiciones de memoria mas bajas). La direccion de memoria a partir de la cual se deberan almacenar los 5 ultimos numeros capicua vendra dada por una constante denominada EADDRNUMBERS (0000h EADDRNUMBERS 1FFFh). Mas concretamente: el ltimo numero capicua introducido ocupara el rango de direcciones |EADDRNUMBERS0, EADDRNUMBERS7|, 2 Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich el penltimo numero capicua introducido ocupara el rango de direcciones |EADDRNUMBERS8, EADDRNUMBERS15|, el antepenltimo numero capicua introducido ocupara el rango de direcciones |EADDRNUMBERS16, EADDRNUMBERS23|, el ante-antepenltimo numero capicua introducido ocupara el rango de direcciones|EADDRNUMBERS24, EADDRNUMBERS31|, el ante-ante-antepenltimo numero capicua introducido ocupara el rango de direcciones |EADDRNUMBERS32, EADDRNUMBERS39|. Figura 2 A traves del teclado, los siguientes comandos deben poder ser ejecutados: #M: imprime el mayor de los 5 ultimos numeros capicua introducidos por el usuario. #m: imprime el menor de los 5 ultimos numeros capicua introducidos por el usuario. #Ld 1 ,.., d n donde 1 n 4 y 0 d i 9 para todo i 1 i n: de los 5 ultimos numeros capicua introducidos por el usuario, imprime aquellos que contienen los digitos d 1 ,.., d n . Por ejemplo, suponiendo que los 5 ultimos numeros capicua son 7412147, 202, 515, 23032, y 1, #L0,2 imprime 202 y 23032, #L1 imprime 7412147, 515, y 1, #L4,5,7,8 no imprime ningun numero. Para poder implementar los comandos previamente especiIicados, haremos uso de un display tipo LCD que posee el teclado simulado. Cualquier dato que reciba el teclado por el interIaz serie sera representado automaticamente sobre dicho display. En consecuencia, el C debe simplemente escribir el dato deseado en el registro SBUF para que este sea visualizado. En el Pinnacle 52, el LCD del teclado queda deIinido de nuevo por la ventana de la Iigura 2. 3 Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich Interaccin con la memoria En el Pinnacle 52, para simular la conexion I2C de la memoria con el C debeis seguir los siguientes pasos: 1. Acceder a Project Project Options I2C Bus Configuration. Os aparecera la ventana de la Iigura 3 desde donde podreis conIigurar las lineas de los puertos de E/S del C que representaran las lineas SDA y SCL del bus I2C. Aunque se pueden simular dos buses denominados 1 y 2, realizar unicamente la conIiguracion para el primero de ellos. Figura 3 2. Acceder a Project Project Options Serial I2C EEPROM 24LC64. Os aparecera la ventana de la Iigura 4 desde donde podreis asignar una direccion al dispositivo esclavo conectandolo, ademas, al bus 1 previamente conIigurado. 4 Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich Figura 4 De acuerdo con el esquema de la Iigura 1, el C actuara como dispositivo maestro mientras que la memoria lo hara como esclavo. Notar que, en estas circunstancias, NO sera necesario arbitrar el uso de bus por la imposibilidad de que dos o mas dispositivos maestros puedan coincidir intentando transmitir. Vuestro programa debera generar la seal de reloj (SCL) y de datos (SDA) para comunicarse con la memoria de acuerdo con el mencionado protocolo y el data sheet de la EEPROM que esta disponible en Campus Extens. Para poder escribir y leer datos sobre el dispositivo 24LC64 debereis programar dos subrutinas que implementen las operaciones BYTE WRITE y RANDOM READ, que se encuentran descritas en el data sheet de dicha EEPROM. Ambas operaciones llevan a cabo la transIerencia de un solo byte de datos a (byte write)/desde (random read) la memoria. Como principal requisito, la velocidad de estas transferencias deber ser la mxima permitida por el bus I2C, es decir, 100 Kbps. Adicionalmente, la generacin de las seales SCL y SDA se har haciendo uso de un nico temporizador. Por ltimo, debis asumir que la frecuencia de trabajo del C es de 24 Mhz. 5 Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich #0)&6 ("+%#6 0)"& 6 970+*%)*"& ENTREGA DE LA PRACTICA: Cada grupo debera entregar un nico informe en donde se explique la solucion dada al problema planteado, y se presente el programa comentado asi como varios resultados de simulacion obtenidos con el Pinnacle 52 que demuestren la validez de la solucion. En la primera pgina del inIorme debera constar el nombre de la asignatura, el ttulo de la prctica, el curso acadmico, el nombre de los autores del informe y, Iinalmente, el nmero de grupo asignado. La entrega de la practica se hara por Campus Extens a traves de la opcion 'Entrega Telemtica Prctica - Anticipada o 'Entrega Telemtica Prctica - Ordinaria segun sea el caso. Ambas opciones estaran disponibles hasta las 23h 54` 59 del dia de vencimiento del plazo de entrega especiIicado en la primera pagina de este documento. Se os permitira enviar un nico fichero en formato comprimido (.RAR o .ZIP) que debera contener dos carpetas, una con el inIorme (.ODT, .DOC, o .PDF) y otra con los Iicheros Iuente del programa (.ASM). Adicionalmente, debereis dejar una copia impresa del informe en el casillero del proIesor. Para ello, tendreis como margen de tiempo tres dias habiles contando a partir de la Iecha de Iinalizacion del plazo. IMPORTANTE: El alumno que no siga las indicaciones arriba apuntadas ser penalizado con hasta 0.5 puntos menos sobre la nota final de la prctica. No se aceptar ninguna prctica despus del plazo de entrega establecido. EVALUACION: Tras la entrega de la practica, el proIesor propondra a sus alumnos un dia y una hora para la defensa oral de la misma, que consistira en preguntas concretas sobre ciertos aspectos de los programas desarrollados. La nota Iinal de la practica, siempre que la defensa se haya superado de forma satisfactoria, se calculara de la siguiente manera: 25 InIorme 75 Solucion a los problemas IMPORTANTE: El alumno que no supere la defensa oral de la prctica suspender la misma con independencia del resto de notas que haya obtenido. Ante copias totales o parciales de prcticas se aplicar el procedimiento sancionador estipulado en el reglamento acadmico de la universidad. 6