I Jornadas de Iniciacin a la Microbtica 2004 - PowerPoint PPT Presentation

1 / 37
About This Presentation
Title:

I Jornadas de Iniciacin a la Microbtica 2004

Description:

I Jornadas de Iniciaci n a la Microb tica 2004. Organiza: AMUBu ... 'Robotics Explorations' Fred G. Martin. Jornadas de Iniciaci n a la Microb tica. PROGRAMACI N ... – PowerPoint PPT presentation

Number of Views:22
Avg rating:3.0/5.0
Slides: 38
Provided by: javiermart
Category:

less

Transcript and Presenter's Notes

Title: I Jornadas de Iniciacin a la Microbtica 2004


1
I Jornadas de Iniciación a la Microbótica 2004
A M U B u
PROGRAMACIÓN
A M U B u
  • Organiza AMUBu
  • Asociación de Microbótica de la Universidad de
    Burgos
  • www.amubu.com amubu_asoc_at_yahoo.com

2
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Introducción.
  • Cómo se programa un microcontrolador?
  • Lenguajes de programación para microbots.
  • Lenguaje IC (Handyboard).
  • Lenguaje ensamblador (PICs).
  • Programación de PICs en C.
  • Qué lenguaje elijo?

A M U B u
3
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
PROGRAMACIÓN
A M U B u
4
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Qué es la Handyboard?

Se trata de un sistema electrónico basado en el
microcontrolador M68HC11. Engloba casi toda la
electrónica necesaria para la construcción de un
microbot.
Es un sistema cerrado
A M U B u
5
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Qué es la Handyboard?

A M U B u
6
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Introducción.
  • Cómo se programa un microcontrolador?
  • Lenguajes de programación para microbots.
  • Lenguaje IC (Handyboard).
  • Lenguaje ensamblador (PICs).
  • Programación de PICs en C.
  • Qué lenguaje elijo?

A M U B u
7
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
PROGRAMACIÓN
  • Cómo se programa un microbot? (Handyboard)

Crear archivo .C (programación en IC?
Interactive C)
A M U B u
8
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
PROGRAMACIÓN
  • Cómo se programa un microbot? (PIC)

Crear archivo .C (programación en C)
Crear archivo .asm (programación en ensamblador)
La herramienta MPLAB de Microchip puede englobar
a todas ellas. Además, incluye un depurador
A M U B u
9
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Introducción.
  • Cómo se programa un microcontrolador?
  • Lenguajes de programación para microbots.
  • Lenguaje IC (Handyboard).
  • Lenguaje ensamblador (PICs).
  • Programación de PICs en C.
  • Qué lenguaje elijo?

A M U B u
10
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Lenguaje de programación IC (Interactive C)

Se trata de programar en C, aunque usando unas
funciones que nos permiten controlar directamente
los recursos de una Handyboard (puertos E/S,
motores, servos, etc.)
  • La base va a ser un programa en C, por lo que su
    estructura será la misma.
  • Cabeceras (includes, preprocesador, etc.)
  • Función main()
  • Otras funciones

A M U B u
11
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Funciones para programar MOTORES en IC

Mover los motores al 100
fd(int m) ? mover motor m hacia delante
(forward) bk(int m) ? mover motor m hacia atrás
(backward)
A M U B u
12
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Funciones para programar PUERTOS en IC

Entradas digitales
digital(int p) ? leer la patilla p
(esta función nos puede devolver un 1 o un 0)
A M U B u
13
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Funciones para programar TIEMPOS en IC

sleep(float sec) ? esperar sin hacer otra cosa
durante sec segundos sleep(1.5) msleep(long
m_sec ) ? esperar sin hacer otra cosa durante
m_sec milisegundos msleep(1500L)
A M U B u
14
Jornadas de Iniciación a la Microbótica
PROGRAMACION
  • Funciones para programar MULTITAREA en IC

main int pid1,pid2 pid1start_process(sensor_d
cha) pid2start_process(sensor_izda) sigue
el código... kill_process(pid2) sensor_dcha(
) código ... sensor_izda() código ...
pidstart_process(nombre) ? comienza
paralelamente a ejecutar la función que se llama
nombre. pid es el identificador del
proceso kill_process(pid) ? mata al proceso
cuyo identificador es pid kill_all() ? mata a
todos los procesos en ejecución
A M U B u
15
Jornadas de Iniciación a la Microbótica
PROGRAMACION
  • Otras posibilidades de programación en IC
  • Uso de servos con la expansión
  • Programación del emisor-receptor de infrarrojos
  • Knob Potenciómetro que da valores de 0 a 255
  • Posibilidad de insertar código ensamblador del
    M68HC11 entre el código en IC
  • Sacar datos por pantalla.
  • Otras muchas (puertos dedicados... )

