Los órganos del Estado deben promover

Anuncio
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
Entrega Nº 2 Arquitectura de Computadores
“¡Bong!”
Grupo 12
Camilo Araya
Alejandro Fernández
Pablo Fredes
Ruo Shin Lee
Alvaro Rivera
Gabriel Vidal
Muy malo el informe. La
mayoría de las veces, "menos
es más", es decir, conviene
hacer uno pequeño de calidad y
elaborado por uds. que con
copy&paste y "blabla".
1
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
Índice.
1. General
3
1.1. Cambios
3
1.2. Secuencias del juego
4
1.3. Entradas.
4
1.4. Salidas.
4
2. Detección de Sensores a Utilizar
5
2.1. Detección de la pelota al pasar por línea de gol
5
2.2. Emisión del Sonido
6
2.3. Contabilización y despliegue de las anotaciones
6
2.4. Manejo de tiempo y despliegue durante el juego
6
2.5. Detección de patrones
6
2.6. Movimiento del “arquero”
7
3. Descripción Salidas del PIC
8
3.1. Detección de la pelota al pasar por línea de gol
9
3.2. Emisión del Sonido
9
3.3. Manejo del tiempo y despliegue durante el juego
9
3.4. Detección de patrones
9
3.5. Movimiento del “arquero”
10
4. Esquemas
11
4.1. Diagrama prueba de la placa
11
4.2. Esquemático general
12
5. Programa de Prueba
2
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
1. General
1.1. Cambios
¿Por qué?

Se decidió no poner obstáculos, en su lugar se dividirá el área de juego en dos sectores. Al jugar se
contabilizará el número de veces que pasa la bola por cada sector, por el lado que pase más veces la
bola se encenderá un LED que indicará que de pasar la bola por ese sector la anotación no será válida,
al apagarse el LED las anotaciones volverán a ser válidas.

Sonido: será usado como alarma cada vez que se haga una anotación.

Por simpleza, en una primera etapa el lanzamiento de la bola será manual.

Implementación de un botón de inicio y un botón para definir la dificultad del juego.
1.2. Secuencias del juego
¿Hay segunda
etapa?
¿Cuándo?
Un botón sólo se
puede presionar,
no permite
seleccionar nada

El jugador define la dificultad del juego y lo inicia mediante botones.

Comienza el cronómetro, el cual correrá por un tiempo definido (el tiempo que dure una partida)

El jugador lanza la pelota intentando realizar una anotación.

El lado por el que pase la bola será detectado por los fototransistores, estos enviarán una señal indicando
el lado por el cuál pasó, esto aumentará la cuenta del número de veces que ha pasado la bola por ese
lado, de alcanzarse un cierto número de pasadas se encenderá el LED correspondiente a ese lado
indicando que de pasar la bola por ese sector mientras esté encendido el LED la anotación no será
válida, el LED permanecerá encendido mientras dure ésta condición.

De marcarse un gol será detectado por el sensor que enviará la señal para actualizar el marcador.

El jugador recupera la bola y sigue intentando realizar anotaciones durante el tiempo de juego.

