Entrega 2 - Proyecto - Pontificia Universidad Católica de Chile

Anuncio
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
Descargar