A M U B u
16
Jornadas de Iniciación a la Microbótica
PROGRAMACION
  • Ejemplo de programación en IC

/
Programación de un robot que
va por una habitación. Cuando choca con un objeto
retrocede un poco, se da la vuelta, y
sigue.
/ define DCHA 1 define
IZDA 3 define SENS_D digital(1) define SENS_I di
gital(2) void main() fd(DCHA) /Ponemos los
motores a funcionar / fd(IZDA) while(1)
/Este bucle se repite indefinidamente/ if(S
ENS_D1SENS_I1) bk(DCHA) /
Retrocedemos / bk(IZDA) sleep(1.5) fd(
DCHA) / Giramos / sleep(0.5) fd(IZDA) /
Volvemos a avanzar /
A M U B u
17
Jornadas de Iniciación a la Microbótica
PROGRAMACION
  • Bibliografía sobre programación en IC

www.handyboard.com
  • Pinchando en el apartado de DOCS, podremos
    encontrar
  • The Handyboard Thecnical Reference
  • Interactive C for the Handyboard Manual
  • Manuales sobre el M68HC11
  • Otros documentos interesantes

Robotics Explorations Fred G. Martin
A M U B u
18
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Introducción.
  • Cómo se programa un microcontrolador?
  • Lenguajes de programación para microbots.
  • Lenguaje IC (Handyboard).
  • Lenguaje ensamblador (PICs).
  • Programación de PICs en C.
  • Qué lenguaje elijo?

A M U B u
19
Jornadas de Iniciación a la Microbótica
PROGRAMACION
  • Ensamblador para PIC Estructura interna (16F84)

A M U B u
20
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Registros más importantes del PIC 16F84

A M U B u
21
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Registro de estado (STATUS)

RP1-RP0 Selección de banco para direccionamiento
directo
Z Señalizador cero DC Señalizador de acarreo (4º
bit de menos peso) C Señalizador de acarreo
(octavo bit)
A M U B u
22
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Partes de un programa en ensamblador
  • Etiquetas
  • Ej PORTA EQU 0x01
  • Configuración
  • Establecer como va a funcionar cada recurso del
    PIC
  • Cargar datos en los registros de configuración
  • Programa, propiamente dicho

A M U B u
23
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
LIST P16F84 RADIX HEX INCLUDE
P16F84.INC ORG 0X00 INICIO bsf STATUS, RP0
Seleccionamos el banco 1 clrf TRISB 0Salidas
1Entradas movlw b00000110 movwf TRISA
Dos patillas de A son entradas bcf STATUS,RP0
Volvemos al banco 0 movlw 0xFF movwf PORTB
Encendemos los motores BUCLE btfsc PORTA,1
Leemos lo que hay en el puerto A
Comprobamos si RA11 goto GIRA_DCHA Si es
RA11, el sensor IZDO ha tocado la línea,
luego paramos el motor IZDO btfsc PORTA,2
Idem, con el sensor derecho (RA2) goto GIRA_IZDA
Si no, seguimos esperando goto BUCLE GIRA_DCH
A bsf PORTB,1 Encendemos el motor
derecho bcf PORTB,2 Apagamos el motor
izquierdo GIRA_IZDA bcf PORTB,1 Apagamos el
motor derecho bsf PORTB,2 Encendemos el motor
izquierdo
  • Ejemplo de programación en ensamblador

A M U B u
24
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Introducción.
  • Cómo se programa un microcontrolador?
  • Lenguajes de programación para microbots.
  • Lenguaje IC (Handyboard).
  • Lenguaje ensamblador (PICs).
  • Programación de PICs en C.
  • Qué lenguaje elijo?

A M U B u
25
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Programación de PICs en lenguaje C

