Pontificia Universidad Católica de Chile Escuela de Ingenierı́a Departamento de Ciencias de la Computación IIC2342 - Arquitectura de Computadores Entrega 2 - Proyecto The Eye Witness Grupo 4 Integrantes: Andrés Chacón Tomás Fuentes Aunque se vea "lindo" el informe, no sirve si le falta contenido. Francisco Fukuda Pablo Lluch Andrea Vásquez 5 de Octubre de 2009 1. Introducción Este informe es una profundización de nuestro proyecto. En la primera entrega se definió, a grandes rasgos, lo que queremos implementar a lo largo del semestre y ahora entramos en detalle en cuanto a conexiones y componentes a utilizar. Al ir avanzando en el estudio de la idea, y al comprender la magnitud de nuestra propuesta inicial, nos encontramos con varias dificultades que harı́an muy dificil que pudiéramos llevar a buen término nuestro proyecto, en particular considerando que es primera vez que trabajamos con elementos eléctricos en el marco de un curso. Por este motivo fueron realizadas algunas modificaciones, asesorados por un ingeniero eléctrico que fue ayudante por un largo perı́odo de este curso. Concretamente, los cambios realizados fueron los siguientes: ¿se refiere a que entrega las imágenes comprimidas en ese formato? ¿Modelo? 1. Cámara JPEG: reemplazá la cámara Web por un cámara digital que entrega fotografı́as en calidad VGA (640x480), y que además posee una interface UART con una velocidad de transferencia de 115.2Kbps. 2. Tarjeta SD: si bien inicialmente se consideró un tarjeta MicroSD, hacer la placa para conectar el socket implicaba mayor dificultad y probabilidad de error por el tamaño de éste último. Con el objeto de facilitar el diseño se utilizará un socket SD que es más fácil de conectar. En Olimex se encuentra el producto ya montado en una placa y con una interface de conexión de 11 pins que simplifica su implementación. 3. Acelerómetro: no hay cambios respecto a este dispositivo. En las próximas páginas se presentan las esquemáticas y funcionamiento general de cada uno de los dispositivos. Muy bien esta sección de aclaraciones 1 2. 2.1. Diseño del Hardware Esquemática General Se refería al esquemático general de su proyecto, de manera de saber cómo iban interconectadas las distintas partes / módulos Esquemática general de la placa Esta esquemática es prácticamente la misma que aquella para la placa originalmente diseñada por los ayudantes, con la salvedad de que se removieron algunos elementos redundantes. A esta placa se le adjunta otra, la cual se puede observar en la siguiente sección. 2 2.2. Esquemáticas de Cada Componente Para facilitar la conexión de estos dispositivos se diseño una placa anexa con una fuente de poder de 3.3V que alimentará a todos los dispositivos, que comparten dicho voltaje. A continuación se adjunta el diseño esquemático y la placa definitiva a utilizar: ¿Cuáles son? Se ve bien la placa anexa pero son explicar qué es qué cosa no sirve de mucho mostrarla ¿Adónde van estas conexiones? 2.3. Acelerómetro El ADXL330 es un sistema completo de medición de 3-ejes de la aceleración en un IC monolı́tica. Tiene una medida de rango de acción de aproximadamente 3 g como mı́nimo. Las señales de salida son voltajes porcionales a la aceleración experimentada por el dispositivo. El acelerómetro puede medir la aceleración estática de la gravedad en aplicaciones de detección de inclinación, ası́ como también la aceleración dinámica resultante del movimiento, choque o vibración. El sensor es una superficie de polisilicio microfabricado, estructura construida en la parte superior de una oblea de silicio. Resortes de polisilicio suspenden la estructura sobre la superficie de la oblea y ofrecen una resistencia contra las fuerzas de aceleración. La deflexión de la estructura es medida usando un condensador diferencial, que consiste en placas fijas independientes y placas fijadas a la masa en movimiento. Las placas fijas son impulsadss por 180◦ fuera de la fase de ondas cuadradas. La aceleración desvı́a la masa en movimiento y desequilibra el condensador diferencial, resultando en una salida del sensor, cuya amplitud es proporcional a la aceleración. La salidad del demodulador es amplificada y extraı́da fuera del chip a través de una resistencia de 32 kilohms. Después, el usuario establece el ancho de banda de la señal del dispositivo mediante la adición de un condensador. Este filtrado mejora la resolución de la medición y ayuda a evitar el aliasing. Los pins van conectados de la siguiente manera: Con mucho respeto, lo de antes me parece puro "blabla", dado que uds. mismo dicen que es su primer curso con componentes eléctricos. En definitiva, es decir mucho y a la vez nada pues, ¿comprenden todos esos 3 conceptos? Pin 1: ST, self test. No será utilizada. Pin 2: señal análoga correspondiente al eje Z que se conecta al PIC a través de la placa sumplementaria. Pin 3: señal análoga correspondiente al eje Y que se conecta al PIC a través de la placa sumplementaria. Pin 4: señal análoga correspondiente al eje X que se conecta al PIC a través de la placa sumplementaria. Pin 5: GND, tierra. Pin 6: VCC de 3.3V provisto por la placa sumplementaria creada. ¿Acaso la PDA no puede ser un host inalámbrico? 2.3.1. Cámara El C 328-7640 es el módulo de cámara VGA que funciona como una cámara JPEG, que puede conectarse a un host inalámbrico o una PDA. Es posible enviarle comandos desde el host, lo cual permite captar una imagen de un solo cuadro fijo de resolución completa. La imagen se comprime en JPEG y se transfiere a través del puerto serial. Los pins van conectados de la siguiente manera: Pin 1: VCC de 3.3V provisto por la placa sumplementaria creada. Pin 2: Data Transmit (3.3V). Conectado al PIN26 a través de la placa sumplementaria del PIC que corresponde a la entrada RC7/RX/DT. Pin 3: Data Receive (3.3V). Conectado al PIN25 a través de la placa sumplementaria del PIC que corresponde a la entrada RC6/TX/CK. Pin 4: GND, tierra. ¿El mismo de la conexión al PC? ¿O se conectan directamente a la UART? ¿"Pasa" por el MAX232? Hay problemas de referencia de voltajes dado que el PIC funciona con 0 y 5 4 2.3.2. Tarjeta SD La tarjeta MicroSD considerada anteriormente contaba con un adaptador SD lo que permite la unión al PIC a través de un socket de conexión. Esta puede ser programada directamente a través del SPI del PIC. Pin 1: COM. Conectado a tierra según recomendación del datasheet Pin 2: WP. Write protect detect switch. Conectado a tierra, no utilizado Pin 3: CD. Card detect switch, eventualmente será utilizado por lo cual se conectará a la placa suplementaria Pin 4: P9 No utilizado en modo SPI. Conectado a tierra. Pin 5: IRQ No utilizado en modo SPI. Conectado a tierra. Pin 6: DO Serial Data OUT. Conectado al PIN23 del PIC a través de la placa suplementaria. Pin 7: GND Tierra Pin 8: CLK Serial Clock. Conectada al clock de la placa principal Pin 9: VCC 3.3V Pin 10: DI Serial Data IN. Conectado al PIN24 del PIC a través de la placa suplementaria. Pin 11: CS Chip Select No está el esquemático ni la explicación de cómo usarán el componente 5 3. 3.1. Programa Entrega 2 Diagrama de Flujo 6 Obviamente en el diagrama de flujo tiene que ir palabras comprensibles, no instrucciones de máquina ¿Adónde está el loop? Un diagrama de flujo siempre va a arriba a abajo 0 ¿Qué ocurrió acá? 0 1 3.2. Código programa ; Entrega 2 − Grupo 4 l i s t p=16 f 8 7 7 a ; Tipo d i s p o s i t i v o i n c l u d e <P16F877A . i n c > ORG H’ 0 0 ’ GOTO PARTIDA ; Para que r e c o n o z c a l o s r e g i s t r o s ; U b i c a c i ó n de p a r t i d a ORG H’ 0 4 ’ GOTO INT ; U b i c a c i ó n de i n t e r r u p c i o n e s ; V a r i a b l e s a almacenar , r e g i s t r o s ; de p r o p ó s i t o g e n e r a l en e l banco 0 LED EQU H’ 2 0 ’ ; Led de uso a c t u a l POT1 EQU H’ 2 1 ’ ; Vin POT2 EQU H’ 2 2 ’ ; LED LEVEL1 EQU H’ 2 3 ’ ; N i v e l de c o r t e e n t r e l o s l e d s 1 y 2 CONT EQU H’ 2 4 ’ ; Contador de o v e r f l o w s d e l t i m e r DIST EQU H’ 2 6 ’ ; Valor d e l Vin a c e p t a b l e , e n t r e 0 y 127 LEVEL2 EQU H’ 2 7 ’ ; N i v e l de c o r t e e n t r e l o s l e d s 2 y 3 PARTIDA BCF STATUS, RP1 BSF STATUS, RP0 ; Me cambio a l banco 1 ; C o n f i g u r a c i ó n de P u e r t o s ( Output = 0 , Input = 1 ) MOVLW B’ 1 1 1 1 0 1 0 0 ’ ; RC0 , RC1, RC3 como o u t p u t s para l e d s ; RD2 para e l s w i t c h MOVWF TRISC ; Usamos e l p u e r t o C MOVLW H’ FF ’ ; Todos l o s c a n a l e s de A como i n p u t MOVWF TRISA MOVLW H’ FF ’ MOVWF TRISD ; Todos l o s c a n a l e s de D como i n p u t BCF STATUS, RP0 BCF STATUS, RP1 ; Vuelvo a l Banco 0 CLRF CONT CLRF LED CLRF LEVEL1 CLRF POT1 CLRF POT2 CLRF DIST CLRF LEVEL2 ; INTERRUPCIONES MOVLW B’ 1 1 0 0 0 0 0 0 ’ MOVWF INTCON ; I n t e r r u p c i o n e s G l o b a l e s y P e r i f é r i c a s BCF STATUS, RP1 8 BSF STATUS, RP0 ; BANCO 1 MOVLW B’ 0 0 0 0 0 0 0 1 ’ MOVWF PIE1 ; A c t i v o l a i n t e r r u p c i o n Timer1 Overflow ; Aqui s e puede u s a r l a i n t e r r . d e l USART, e t c . BCF STATUS, RP0 BCF STATUS, RP1 ; BANCO 0 ;CONFIGURACION TIMER 1 CLRF TMR1L CLRF TMR1H ; Borro r e g i s t r o s TMR1 MOVLW B’ 0 0 0 0 0 0 0 0 ’ ; Uso de c l o c k i n t e r n o , p r e s c a l e r 1 : 4 , Timer1 OFF MOVWF T1CON ;CONFIGURACION ADC BCF STATUS, RP1 BSF STATUS, RP0 ;BANCO 1 MOVLW B’ 0 1 0 0 0 0 0 0 ’ ; J u s t i f i c a d o I z q u i e r d o FOSC/4 Todos a n á l o g o s MOVWF ADCON1 BCF STATUS, RP0 BCF STATUS, RP1 ;BANCO 0 MOVLW B’ 0 1 0 0 0 0 0 0 ’ MOVWF ADCON0 ;FOSC/ 8 , CH0 por ahora , ADC=OFF MOVLW D’ 4 2 ’ ; S e t e o de n i v e l para l e d s 1 y 2 MOVWF LEVEL2 MOVLW D’ 8 4 ’ ; S e t e o d e l n i v e l para l e d s 2 y 3 MOVWF LEVEL1 LOOP ; Leo l o s v a l o r e s de l o s p o t e n c i o m e t r o s CALL LEER CH0 CALL UBICAR ; Veo en que l a d o de ” l e v e l ” e s t o y CALL LEER CH1 BTFSC PORTD, 2 ; S i RD2 e s t a en 1 , parpadea CALL BLINK BTFSS PORTD, 2 ; S i RD2 e s t a en 0 , l o prendo CALL LED ON GOTO LOOP ; Vuelvo a h a c e r l o a n t e r i o r UBICAR BCF STATUS, C MOVF DIST , 0 SUBWF LEVEL1, 0 BTFSS STATUS, C ; Dejamos e l c a r r y en 0 ; Movemos DIST a W ; Restamos W − LEVEL1 −> W ; S i no hay c a r r y , r e v i s a m o s e l i n t e r v a l o [ 0 ; LEVEL2 ] 9 CALL LED HIGH ; S i l o hay , prendemos LED HIGH BTFSC STATUS, C CALL SET INTERVAL RETURN SET INTERVAL MOVF DIST , 0 SUBWF LEVEL2, 0 BTFSS STATUS, C CALL LED MID BTFSC STATUS, C CALL LED LOW RETURN ; ; ; ; ; ; Cargamos DIST en W Restamos W − LEVEL2 −> W S i no hay c a r r y , estamos en e l i n t e r v a l o [ 0 ; LEVEL1 ] S i l o hay , prendemos LED MID S i hay c a r r y , r e t o r n a m o s S i no , prendemos LED LOW LED MID ; RC1 MOVLW B’ 0 0 0 0 0 0 1 0 ’ MOVWF LED BCF STATUS, C RETURN LED LOW ; RC0 MOVLW B’ 0 0 0 0 0 0 0 1 ’ MOVWF LED BSF STATUS, C RETURN LED HIGH ; RC3 MOVLW B’ 0 0 0 0 1 0 0 0 ’ MOVWF LED BCF STATUS, C RETURN LED ON MOVLW B’ 0 0 0 0 0 0 0 0 ’ MOVWF T1CON MOVF LED, 0 MOVWF PORTC RETURN ; Uso de c l o c k i n t e r n o , p r e s c a l e r 1 : 4 , Timer1 OFF BLINK MOVLW B’ 0 0 0 0 0 0 0 1 ’ ; Uso de c l o c k i n t e r n o , p r e s c a l e r 1 : 1 ( t e r c e r y c u a r t o b i t ) , Timer MOVWF T1CON MOVF CONT, 0 XORWF POT2, 0 ; Comparo CONT con POT2, s i son i g u a l e s ( Z=1) , cambio e l e s t a d o d e l LE BTFSC STATUS, Z CALL CAMBIA LED BCF STATUS, Z RETURN INT BCF INTCON, GIE ;APAGO INTERRUPCIONES BTFSC PIR1 , TMR1IF ; S i l a i n t e r r u p c i o n e s por TMR1 o v e r f l o w , voy a l método CALL CONTAR ; Aqui s e pueden a g r e g a r o t r a s i n t e r r u p c i o n e s 10 BSF INTCON, GIE ;REACTIVO INTERRUPCIONES RETURN CONTAR BCF PIR1 , TMR1IF ; Bajo e l f l a g de l a i n t e r r u p c i ó n MOVLW H’ EE’ MOVWF TMR1H MOVLW H’ 0 0 ’ MOVWF TMR1L ; El tiempo de parpadeo dependerá d e l v a l o r de TMR1H + TMR1L INCF CONT, 1 ; Incremento e l c o n t a d o r RETURN CAMBIA LED BCF STATUS, Z CLRF CONT MOVF PORTC, 0 BTFSC STATUS, Z ; Skip i f c l e a r ( s i z = 0 ) CALL PRENDE LED BTFSS STATUS, Z ; Skip i f s e t ( s i z = 1 ) CALL APAGA LED RETURN PRENDE LED MOVF LED, 0 MOVWF PORTC ; Prende e l l e d c o r r e s p o n d i e n t e ( segun l o e s c r i t o en LED) BSF STATUS, Z RETURN APAGA LED BCF PORTC, 0 BCF PORTC, 1 BCF PORTC, 3 ; Apaga e l l e d en RC3 BCF STATUS, Z RETURN LEER CH0 ; R e v i s a en que l a d o e s t o y MOVLW B’ 0 1 0 0 0 0 0 1 ’ ; Me cambio a CH0 MOVWF ADCON0 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP 11 NOP NOP NOP BSF ADCON0,GO ; Le d i g o GO PAUSA0 BTFSC ADCON0,GO ; S i e s t á en Clear , movemos e l dato GOTO PAUSA0 MOVF ADRESH, 0 MOVWF POT1 BCF BCF BCF RRF BCF STATUS, C STATUS,DC STATUS, Z POT1, 1 ; Maximo 127 STATUS, C MOVF POT1, 0 MOVWF DIST RETURN LEER CH1 ; B l i n k MOVLW B’ 0 1 0 0 1 0 0 1 ’ ; Me cambio a CH1 MOVWF ADCON0 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP BSF ADCON0,GO ; Le d i g o GO PAUSA1 BTFSC ADCON0,GO ; S i e s t á en Clear , movemos e l dato GOTO PAUSA1 MOVF ADRESH, 0 MOVWF POT2 RETURN END 12