PROGRAMACION

Anuncio
31/08/2012
TALLER DE CONSTRUCCION DE UN
MICROBOT RASTREADOR
PROGRAMACION
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
ESTRUCTURA GENERAL DE UN PROGRAMA
#include<16F84A>
#use delay(clock=4000000)
main()
{
}
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
1
31/08/2012
OPERACIONES CON LOS PUERTOS
1) Especificar qué líneas son de entrada, y cuáles de salida
1 -> Input -> Entrada
0 -> Output -> Salida
set_tris_a(); ej-> set_tris_a(0b00110001); set_tris_a(0x34);
set_tris_b(); ej-> set_tris_b(0b00110001); set_tris_b(0x34);
2) Líneas de salida (escritura -> output)
output_low(); ej-> output_low(PIN_A2);
output_high(); ej-> output_high(PIN_A0);
output_bit(); ej-> output_bit(PIN_A1,0); output_bit(PIN_A1,1);
output_X(); ej_> output_a(0x03); output_a(0xFF);
3) Líneas de entrada (lectura -> input)
input(); ej-> input(PIN_B2);
input_X(); ej_> puerto_b=input_b();
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
OPERACIONES CON TIEMPOS
1) Retardo de microsegundos
delay_us(); ej-> delay_us(50);
2) Retardo de milisegundos
delay_ms(); ej-> delay_ms(50); delay_ms(1000);
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
2
31/08/2012
EJEMPLO 1
#include<16F84A>
#use delay(clock=4000000)
main()
{
set_tris_a(0x00);
set_tris_b(0x01); //Importante con las entradas!!!!
while(TRUE){
if(input(PIN_B0)) output_bit(PIN_A0,0);
else
output_bit(PIN_A0,1);
}
}
if(!input(PIN_B0))
if(input(PIN_B0)==0)
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
EJEMPLO 1 ...Y EL ENSAMBLADOR
set_tris_a(0x00);
set_tris_b(0x01);
BCF
CLRF
BSF
MOVLW
MOVWF
BCF
CLRF
BSF
MOVLW
MOVWF
STATUS,RP0
PORTA
STATUS,RP0
0x00
TRISA
STATUS,RP0
PORTB
STATUS,RP0
0x01
TRISB
while(TRUE){
|
|
}
if(input(PIN_B0))
output_bit(PIN_A0,0);
else
output_bit(PIN_A0,1);
BUCLE: |
|
GOTO BUCLE
BTFSC
BCF
BSF
PORTB,0
PORTA,0
PORTA,1
;Ojo banco
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
3
31/08/2012
VARIABLES
Globales o locales, estáticas... Los mismos tipos que en C
int -> 8bit
int16 -> 16bit
int32 -> 32bit
int1 <-> char
-> 1bit
Manejo de bits/bytes
make8(); x=(y,1); x=(y,0);
offset:0,1,2,3
make16(); x=(y,z) y=int8, z=int8
make32(); x=(var1, var2, var3, var4); vari=int8
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
PROGRAMACION DE LAS VELOCIDADES I
main(){
/*
* CONFIGURACIONES
*/
int activo=40;
while(TRUE)
{
output_bit(PIN_A1,1);
delay_ms(activo);
output_bit(PIN_A1,0);
delay_ms(100-activo);
}
//Motores al 40%
//Periodo de la señal: 100ms
}
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
4
31/08/2012
TEMPORIZADOR TMR0
Se programa para que salte la interrupción cada vez que se desborde
1) Calcular cada cuánto tiempo salta la interrupción
Para esta aplicación, nos da un poco igual
2) Configurar el temporizador
setup_timer_0(RTCC_DIV_1|RTCC_INTERNAL);
set_timer0(0xFF);
3) Crear la rutina de interrupción
siguiente transparencia
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
INTERRUPCIONES
¿Dónde colocar la subrutina?
#include<16F84A>
#use delay(clock=4000000)
-> AQUÍ
#int_TIMER0
subrutina_TIMER0(){
}
main(){
}
Configurar las interrupciones:
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
5
31/08/2012
EJEMPLO II: INTERRUPCIONES
#include<16F84A>
#use delay(clock=4000000)
int flag=0;
//Variable global
#int_TIMER0
subrutina_TIMER0(){
if(flag==1)
if(flag==0)
flag=1-flag;
}
main(){
output_bit(PINB0,1);
output_bit(PINB0,0);
set_tris_b(0x00);
//Configurar B=salidas
enable_interrupts(INT_RTCC); //Configurar interrupciones
enable_interrupts(GLOBAL);
setup_timer_0(RTCC_DIV_1|RTCC_INTERNAL); //Conf. TMR0
set_timer0(0xFF); //Establecer frecuencia de parpadeo
while(TRUE);
//Bucle infinito
}
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
PROGRAMACION DE LAS
II
INCF VELOCIDADES
CONTADOR
MOVLW
SUBWF
Programación por interrupciones BTFSC
GOTO
NUM_VELOCIDADES
CONTADOR
STATUS,2 ;flag Z
INICIO
int cont=0, velocidad1=0, velocidad2=0;
MOVLW
VELOCIDAD_1
#int_TIMER0
subrutina_TIMER0(){
SUBWF
BTFSC
BCF
CONTADOR
STATUS,2 ;flag Z
PORTB,0
;O el que sea
MOVLW
VELOCIDAD_2
cont++;
SUBWF
CONTADOR
if(cont=NUM_VELOCIDADES){
BTFSC
STATUS,2 ;flag Z
output_bit(MOTOR_1,1);
BCF
PORTB,1
;O el que sea
output_bit(MOTOR_2,1);
cont=0;
GOTO SALIR
}
if(cont==velocidad1) INICIO:
output_bit(MOTOR_1,0);
PORTB,0
if(cont==velocidad2) BSF
output_bit(MOTOR_1,0);
}
BSF
CLRF
PORTB,1
CONTADOR
SALIR:
RETFIE
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
6
31/08/2012
EL PREPROCESADOR
Aquellas instrucciones que empiezan con un #
Básicamente:
- #include
- #define
- #use
Particularmente interesantes los #define
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
UNA DE CHAPA: EL REGLAMENTO
• Artículo 1: Reserva de modificación de las normas y decisiones de los
árbitros
• Artículo 2: Objetivo de la modalidad “rastreadores”
Esta prueba valorará la habilidad de un robot para recorrer un camino
sinuoso previamente establecido, en el menor tiempo posible. [...]
• Artículo 3: Tipo de robots móviles que pueden competir
Los robots han de poseer unas dimensiones máximas de 20x30cm
(ancho x largo), siendo libres la altura y el peso.En cualquier caso, deben
ser completamente autónomos [...]
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
7
31/08/2012
SIGUE LA CHAPA: EL REGLAMENTO
• Artículo 4: Desarrollo de las pruebas
La pista consistirá en una superficie clara con una línea oscura [...] de 2±0,5cm de
grosor. [...]
El camino puede presentar tantas bifurcaciones y curvas como la organización
considere oportuno. Los puntos de salida y meta serán únicos. En cualquier caso,
entre 10 y 15cm de que aparezca una bifurcación, una línea oscura de 2±0,5cm de
grosor y 5±1cm de longitud separada entre 1 y 2 cm de la trayectoria y en el sentido
de recorrido de la misma, indicará por cuál de los dos caminos de la bifurcación el
robot deberá seguir obligatoriamente [...].
El robot siempre debe seguir el camino a lo largo de la línea que define su trazado
sin posibilidad de poder evitar o saltar un parte del mismo.
En todo momento parte del robot deberá estar sobre el camino; en caso contrario
será descalificado. Si un robot permanece más de 10seg parado, quedará eliminado.
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
SIGUE LA CHAPA: EL REGLAMENTO
• Artículo 4 (continuación)
Penalizaciones:
- Cada vez que se tome un bifurcación por el lado no indicado,
se penalizará con 4 puntos
- Por cada 10seg o fracción de retraso en alcanzar la llegada
respecto del tiempo de X minutos marcado por la organización para
completar el recorrido, se penalizará 1 punto.
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
8
31/08/2012
EJEMPLO DE PISTA
TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR
9
Descargar