Al término del tiempo se acaba el juego, el puntaje obtenido de ser de los más altos obtenidos se
almacenará en memoria
1.3. Entradas
3
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
Fototransistores
Botones
1.4. Salidas
LEDs: De colores, que indiquen dificultad
Display de 7 segmentos: Marcador y contador de tiempo
Motor: Movimiento del arquero
Sonido: Bocina que anuncie goles y finalización del juego
4
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
2. Descripción de sensores a utilizar
2.1. Detección de la pelota al pasar por línea de gol
Utilizaremos un sensor Foto-Interruptor infrarrojo CNZ1120 Panasonic, con un valor de $1795 en Olimex
(http://www.olimex.cl/product_info.php?cPath=50_88&products_id=191). Este sensor emite un rayo infrarrojo
entre los dos foto interruptores, detectando cada objeto que pase entre ellos (en este caso la pelota).
Ilustración 1: Foto transistores
El circuito de cómo operará este sensor está detallado a continuación:
No sirve. Interesa
el circuito de
cómo uds usarán
el componente.
Datasheet: http://www.olimex.cl/pdf/Components/CNZ1120.pdf
2.2. Emisión de Sonido
El micrófono
capta sonidos
Utilizaremos un micrófono Electret (Breakout board), con un valor de $5970
(http://www.olimex.cl/product_info.php?cPath=50_95&products_id=412). Modelo OPA344.
Esquemáticamente el circuito funciona así:
5
en
Olimex
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
Aclárense: ¿parlante o
micrófono? El parlante es
más simple pero, ¿cómo
lo alimentarán?
En caso de ser muy compleja la utilización de este dispositivo, la alternativa sería el parlante 8 Ohm 1W 2.5
Amperes de Victronics(http://www.victronics.cl/phpdetalle.php?p=95-002542), mucho más sencillo que el que
queremos implementar.
2.3. Contabilización y despliegue de las anotaciones
¿Saben qué significa?
Utilizaremos un display de 7 segmentos 7S-CC para desplegar las anotaciones. La contabilización se
registrará en la memoria.
¿Un solo dígito?
2.4. Manejo del tiempo y despliegue durante el juego
Utilizaremos el timer incorporado en el PIC, y se desplegará el tiempo en un display distinto al de las
anotaciones.
¿Del mismo tipo?
¿Cuántos dígitos?
2.5. Detección de patrones de juego
Se utilizará el mismo sensor Foto-Interruptor infrarrojo CNZ1120 Panasonic en dos posiciones distintas (2
sensores distintos), los que se pondrán en un mismo eje. Cada par de foto interruptores agarrará solamente
la mitad del ancho de la cancha, de tal forma que se puedan contabilizar las veces que pasa la pelota por un
sector ó por otro. Utilizaremos dos LED que indicarán, al prenderse, cuando la pelota ha superado el límite
de veces que puede pasar por cada sector, inhabilitando posteriormente los goles por ese lado.
6
Los sensores no detectan
patrones. El análisis de la
información sí.
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
2.6. Movimiento del “arquero”
El movimiento del arquero se hará de manera radial a través de un motor cuyo eje será paralelo a la normal
de la superficie del juego e irá ubicado por debajo de ésta.
El motor elegido es el Motor Servo para propósito general giro en 180° DY-S0209-38g
(http://www.olimex.cl/product_info.php?products_id=292).
Para utilizar este servo, al darle un voltaje mayor a Vcc/2 gira hacia un lado, y al darle uno menor a Vcc/2
gira hacia el otro (no hay documentación oficial sobre este motor, pero obtuvimos esta información del foro
de Olimex.cl).
En general los servos no
funcionan así. ¿Hablan del
voltaje como señal de entrada
al servo? ¿Qué hay con la
alimentación de ellos?
7
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
3. Descripción salidas del PIC
Entradas y Salidas del PIC16F876AAA:
No sirve para
nada hacer
copy&paste del
datasheet.
Puerto A:
8
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
Puerto B:
3.1. Detección de la pelota al pasar por línea de anotación
No analiza,
convierte
Conectaremos el sensor a la entrada RA0 del PIC, y será analizado por el ADC. Necesitaremos salidas del
PIC para ir contando los goles, por lo que utilizaremos desde RD0 hasta RD3.
3.2. Emisión de Sonido
¿Para contar o
mostrar?
Utilizaremos la salida del PIC RB3/PGM y RC6/TX/CK, y como entrada RA3.
¿Cómo quieren convertir una
señal digital en sonido? ¿DAC?
3.3. Manejo del tiempo y despliegue durante el juego
El tiempo será controlado por la configuración de un timer interno del PIC, el cual será conectado a un
decodificador BCD/7 segmentos, cuya salida se encontrará entre RD4 y RD7.
3.4. Detección de patrones de juego
Al utilizar dos foto sensores iguales al de la línea de meta, conectamos a las entradas RA2 y RA3 del PIC, y
salida a tierra. Los LED están conectados a RC0 y RC1.
9
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
3.5. Movimiento del “arquero”
La conexión del motor que moverá al arquero se hará en el pin RC2 del PIC, por corresponder éste a la
salida PWM1.
No es coherente con
lo descrito para el
servo.
10
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
4. Esquemas
¿Qué versión?
Es bastante caro.
Espero que no
sea "pirata".
4.1. Díagrama prueba de la placa
Utilizamos el Software “Proteus” para realizar una simulación de la prueba de la placa, para comprobar que
no existan errores. Está sumamente simplificada para efectos de prueba. Usamos el archivo modificado
Modf.hex
C4
22p
X1
CRYSTAL
C3
22p
RV1
U1
13
14
2
3
4
5
6
7
10k
RV2
8
9
10
1
10k
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
R6
10k
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
PIC16F877A
PROGRAM=..\..\..\..\Users\Ale\Downloads\Modf.hex
D1
D2
10k
LED
R2
LED
D3
10k
DSW1
4
3
OFF
ON
1
2
R7
10k
DIPSW_2
R10
R8
10k
10k
11
10k
R3
LED
R9
R1
10k
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
4.2. Esquemático general
Está detallado en el punto 3. Acá lo mostramos gráficamente:
12
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
5. Código (programa de prueba)
; Ayudantía 2, José Luis Honorato Modificado por Álvaro Rivera Grupo 12
list p=16f877a ; Tipo dispositivo
include <P16F877A.inc> ; Para que reconozca los registros
ORG H'00'
GOTO PARTIDA ; Ubicación de partida
ORG H'04'
GOTO INT ; Ubicación de interrupciones
; Variables a almacenar, registros
; de propósito general en el banco 0
LED EQU H'20' ; Led de uso actual
POT1 EQU H'21' ; Vin
POT2 EQU H'22' ; LED
LEVEL EQU H'23' ; Nivel de corte de low a med
LEVEL2 EQU H'27' ; Nivel de corte 2 de med a high
CONT EQU H'24' ; Contador de overflows del timer
DIST EQU H'26' ; Valor del Vin aceptable, entre 0 y 127
PARTIDA
BCF STATUS,RP1
BSF STATUS,RP0
; Me cambio al banco 1
;Configuración de Puertos (Output = 0 , Input = 1)
MOVLW B'11111000'; RB0 , RB1, RB2 como outputs para LEDs
MOVWF TRISB
MOVLW H'FF' ; Todos los canales de A como input
MOVWF TRISA
MOVLW H'FF' ; Todos los canales de C como input (Vamos a usar RC2 para el switch)
MOVWF TRISC
BCF STATUS,RP0
BCF STATUS,RP1
; Vuelvo al Banco 0
CLRF CONT
CLRF LED
CLRF LEVEL
CLRF LEVEL2
13
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
CLRF POT1
CLRF POT2
CLRF DIST
;INTERRUPCIONES
MOVLW B'11000000'
MOVWF INTCON
; Interrupciones Globales y Periféricas
BCF STATUS,RP1
BSF STATUS,RP0
; BANCO 1
MOVLW B'00000001'
MOVWF PIE1
; Activo la interrupcion Timer1 Overflow
; Aqui se puede usar la interr. del USART, etc.
BCF STATUS,RP0
BCF STATUS,RP1
; BANCO 0
;CONFIGURACION TIMER 1
CLRF TMR1L
CLRF TMR1H ; Borro registros TMR1
MOVLW B'00000000' ; Uso de clock interno, prescaler 1:4, Timer1 OFF
MOVWF T1CON
;CONFIGURACION ADC
BCF STATUS,RP1
BSF STATUS,RP0
;BANCO 1
MOVLW B'01000000' ; Justificado Izquierdo FOSC/2 Todos análogos
MOVWF ADCON1
BCF STATUS,RP0
BCF STATUS,RP1
MOVLW B'01000000'
MOVWF ADCON0
MOVLW D'42'
MOVWF LEVEL
MOVLW D'84'
MOVWF LEVEL2
;BANCO 0
;FOSC/8, CH0 por ahora, ADC=OFF
Mal indentado
LOOP
14
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
; Leo los valores de los potenciometros
CALL LEER_CH0
CALL UBICAR ; Veo en que Level me encuentro, entre low y med o med y high
CALL LEER_CH1
BTFSC PORTC,2 ; Si RC2 esta en 1, parpadea
CALL BLINK
BTFSS PORTC,2 ; Si RC2 esta en 0, lo prendo
CALL LED_ON
GOTO LOOP
; Vuelvo a hacer lo anterior
UBICAR
BCF STATUS,C ; Me aseguro de bajar el flag
MOVF DIST,0 ; Vin formateado
SUBWF LEVEL2,0 ; (LEVEL2) - (W) = (W)
BTFSS STATUS,C ; Según el resultado, activo el led correspondiente
CALL LED_HIGH ; Si no hubo carry, DIST > LEVEL, si es igual se queda en LOW
BTFSC STATUS,C
CALL UBICAR_ML ; ahora compruebo si el valor es menor o mayor que 42
RETURN
UBICAR_ML
MOVF DIST,0 ; Vin formateado
SUBWF LEVEL,0 ; (LEVEL) - (W) = (W)
BTFSS STATUS,C ; Según el resultado, activo el led correspondiente
CALL LED_MED ; Si no hubo carry, DIST > LEVEL, si es igual se queda en LOW
BTFSC STATUS,C
CALL LED_LOW
RETURN
LED_HIGH ; RD2
MOVLW B'00000100'
MOVWF LED
BCF STATUS,C
RETURN
LED_MED; RD1
MOVLW B'00000010'
MOVWF LED
BCF STATUS,C
RETURN
LED_LOW ; RD0
MOVLW B'00000001'
15
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
MOVWF LED
BSF STATUS,C
RETURN
LED_ON
MOVLW B'00000000' ; Uso de clock interno, prescaler 1:4, Timer1 OFF
MOVWF T1CON
MOVF LED,0
MOVWF PORTB
RETURN
BLINK
MOVLW B'00000001' ; Uso de clock interno, prescaler 1:1 (tercer y cuarto bit), Timer1 ON
MOVWF T1CON
MOVF CONT,0
; CONT en W
XORWF POT2,0
; Comparo CONT con POT2, si son iguales (Z=1), cambio el estado del LED
BTFSC STATUS,Z
CALL CAMBIA_LED
BCF STATUS,Z
RETURN
INT
BCF INTCON,GIE
;APAGO INTERRUPCIONES
BTFSC PIR1,TMR1IF ; Si la interrupcion es por TMR1 overflow, voy al método
CALL CONTAR
; Aqui se pueden agregar otras interrupciones
BSF INTCON,GIE ;REACTIVO |INTERRUPCIONES
RETURN
CONTAR
BCF PIR1,TMR1IF ; Bajo el flag de la interrupción
MOVLW H'EE'
MOVWF TMR1H
MOVLW H'00'
MOVWF TMR1L ; El tiempo de parpadeo dependerá del valor de TMR1H + TMR1L
INCF CONT,1
; Incremento el contador
RETURN
CAMBIA_LED
BCF STATUS,Z
CLRF CONT
MOVF PORTB,0
BTFSC STATUS,Z
CALL PRENDE_LED
BTFSS STATUS,Z
16
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
CALL APAGA_LED
RETURN
PRENDE_LED
MOVF LED,0
MOVWF PORTB
BSF STATUS,Z
RETURN
APAGA_LED
BCF PORTB,0
BCF PORTB,1
BCF STATUS,Z
RETURN
LEER_CH0 ; Revisa en que lado estoy
MOVLW B'01000001' ; Me cambio a CH0
MOVWF ADCON0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;BCF ADCON0,CHS0
BSF ADCON0,GO ; Le digo GO
PAUSA0
BTFSC ADCON0,GO
GOTO PAUSA0
; Si está en Clear, movemos el dato
17
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
MOVF ADRESH,0
MOVWF POT1
;MOVLW H'00'
;MOVWF ADRESH
BCF STATUS,C
BCF STATUS,DC
BCF STATUS,Z
RRF POT1,1 ; Maximo 127
BCF STATUS,C
MOVF POT1,0
MOVWF DIST
RETURN
LEER_CH1 ; Blink
MOVLW B'01001001' ; 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,CHS0
BSF ADCON0,GO ; Le digo GO
PAUSA1
BTFSC ADCON0,GO
; Si está en Clear, movemos el dato
18
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
DEPARTAMENTO DE CIENCIA DE LA COMPUTACION
GOTO PAUSA1
MOVF ADRESH,0
MOVWF POT2
;MOVLW H'00'
;MOVWF ADRESH
RETURN
END
19
Descargar