Existe una gran diversidad de compiladores de C
para programar microcontroladores PIC. Cada uno
de ellos tiene unas peculiaridades y unas formas
de programar distintas. Nosotros vamos a ver el
compilador C2C, por ser el más sencillo, aunque
cualquier otro es igualmente válido.
A M U B u
26
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Programación de PICs en lenguaje C
  • Como ocurría con el lenguaje IC, la estructura de
    un programa en C para PICs sigue teniendo la
    estructura clásica de un programa en C
  • cabecera con instrucciones del preprocesador
  • función main()
  • llamadas a funciones
  • control de flujo
  • ...

A M U B u
27
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Funciones particulares para programar PICs

Lo primero del programa será establecer la
frecuencia del reloj que estemos usando, para
cálculo de tiempos, principalmente. Usamos la
instrucción del preprocesador pragma
CLOCK_FREQ 4000000 Existen otra serie de
pragmas, no muy corrientes, que pueden ser
consultados en la bibliografía.
A M U B u
28
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Funciones particulares de C2C
    Operaciones con registros

Al principio de la función main(), como en
lenguaje ensamblador, deberemos configurar las
líneas de los puertos como entradas o salidas.
INICIO bsf STATUS, RP0 Seleccionamos el banco
1 clrf TRISB 0Salidas 1Entradas movlw b00
000110 movwf TRISA Dos patillas de A son
entradas bcf STATUS,RP0 Volvemos al banco 0
set_bit(STATUS,RP0) / Seleccionamos el banco 1
/ set_tris_b(0) / 0salidas 1entradas
/ set_tris_a(0000110b) / Dos patillas de A
son entradas / clear_bit(STATUS,RP0) /
Volvemos al banco 0 /
A M U B u
29
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Funciones particulares de C2C
    Operaciones con registros

A M U B u
30
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Funciones particulares de C2C
    Operaciones con los puertos

A M U B u
31
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Funciones particulares de C2C
    Operaciones con el tiempo

delay_s(número) segundos delay_ms(número) mil
isegundos delay_us(número) microsegundos
A M U B u
32
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
pragma CLOCK_FREQ 4000000 main() set_bit(STATU
S,RP0) / Seleccionamos el banco 1
/ set_tris_b(0) / 0salidas 1entradas
! set_tris_a(0000011b) / RA1 y RA0 son
entradas / clear_bit(STATUS,RP0) / Volvemos
al banco 0 / output_port_b(11110000b) /
Ponemos a andar al robot / while(1) /
Repetimos el bucle indefinidamente
/ if(input_pin_port_a(0)1) output_port_b(
11000000) / Retrocedemos / delay_s(2) o
utput_high_port_b(5) / Giramos
/ delay_s(0.1) output_high_port_b(4) /
Volvemos a avanzar / if(input_pin_port_a(1)
1) output_port_b(11000000) /
Retrocedemos / delay_s(2) output_high_port
_b(4) / Giramos / delay_s(0.1) outpu
t_high_port_b(5) / Volvemos a
avanzar /
  • Ejemplo de programación de un PIC en C

A M U B u
33
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Introducción.
  • Cómo se programa un microcontrolador?
  • Lenguajes de programación para microbots.
  • Lenguaje IC (Handyboard).
  • Lenguaje ensamblador (PICs).
  • Programación de PICs en C.
  • Qué lenguaje elijo?

A M U B u
34
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Qué lenguaje elijo?

Debemos plantearnos
  • Voy a emplear una tarjeta comercial, o voy a
    crear yo mi propia tarjeta?
  • Si me creo yo mi propia tarjeta, Qué
    micro-controlador voy a usar? ?Dispongo del
    software necesario para programarlo?
  • Si no dispongo de él, cuánto dinero me quiero
    gastar en comprar software?

A M U B u
35
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Nuestro caso Tenemos todas las herramientas
    (PIC)

A M U B u
36
Jornadas de Iniciación a la Microbótica
PROGRAMACIÓN
  • Una posibilidad

Hacer el programa en lenguaje C, introduciendo
en ensamblador las partes que nos resulten más
sencillas o menos engorrosas
Así, conseguimos optimizar el código, sin
complicarnos, y poco a poco vamos cogiendo
confianza con el ensamblador, hasta que logremos
escribir un programa completo en ensamblador
A M U B u
37
I Jornadas de Iniciación a la Microbótica 2004
A M U B u
PROGRAMACIÓN
A M U B u
Organiza AMUBu Asociación de Microbótica de la
Universidad de Burgos www.amubu.com
amubu_asoc_at_yahoo.com
Write a Comment
User Comments (0)
About PowerShow.com