Pic Tactil

download Pic Tactil

of 19

description

micros

Transcript of Pic Tactil

  • FACULTAD DE INFORMTICA

    UUUNNNIIIVVVEEERRRSSSIIIDDDAAADDD DDDEEE LLLAAASSS PPPAAALLLMMMAAASSS DDDEEE GGGRRRAAANNN CCCAAANNNAAARRRIIIAAA

    CASTELLANO DAZ, MARIO

    BARRIENTO GONZLEZ, HUMBERTO LUIS

    ALUMNOS:

  • INDICE

    1.- OBJETIVOS pg. 3

    2.- HARDWARE pg. 5

    3.- DESCRIPCIN DEL CDIGO FUENTE pg. 9

    4.- CONCLUSIONES . pg. 18

    5.- ANEXO . pg. 19

    2

  • 1.-OBJETIVOS El objetivo de esta prctica es establecer una comunicacin serie mediante RS232 entre el microcontrolador Micropic 16f84A y el controlador serie SMT3 de la pantalla tctil Touchware 3M que tenemos disponible en el laboratorio de electrnica de la facultad. La comunicacin se realiza con la configuracin serie a 9600 b, 8 bits de datos, sin paridad, un bit de stop y sin control de flujo.

    Para comprobar que el objetivo se ha alcanzado correctamente, se ha realizado la parte de la prctica en la que el Micropic enva un comando al controlador de la pantalla tctil, y otra parte en la que el Micropic recibe la posicin del eje x de la pantalla tctil.

    El comando que se le enva al controlador de la pantalla es el comando FD, el cual configura la pantalla para que devuelva la posicin que indica el punto en el que se toca la pantalla con un conjunto de 9 bytes que representan caracteres ASCII: 1 Carcter de cabecera (01h) 2 Carcter ASCII que indica el primero de los tres dgitos del nmero que representa la posicin del eje x. 3 Carcter ASCII que indica el segundo de los tres dgitos del nmero que representa la posicin del eje x. 4 Carcter ASCII que indica el tercero de los tres dgitos del nmero que representa la posicin del eje x. 5 Carcter de separacin, carcter ASCII que representa la coma (,). 6 Carcter ASCII que indica el primero de los tres dgitos del nmero que representa la posicin del eje y. 7 Carcter ASCII que indica el segundo de los tres dgitos del nmero que representa la posicin del eje y. 8 Carcter ASCII que indica el tercero de los tres dgitos del nmero que representa la posicin del eje y 9 Carcter ASCII que representa el retorno de carro. Al configurar el controlador con este formato, cada vez que se pulse la pantalla tctil, y mientras se mantenga pulsada, el controlador enviar la posicin x,y repetidamente, hasta que se deje de pulsar o se pulse en otra zona de la pantalla.

    Una vez configurada la pantalla, el pic est continuamente recibiendo bytes que le enva el controlador de la pantalla tctil. Cuando recibe el byte que indica el carcter cabecera, el pic se prepara para recibir el primer byte que viene a continuacin, que representa al primer dgito del valor del nmero que representa la posicin en el eje x de la pantalla tctil. Si se divide con lneas verticales la pantalla tctil, se puede saber la zona

    3

  • en la que se ha pulsado con el valor del byte que se ha recibido. Para hacer visual la recepcin del valor por el pic, se hace uso de un led, que parpadea dependiendo de la zona en la que se pulse. Si se pulsa en la zona con valor del eje x= 999-900, parpadea 9 veces, si se pulsa en la zona con valor del eje x= 899-800, parpadea 8 veces, y as hasta que al pulsar en la zona con valor del eje x = 99-0 el led no parpadea.

    Para realizar la prctica primero se consigui comunicar el controlador de la pantalla tctil con el ordenador, utilizando el programa Hyperterminal y el puerto serie rs232 del ordenador. Una vez que se haba probado que el pic enviaba al ordenador y reciba correctamente desde el ordenador los datos, se pas a establecer la comunicacin entre el pic y el controlador de la pantalla.

    4

  • 2.-HARDWARE Para la realizacin de la prctica se ha empleado un circuito montado en una protoboard, por lo que no se ha utilizado el entrenador para micropics que se suele utilizar en esta asignatura. Se ha diseado para poderse usar con una fuente de alimentacin de 5 0.5 voltios para que la comunicacin rs232 sea estable.

    Los componentes utilizados han sido los siguientes: Micropic 16F84A 1 Integrado Max232 1 Cristal de 4 Mhz XT 1 Interruptor 1 Leds 2 Condensadores 33 pF 2 Condensadores 0.1uF 4 Resistencias varias 4 Conector rs322 serie 1 Pantalla tctil y controlador de la misma.

    El circuito que comprende el micropic se mont en la protoboard, conectado

    como se indica en la siguiente figura, utilizando un cristal de 4 Mhz y dos condensadores tipo lenteja de 33 pF cada uno. Se aadi un circuito de reset, con un led rojo que cuando est encendido indica que el pic est en reset. Por ltimo este circuito dispone de un led verde conectado a la patilla rba2 que se utiliza para mostrar al usuario la zona que se ha pulsado de la pantalla, que es dependiente del parpadeo.

    5

  • Para adaptar los valores de voltaje de las seales rs232 a los niveles de voltaje TTL que acepta el micropic se utiliz un circuito integrado max232, que se conect a dos pines del micropic, rb0 para el pin RX y ra0 para TX., y en el otro extremo se conect el controlador de la pantalla, o el puerto serie del ordenador.

    El controlador de la pantalla tctil se alimenta tambin con 5v, y como se indica

    en la gua de referencia del usuario de la pantalla tctil dispone de 7 pines para la comunicacin rs232, de los cuales hemos utilizado tan slo 3 pines, el RX, TX y el GND.

    La pantalla tctil dispone de dos ejes virtuales, eje x y eje y, que en el formato decimal van desde el valor 999 al valor 0 en cada eje, representando las coordenadas con respecto a la esquina inferior derecha en caso de que el cable de conexin de la pantalla est hacia la izquierda. Debajo de la pantalla tctil se ha colocado un folio que divide las distintas franjas verticales, indicando en cada zona el nmero de parpadeos que tiene que dar el led verde cuando se pulsa en cada zona.

    6

  • A continuacin se muestran algunas imgenes del circuito:

    Circuito completo, a la izquierda el conector rs232 para el ordenador montado en la protoboard con el micropic, el integrado max232 y el controlador de la pantalla tctil que est situada a la derecha de la imagen. En medio se observa la fuente de alimentacin que en esta ocasin son cuatro pilas recargables de 1.2 voltios cada una.

    Vista en detalle del controlador de la pantalla tctil y el conector rs232 para la comunicacin del micropic con el ordenador, se observa como cada cable de comunicacin del controlador est marcado para saber a que seal corresponde (segn gua de referencia de la pantalla tctil).

    7

  • Vista en detalle del conexionado del micropic, a la izquierda, y del conexionado del convertidor rs232-ttl max232 a la derecha.

    Vista en detalle de la pantalla tctil dividida en las zonas a indicar por el led.

    8

  • 3.-DESCRIPCIN DEL CDIGO FUENTE

    En el cdigo se definden los pines que sern de salida y entrada para la comunicacin con el micropic con el controlador de la pantalla tctil: De los pines disponibles en el puerto A definimos la el pin 0 como TX y en el pin 2 como salida para el led verde. En el puerto B se utiliza slo el pin0 como pin RX, puerto que tambin es el que activa la interrupcin.

    #DEFINE BANK0 BCF STATUS,RP0 #DEFINE BANK1 BSF STATUS,RP0 TRUE EQU 1 FALSE EQU 0 CTRAN EQU 0XFE ; SOH NEGADO (ASCII), carcter cabecera negado (ctrl+a) #DEFINE RX PORTB,0 #DEFINE TX PORTA,0 #DEFINE LED PORTA,2 DATO EQU 0x0C ;Dato a Transmitir o Recibido RS232 RET1 EQU 0x0D ;para retardo de bit RS232 RET2 EQU 0x0E ;para retardo de bit RS232 CONT8 EQU 0x0F ;Contador de bits en rutinas RX y TX SOH EQU 0x10 ; registro para guardar el byte y comprobar si es el carcter de cabecera NUMORSOH EQU 0x11 ; registro para determinar si leer SOH o el NUMERO en la interrupcin

    Nada mas iniciar se configuran las entradas del microprocesador PIC se configuran las entradas de LED y TX como salida, y se configura la interrupcin que se activar en flanco de bajada. Tambin se configura el bit 0 del registro NUMORSOH que se utiliza como bandera para saber si leer el carcter de cabecera o el nmero cuando ocurre una interrupcin.

    INICIO

    BANK1 BCF TX BCF LED BCF OPTION_REG, INTEDG BANK0 BSF TX BSF RX BCF LED BCF NUMORSOH,0

    9

  • Despus se enva un comando al controlador de la pantalla tctil para que se configure en formato decimal, pero antes se realiza una espera inicial, a la espera de que el controlador de la pantalla tctil se haya iniciado despus de que se ha conectado la alimentacin de +5v.

    MOVLW 0FFh ;ESPERA INICIAL CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW

    Se enva el comando para configurar la pantalla en formato decimal, se espera

    unos milisegundos y se vuelve a enviar por si acaso que la pantalla no quede bien configurada.

    CALL FD MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW CALL FD

    Despus se realiza un parpadeo para saber si el led funciona bien, para ello

    encendemos el led un segundo y luego lo apagamos.

    BSF LED MOVLW 0FFh ;ESPERA ENCENDIDO CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh

    10

  • CALL ESPERAW MOVLW 0FFh CALL ESPERAW BCF LED MOVLW 0FFh ;ESPERA APAGADO CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW

    Por ultimo, habilitamos la interrupcin INT y habilitamos las interrupciones

    globalmente y nos metemos en un bucle infinito hasta que ocurra la interrupcin. BSF INTCON,INTE BSF INTCON,GIE INFINITO

    NOP GOTO INFINITO

    Ahora pasamos a describir cuando ocurre una interrupcin, nada mas empezar se

    comprueba que ha sucedido dicha interrupcin, despus mira si el cdigo espera un SOH o el primer dgito del valor de la coordenada x, esto se realiza con el bit 0 del registro NUMORSOH.

    INTERRUPCION BTFSS INTCON,INTF

    RETFIE BTFSC NUMORSOH,0

    GOTO NUMERO

    11

  • Si se espera el carcter de cabecera se comprueba que el byte recibido es SOH y se activa el bit que indica que la siguiente vez que se ejecute la interrupcin se espera un nmero.

    CALL RXSOH

    XORLW TRUE

    BZ MODESTADO BCF INTCON,INTF

    RETFIE MODESTADO BSF NUMORSOH,0 BCF INTCON,INTF ;BORRA BANDERA INT

    RETFIE

    Si el registro NUMORSOH indica que se espera el primer dgito de la coordenada x, entonces llamamos a RXDATO para recibir el byte y si funciona correctamente se preparan los registros para encender y apagar el diodo. Si no funcionara salimos de la rutina de la interrupcin.

    NUMERO CALL RXDATO XORLW TRUE BZ USOLED GOTO SALIRINT

    Ahora que sabemos que es un nmero y lo vamos a mostrar, deshabilitamos el bit

    0 del registro NUMORSOH para en la siguiente interrupcin espere el carcter de cabecera. RXDATO ha almacenado en el registro DATO el carcter ASCII que representa el primer dgito de la coordenada x. Puesto que el carcter ASCII del 0 es el nmero 30 en hexadecimal, el carcter 1 es el nmero 31 en hexadecimal y as sucesivamente hasta el 39, si borramos los cuatro bits de la izquierda obtenemos el valor numrico del carcter, que es a su vez el nmero de parpadeos que tiene que dar el led verde.

    USOLED MOVF DATO,0 MOVWF SOH MOVF SOH,0 MOVWF DATO

    BCF NUMORSOH,0

    MOVF DATO,0 ANDLW b'00001111' BZ SALIRINT MOVWF DATO

    12

  • Luego se ejecuta la rutina que muestra la zona que se ha tocado, haciendo parpadear el led verde segn el valor que se encuentra en el registro DATO.

    MOSTRAR BSF LED MOVLW 0FFh ;ESPERA ENCENDIDO CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW BCF LED MOVLW 0FFh ;ESPERA APAGADO CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW MOVLW 0FFh CALL ESPERAW DECF DATO,1 BZ SALIRINT GOTO MOSTRAR SALIRINT BCF INTCON,INTF ;BORRA BANDERA INT

    RETFIE

    13

  • A continuacin se describen las rutinas del programa:

    RXDATO recibe un byte por el RX y lo guarda en el registro DATO, si existe un

    start bit al principio la funcin termina y devuelve verdadero en w, si no devuelve w=falso. Se sincroniza esperando a la mitad del primer bit, para luego leer a la mitad de cada bit que se supone que es cuando ms estable se encuentra la seal.

    RXDATO BTFSS RX GOTO RXBYTE RETLW FALSE RXBYTE CALL TIME2 MOVLW 8 MOVWF CONT8 BIT CALL TIME RRF DATO,F BCF DATO,7 BTFSC RX BSF DATO,7 DECFSZ CONT8,F GOTO BIT CALL TIME2 RETLW TRUE

    RXSOH recibe un byte por RX, y comprueba que se recibe primero el starbit, y luego el SOH, entonces devolver verdadero sino reportara falso. Recibe el byte de forma similar a RXDATO.

    RXSOH BTFSS RX GOTO RXBYTESOH RETLW FALSE RXBYTESOH CALL TIME2 MOVLW 8 MOVWF CONT8 BITSOH CALL TIME RRF SOH,F BCF SOH,7 BTFSC RX BSF SOH,7 DECFSZ CONT8,F

    14

  • GOTO BITSOH CALL TIME2 MOVF SOH,0 BZ SALIRFALSE ANDLW CTRAN BZ SALIRTRUE RETLW FALSE SALIRTRUE RETLW TRUE SALIRFALSE RETLW FALSE

    TXDATO realiza la transmisin RS232 de un byte por la lnea TX, enviando el start bit, los 8 bits de datos y el stop bit a una velocidad de 9600 baudios.

    TXDATO MOVLW 8 MOVWF CONT8 BCF TX BIT2 CALL TIME RRF DATO,F BTFSS STATUS,C BCF TX BTFSC STATUS,C BSF TX DECON DECFSZ CONT8,F GOTO BIT2 CALL TIME BSF TX CALL TIME

    RETURN

    15

  • El procedimiento TIME2 realiza que el procesador espere unos 52us y el procedimiento TIME realiza que el procesador espere 104us, son los retardos de medio y de un bit respectivamente a una velocidad de 9600 baudios.

    TIME2 MOVLW 1 MOVWF RET1 T1 MOVLW .14 MOVWF RET2 T2 DECFSZ RET2,F GOTO T2 DECFSZ RET1,F GOTO T1

    NOP RETURN

    TIME MOVLW 1 MOVWF RET1 T3 MOVLW .28 MOVWF RET2 T4 DECFSZ RET2,F GOTO T4 DECFSZ RET1,1 GOTO T3

    NOP NOP RETURN

    El procedimiento ESPERAW espera el valor que se encuentra en W multiplicado

    por 1040 us.

    ESPERAW MOVWF CONT8 BUCLEW CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME DECF CONT8,1 BZ CONTINUARW GOTO BUCLEW CONTINUARW RETURN

    16

  • RET_CARRO enva un retorno de carro por la lnea RS232 y el procedimiento FD es enva el comando FD que esta compuesto por cuatro bytes, uno es la cabecera (SOH en ASCII) y los caracteres F, D y para finalizar un retorno de carro (CR en ASCII).

    RET_CARRO MOVLW d'13' MOVWF DATO CALL TXDATO MOVLW 0FFh MOVWF CONT8 CALL TIME DECFSZ CONT8,F MOVLW d'10' MOVWF DATO CALL TXDATO

    RETURN

    FD MOVLW 0x01 MOVWF DATO CALL TXDATO MOVLW "F" MOVWF DATO CALL TXDATO MOVLW "D" MOVWF DATO CALL TXDATO CALL RET_CARRO

    RETURN

    17

  • 4.-CONCLUSIONES En esta prctica adems de aprender como conectar el micropic de forma autnoma se ha aprendido a comunicar mediante rs232 un micropic con cualquier dispositivo, tanto para enviar datos como para recibir datos. Tambin se ha tenido que aprender a conectar el controlador de la pantalla tctil, comprobando que los pines de comunicacin corresponden (algunos no) a lo que se indica en el manual de referencia del controlador de la pantalla tctil. Con respecto a esto, decir que si se hace caso a lo que se indica en el manual y se conecta uno de los pines de comunicacin del controlador de la pantalla a +5v, el controlador se puede fastidiar, ya que siguiendo el manual se conect as y una resistencia del controlador estuvo a punto de quemarse, con lo que el controlador podra dejar de funcionar. Otra incidencia durante la prctica fue la de que se deben elegir adecuadamente los condensadores conectados al cristal para el reloj del micropic, puesto que al principio se utilizaron unos condensadores que no eran de las capacidades indicadas por el fabricante, y el pic no funcionaba. La utilizacin de las cuatro pilas recargables de 1.2 voltios como fuente de alimentacin tiene un funcionamiento extrao, puesto que funcionaba bien si se conecta el circuito de tierra GND comn a una fuente de alimentacin, aunque la fuente est desconectada, porque si no es as, el pic enva correctamente el comando al controlador de la pantalla tctil, pero la pantalla tctil slo enva las coordenadas cuando se toca con un dedo la cubierta de las pilas y con el otro la pantalla tctil. Ya en las complicaciones software se comprob que usando rutinas que disponen de los retardos aproximados segn el nmero de ciclos y de instrucciones ejecutadas por el microcontrolador se puede llegar a establecer una comunicacin rs232 a 9600 baudios, aunque posiblemente debido a esto hubo que utilizar la rutina de recepcin ayudados de la interrupcin rb0 por flanco, para conseguir el sincronismo con el start bit del protocolo de comunicacin serie rs232. Esta prctica es fcilmente ampliable, aadiendo la capacidad de mostrar el nmero de la zona pulsada con un display 7 segmentos. Una ampliacin ms complicada de esta prctica podra ser utilizar un display matricial para mostrar la zona o leer las coordenadas de los dos ejes imaginarios de la pantalla tctil.

    18

  • 5.-ANEXO

    Documentos anexos a esta memoria:

    pantallatactil.asm Fichero del cdigo fuente del programa.

    microtouchguide.pdf Gua de referencia del controlador de la pantalla

    tctil, utilizado para determinar las interfaces y comandos del controlador de la pantalla

    tctil.

    19