Charla/taller en el Chat, sobre Microcontroladores PIC y Linux [I]
Charla/taller en el Chat, sobre Microcontroladores PIC y Linux [I]
[Introducción] [Registro(Log)] [Información] [Licencia] [Download] [Links] [Agradecimientos]

Introducción

El domingo 26 de Octubre de 2003 se impartió una charla/taller por el Chat sobre las herramientas que existen en GNU/Linux para poder trabajar con los microcontroladores PIC

Microchip, el fabricante de los PICs, actualmente sólo proporciona herramientas para entornos Windows. Ese es el motivo por el que yo nunca los había usado: desde mi portátil con Debian no los podía programar, ni tampoco los podía grabar.

Buscando aplicaciones, encontré las que se presentan en esta charla: gputils y gpsim, ambas software libre, publicadas bajo licencia GPL. No son tan potentes como las herramientas para Windows, pero nos solucionan la vida a aquellos que utilizamos GNU/Linux.

Además, junto con el Profesor Andrés Prieto-Moreno, hemos desarrollado una tarjeta entrenadora, la Skypic, y el software necesario para poder grabarla fácilmente desde GNU/Linux. Ahora ya es posible hacer aplicaciones con el PIC desde GNU/Linux.

Los PICs son los que utilizamos en el Laboratorio de Arquitectura de Computadores, de cuarto curso de Informática en la Universidad Pontificia de Salamanca en Madrid [UPSAM]. Aunque el software "oficial" que se imparte es para Windows, veo muy interesante que los alumnos puedan realizar sus aplicaciones microcontroladoras desde la plataforma que ellos prefieran, bien máquinas Windows o bien Máquinas GNU/Linux.


Información


Licencia

Se otorga permiso para citar, copiar y redistribuir este texto por cualquier medio si se hace de forma literal y se mantiene esta nota


Registro (Log) de la charla



Direcciones de internet
[16:03] <Obijuan> ok, vamos a empezar con las URL's interesantes
[16:03] <Obijuan> http://www.gnupic.org/
[16:03] <Obijuan> Portal con herramientas libres para PICs
[16:03] <Obijuan> Un poco obsoleto, pero es interesante
[16:04] <Obijuan> http://gputils.sourceforge.net/
[16:04] <Obijuan> Estas son las herramientas que vamos a usar
[16:04] <Obijuan> Herramientas para trabajar con PICS: Ensamblador, desensamblador, enlazador, etc...
[16:04] <Obijuan> Compatibles con el ensamblador oficial de MicroChip: MPASM
[16:04] <sliver> Obijuan: no puedes hacer streaming de auido ?
[16:04] <Obijuan> sliver: no, pero alguien podría dar una charla sobre eso :-)))
[16:05] <Obijuan> http://www.dattalo.com/gnupic/gpsim.html
[16:05] <Obijuan> Herramienta para la simulación de los PICS
Herramientas e instalación
[16:05] <Obijuan> El GPSIM es el que usaremos
[16:05] <Obijuan> Versiones que vamos a emplear en esta charla:
[16:05] <Obijuan> gpsim: 0.20.14
[16:05] <Obijuan> gpasm: 0.11.6
[16:05] <Obijuan> Yo las tengo instaladas en mi Debian/Sarge. Para instalarlas en Debian
[16:05] <Obijuan> Sólo hay que poner:
[16:06] <Obijuan> # apt-get install gpasm gpsim
[16:06] <Obijuan> Para otras distribuciones hay que ir directamente a las URLs que os
[16:06] <Obijuan> he comentado antes
Lo que veremos en la charla
[16:06] <Obijuan> Ideas previas:
[16:06] <Obijuan> -No es un tutorial sobre como programar los PICs
[16:06] <Obijuan> -Veremos cómo manejar las herramientas disponibles para Linux,
[16:06] <Obijuan> que nos permiten manejar los PICs
[16:07] <Obijuan> -Supondré que tenéis instaladas las herramientas. Las iremos probando, yo
[16:07] <Obijuan> en mi máquina y vosotros en las vuestras. Para los que no las tengáis
[16:07] <Obijuan> instaladas será un poco rollo :-(, por eso he preparado unos "pantallazos"
[16:07] <Obijuan> para que los podáis ver :-)
[16:07] <Obijuan> -Dejad el navegador listo
Primer ejemplo: suma.asm
[16:07] <Obijuan> Vamos a empezar con un primer programa
[16:08] <Obijuan> Manos a la obra. Vamos a trabajar con un programa MUY sencillo. (lo hice
[16:08] <Obijuan> en clase). Haremos la siguiente operación: SUMA = 1 + 2
[16:08] <Obijuan> En clase vimos para qué era cada instrucción y directiva. Aquí veremos
[16:08] <Obijuan> el proceso de ensamblar y simular.
[16:08] <Obijuan> El programa lo podéis bajar de:
[16:08] <Obijuan> http://www.iearobotics.com/proyectos/charlas-irc/pic-linux/ejemplos/suma.asm
[16:09] <Obijuan> (Esta URL es temporal, sólo para esta charla. Más adelante la colocaré en
[16:09] <Obijuan> otro lugar)
[16:09] <Obijuan> Abrimos un terminal
[16:09] <Obijuan> Nos creamos un directorio de trabajo, donde probaremos todos los ejemplos:
[16:09] <Obijuan> $ mkdir pic
[16:09] <Obijuan> $ cd pic
[16:09] <Obijuan> Ahí ponemos el programa suma.asm. Los ficheros "fuente" tienen
[16:10] <Obijuan> la extensión .asm. Son archivos de texto ASCII, que podremos editar
[16:10] <Obijuan> con cualquier editor. Vamos a echar un vistazo al código, antes de
[16:10] <Obijuan> ensamblarlo.
[16:10] <Obijuan> Según los gustos:
[16:10] <Obijuan> 1) cat suma.asm
[16:10] <Obijuan> 2) emacs suma.asm
[16:10] <Obijuan> 3) vim suma.asm
[16:10] <Obijuan> 4) gedit suma.asm
[16:10] <Obijuan> 5) kate suma.asm
[16:10] <Obijuan> 6) ...
[16:10] <Obijuan> En el Laboratorio de arquitectura trabajamos con la familia
[16:10] <Obijuan> de PICS 16F87X. Los ejemplos de clase los he hecho para el
[16:10] <Obijuan> 16F876.
[16:11] <Obijuan> Sin embargo véis que en la primera línea pone:
[16:11] <Obijuan> LIST P=16F873
[16:11] <Obijuan> El simulador (GPSIM) todavía no soporta el 16F876, así que usaremos
[16:11] <Obijuan> el 16F873 que es prácticamente igual (tiene el mismo número de pines,
[16:11] <Obijuan> los mismos registros, etc...)
[16:11] <Obijuan> (Realmente no sé cual es la diferencia con el 16F876 ;-)
[16:11] <Obijuan> Así que para nosotros 16F873 = 16F876
[16:11] <Obijuan> Fijaros también en la directiva:
[16:11] <Obijuan> INCLUDE "p16f873.inc"
[16:12] <Obijuan> que incluye el archivo p16f873.inc, el cual contiene todas las definiciones
[16:12] <Obijuan> de los recursos del pic16f876. Vamos a ver físicamente donde está
[16:12] <Obijuan> este archivo, por si lo queremos ver:
[16:12] <Obijuan> $ locate p16f873.inc
[16:12] <Obijuan> /usr/share/gputils/header/p16f873.inc
[16:12] <Obijuan> Es un archivo de texto, que podemos editar... pero eso lo haremos más
[16:12] <Obijuan> adelante.
Ensamblando suma.asm
[16:12] <Obijuan> Vamos a ensamblar nuestro programa. Tecleamos:
[16:12] <Obijuan> $ gpasm suma.asm
[16:12] <Obijuan> No han aparecido errores (de hecho no sale ningún mensaje).
[16:13] <Obijuan> ¿Qué ficheros se han generado?
[16:13] <Obijuan> $ ls -l
[16:13] <Obijuan> -rw-r--r-- 1 juan juan 565 2003-10-26 11:48 suma.asm
[16:13] <Obijuan> -rw-r--r-- 1 juan juan 5632 2003-10-26 11:57 suma.cod
[16:13] <Obijuan> -rw-r--r-- 1 juan juan 56 2003-10-26 11:57 suma.hex
[16:13] <Obijuan> -rw-r--r-- 1 juan juan 12299 2003-10-26 11:57 suma.lst
[16:13] <Obijuan> La hora es de esta mañana :-)
[16:13] <Obijuan> Vemos tres ficheros nuevos:
[16:13] <Obijuan> 1) suma.hex: este es el ejecutable. Contiene el programa en código máquina
[16:13] <Obijuan> y será el que se grabe en el PIC.
[16:13] <Obijuan> Realmente es un fichero ASCII. Vamos a cotillearlo ;-)
[16:14] <Obijuan> $ cat suma.hex
[16:14] <Obijuan> :020000040000FA
[16:14] <Obijuan> :080000000130023EA0000328BC
[16:14] <Obijuan> :00000001FF
[16:14] <Obijuan> Ahí está el código máquina, junto con alguna información adicional. Este
[16:14] <Obijuan> formato es necesario conocerlo si eres un desarrollador y quieres
[16:14] <Obijuan> hacerte un grabador, por ejemplo. Se denomina formato HEX y es de Intel.
[16:14] <Obijuan> 2) suma.cod
[16:14] <Obijuan> Este es el fichero que usaremos para la simulación. No es ASCII.
[16:14] <Obijuan> 3) suma.lst
[16:14] <Obijuan> Fichero ASCII con el listado de nuestro programa, e información sobre
[16:14] <Obijuan> los símbolos empleados, cuantas palabras de memoria ocupa, etc... Nosotros
[16:14] <Obijuan> no lo usaremos.
[16:15] <Obijuan> Vamos a ver cómo funciona el programa y comprobar si hace lo que tiene
[16:15] <Obijuan> que hacer. Aquí empieza lo interesante.
[16:15] <Obijuan> Algún problema con el ensamblado?
[16:15] <Obijuan> Alguien lo ha probado? :-)
[16:15] <alejandro> está moderado el canal, por el momento no hay ninguna pregunta.
[16:15] <Obijuan> ok
Simulando el programa suma.asm
[16:15] <Obijuan> Vamos a usar el GPSIM, que es basante alfa, por lo que casca de vez en
[16:15] <Obijuan> cuando. Si lo hacéis como yo os digo no habrá problemas :-)
[16:16] <Obijuan> Pero si empezáis a pinchar opciones por vuestra cuenta seguro que
[16:16] <Obijuan> lo petáis. Aún así, veréis que es bastante potente y es cojonudo para
[16:16] <Obijuan> aprender a programar el PIC.
[16:16] <Obijuan> Manos a la obra. Teclead:
[16:16] <Obijuan> $ gpsim -s suma.cod
[16:16] <Obijuan> En la consola os aparecerá:
[16:16] <Obijuan> gpsim - the GNUPIC simulator
[16:16] <Obijuan> version: 0.20.14
[16:16] <Obijuan>
[16:16] <Obijuan>
[16:16] <Obijuan> type help for help
[16:16] <Obijuan> gpsim> Loading suma.cod
[16:16] <Obijuan> processing cod file suma.cod
[16:16] <Obijuan> f873 create
[16:16] <Obijuan> symbol at address 3 name fin
[16:16] <Obijuan> --- Reset
[16:16] <Obijuan> Enabling WDT timeout = 0.018 seconds
[16:17] <Obijuan>
[16:17] <Obijuan> gpsim>
[16:17] <Obijuan> y además se os abrirá una ventana gráfica como esta:
[16:17] <Obijuan> http://www.iearobotics.com/proyectos/charlas-irc/pic-linux/pantallazos/pantallazo1.png


[16:17] <Obijuan> (Si os aparecen más ventanas, cerradlas. Eso es que habéis estado
[16:17] <Obijuan> jugueteando antes, eh??)
[16:17] *** alejandro cierra [16:17] [Read error: 104 (Connection reset by peer)]
[16:17] <Obijuan> Vaya, el moderador se ha esfumado
[16:18] <Obijuan> De la consola nos olvidamos. Aparecerán mensajes, pero no les prestaremos
[16:18] <Obijuan> atención. Nos centraremos en el interfaz gráfico.
[16:18] <Obijuan> Lo primero que necesitamos es "ver" nuestro código fuente, para conocer
[16:18] <Obijuan> paso a paso qué ocurre cada vez que se ejecuta una instrucción.
[16:18] <Obijuan> Pinchamos en "windows" y marcamos la opción "Source". Se nos abrirá
[16:18] <Obijuan> una nueva ventana que contiene nuestro código fuente. Algo como esto:
[16:18] <Obijuan> http://www.iearobotics.com/proyectos/charlas-irc/pic-linux/pantallazos/pantallazo2.png


[16:19] <Obijuan> El resaltado de sintáxis es un poco "ortera" :-). Me imagino que en las
[16:19] <Obijuan> siguientes versiones habrá alguna opción para cambiarlo :-DDD
[16:19] <Obijuan> Vemos que en esta ventana tenemos dos "pestañas" en la parte superior
[16:19] <Obijuan> En la de la izquierda está nuestro programa suma.asm. En la de la derecha
[16:19] <Obijuan> el fichero p16f873.inc.
[16:19] <Obijuan> Los ficheros .inc son los originales de Microchip por eso no os extrañéis
[16:19] <Obijuan> al ver cosas coma esta (líneas 12 y 13):
[16:19] <Obijuan> ; 1. Command line switch:
[16:19] <Obijuan> ; C:\ MPASM MYFILE.ASM /PIC16F873
[16:19] <Obijuan> El ensamblador gpasm se ha hecho para ser totalmente compatible con
[16:19] <Obijuan> el MPASM de Microchip. Viendo estas líneas ya habéis aprendido a
[16:19] <Obijuan> ensamblar desde Windows. Para probar este mismo ejemplo sólo habría que
[16:19] <Obijuan> poner:
[16:20] <Obijuan> C:\> MPASM suma.asm
[16:20] <Obijuan> Volvemos a la pestaña de suma.asm. En la izquierda vemos una
[16:20] <Obijuan> flecha verde, que apunta a la primera instrucción:
[16:20] <Obijuan> MOVLW 1
[16:20] <Obijuan> Pero para simular necesitamos ver la memoria y todos sus registros,
[16:20] <Obijuan> el acumulador W, etc... Pinchamos en la ventana principal, en la
[16:20] <Obijuan> opción windows/ram. Se nos abre otra ventana, similar a esta:
[16:20] <Obijuan> http://www.iearobotics.com/proyectos/charlas-irc/pic-linux/pantallazos/pantallazo2.png


[16:20] <Obijuan> En ella vemos una parte de la RAM. Con la barra de desplazamiento
[16:20] <Obijuan> de la derecha nos movemos por ella.
[16:21] <Obijuan> Alguna pregunta?
[16:21] <alejandro> No, por el momento no.
[16:21] <alejandro> Aunque como se lanza el simulador una vez que hemos generado el código? :-)
[16:21] <Obijuan> $ gpsim -s suma.cod
[16:21] <Obijuan> no lo he puesto?
[16:22] <alejandro> Si, pero me cai. :)
[16:22] <Obijuan> Fijaros en la parte inferior de la ventana. Ahí podemos ver el
[16:22] <Obijuan> valor del registro de STATUS, el contenido del registro W, el
[16:22] <Obijuan> contador de programa (PC) y el tiempo. Como todavía no hemos
[16:22] <Obijuan> empezado a simular, el tiempo está a 0.00 micro-segundos.
[16:22] <Obijuan> Las celdas de color azul oscuro son registros internos del
[16:22] <Obijuan> PIC (Contador de programa, registros de periféricos, etc...)
[16:23] <Obijuan> Las celdas en negro son registros que NO están implementados
[16:23] <Obijuan> en el PIC16F876
[16:23] Alejandro recuerda que para cualquier pregunta, haganmela a mi por privado.
[16:23] <Obijuan> Las celdas "azul celeste claro" son los registros disponibles para que
[16:23] <Obijuan> los use el programador.
[16:23] <Obijuan> Las celdas grises son las que están accesibles desde todos los bancos.
[16:23] <Obijuan> (registros comunes)
[16:23] <Obijuan> Para trabajar, colocaros las tres ventanas que tenemos abiertas
[16:23] <Obijuan> de manera que tengáis acceso a ellas, por ejemplo yo lo tengo así:
[16:23] <Obijuan> (cuidado, ocupa 300KB)
[16:24] <Obijuan> http://www.iearobotics.com/proyectos/charlas-irc/pic-linux/pantallazos/pantallazo4.png
[16:24] <Obijuan> Comenzamos a simular.
[16:24] <Obijuan> Vamos a ejecutar la primera instrucción.
[16:24] <Obijuan> Pulsamos el botón "step" de la ventana principal
[16:24] <Obijuan> Se ha ejecutado:
[16:24] <Obijuan> MOVLW 1
[16:24] <Obijuan> Que lo que hace es poner el valor 1 en el acumulador W.
[16:25] <Obijuan> Podemos ver en la ventana de la RAM (parte inferior) que efectivamente
[16:25] <Obijuan> ahora W vale 0x01
[16:25] <Obijuan> Observad también que algunas posiciones de la
[16:25] <Obijuan> memoria RAM se han vuelto de color "azul"
[16:25] <Obijuan> Eso indica lo que ha cambiado
[16:25] <Obijuan> al ejecutar la instrucción.
[16:25] <Obijuan> Ejecutamos la siguiente instrucción (pinchamos otra vez en step)
[16:25] <Obijuan> ADDLW 2
[16:25] <Obijuan> Esta instrucción suma 2 a lo que había en W. Efectivamente, vemos que
[16:25] <Obijuan> ahora W vale 3.
[16:25] <Obijuan> Pinchamos otra vez en step:
[16:26] <Obijuan> MOVWF SUMA
[16:26] <Obijuan> El contenido del acumulador W se deposita en la variable SUMA. Esta
[16:26] <Obijuan> variable la hemos situado en la dirección 0x20 de la RAM. Si nos fijamos
[16:26] <Obijuan> en esa posición vemos que se ha puesto en "azul" y que contiene el valor 3
[16:26] <Obijuan> La última instrucción es un bucle infinito, para finalizar.
[16:26] <Obijuan> ¡¡Ya hemos simulado nuestro primer programa!!
[16:26] <Obijuan> Preguntas?
[16:26] <alejandro> Parece que ninguna, se lo saben todo. :-)
[16:27] <Obijuan> o nadie lo está probando :-))))
[16:27] <Obijuan> ¿Cuanto tiempo ha tardado en ejecutarse?
[16:27] <Obijuan> Miramos el tiempo y vemos que
[16:27] <Obijuan> pone: 3.00 micro segundos.
[16:27] <Obijuan> ¡¡Sólo ha tardado 3 micro segundos!! (antes de
[16:27] <Obijuan> entrar en el bucle infinito, claro, donde permanecería de por vida, hasta
[16:27] <Obijuan> que hiciésemos un reset)
[16:27] <alejandro> 33.00 µs
[16:27] <alejandro> hmm, a mi más :-)
[16:28] <Obijuan> Porque le habrás dado más veces al step
[16:28] <Obijuan> :-)
[16:28] <Obijuan> Apretad el botón "Quit gpsim". Todas las ventanas desaparecen.
[16:28] <Obijuan> Tranquilos,
[16:28] <Obijuan> gpsim almacena el tamaño y la colocación. La próxima vez que lo ejecutemos
[16:28] <Obijuan> nos aparecerá exactamente igual que como lo teníamos.
Un segundo programa de ejemplo: ledon.asm
[16:28] <Obijuan> Bueno, para terminar una segunda simulación.
[16:28] <Obijuan> Vamos a comunicarnos con
[16:28] <Obijuan> el "exterior" del PIC. Queremos encender un led que esté conectado al
[16:28] <Obijuan> bit 1 del puerto B.
[16:29] <Obijuan> Primero tendremos que configurar el puerto B para que
[16:29] <Obijuan> su bit 1 sea de salida y luego enviaremos un "1" a esa posición para que
[16:29] <Obijuan> salgan 5v voltios por el pin correspondiente y se encienda un led.
[16:29] <Obijuan> Aquí está el programa:
[16:29] <Obijuan> http://www.iearobotics.com/proyectos/charlas-irc/pic-linux/ejemplos/ledon.asm
[16:29] <Obijuan> Para los alumnos de arquitectura: este ejemplo lo mostraré el próximo
[16:29] <Obijuan> día en clase y nos servirá más adelante para comprobar que tenemos
[16:29] <Obijuan> el hardware correctamente construido
[16:29] <Obijuan> Hacemos el mismo proceso que antes. Primero ensamblamos:
[16:29] <Obijuan> $ gpasm ledon.asm
[16:29] <Obijuan> Ahora sí que nos aparece un mensaje. No es un error, es una especie de
[16:30] <Obijuan> Warning:
[16:30] <Obijuan> ledon.asm:21:Message [302] Register in operand not in bank 0. Ensure bank bits are correct.
[16:30] <Obijuan> En la línea 21:
[16:30] <Obijuan> BCF TRISB,1 ; Poner RB1 como salida
[16:30] <Obijuan> estamos accediendo al registro TRISB, que está en el Banco 1. El
[16:30] <Obijuan> ensamblador nos avisa de que tengamos cuidado. Nos tenemos que
[16:30] <Obijuan> asegurar que antes de acceder a TRISB estemos en el banco correcto.
[16:30] <Obijuan> $ ls -l ledon*
[16:30] <Obijuan> juan@milenium:~/pic$ ls -l ledon*
[16:30] <Obijuan> -rw-r--r-- 1 juan juan 1079 2003-10-26 13:01 ledon.asm
[16:30] <Obijuan> -rw-r--r-- 1 juan juan 5632 2003-10-26 13:02 ledon.cod
[16:30] <Obijuan> -rw-r--r-- 1 juan juan 60 2003-10-26 13:02 ledon.hex
[16:30] <Obijuan> -rw-r--r-- 1 juan juan 12974 2003-10-26 13:02 ledon.lst
[16:30] <Obijuan> juan@milenium:~/pic$
[16:31] <Obijuan> Se han generado los ficheros ledon.cod, ledon.hex y ledon.lst.
[16:31] <Obijuan> El fichero ledon.hex lo podríamos grabar en nuestro pic. De echo, esto
[16:31] <Obijuan> lo haremos en el Laboartorio de arquitectura.
[16:31] <Obijuan> Ahora vamos a simular.
[16:31] <Obijuan> $ gpsim -s ledon.cod
[16:31] <alejandro>Obijuan: Dicen que si puedes ir algo más despacio.
[16:31] <Obijuan> TACHAN!!!! Nos aparecen las ventanas en la misma posición que las habíamos
[16:31] <Obijuan> dejado antes: la ventana principal, la ventana con el código fuente y
[16:31] <Obijuan> la que tiene la RAM.
[16:31] <Obijuan> sorry
[16:32] <alejandro>Q: <sliver> como sabe el programador que registros tiene para usarlos, los dice el fabricante ?
[16:32] <Obijuan> Sí, viene en las especificaciones del pic
[16:32] <Obijuan> El manual del PIC16F876 se puede bajar de la página de microchip
[16:32] <Obijuan> Pero también lo tengo en mi web:
[16:33] <alejandro>A mi no me ha quedado muy claro el concepto de banco.
[16:33] <Obijuan> http://www.iearobotics.com/personal/andres/proyectos/picmin/download/manuales/manual16f87x.pdf
[16:33] <Obijuan> alejandro: eso no lo he explicado :-)
[16:33] <Obijuan> Me estoy centrando en el uso de las herramientas
[16:33] <alejandro> Ya, por eso. :)
[16:34] <Obijuan> Básicamente, en la memoria del PIC hay 4 bancos
[16:34] <Obijuan> En cada uno de ellos hay unos registros
[16:34] <Obijuan> Para acceder a esos registros hay que seleccionar el banco adecuado
[16:34] <Obijuan> En la página 15 del manual podéis ver todos los bancos, y todos los registros que hay en ellos
[16:34] <Obijuan> En la página 158 están todos los nemónicos
[16:35] <Obijuan> Pero ahora nos centraremos en la simulación
[16:35] <Obijuan> Tenéis ensamblado el programa ledon.asm?
[16:35] <alejandro> si
[16:35] <Obijuan> Continuamos con la simulación
[16:36] <Obijuan> $ gpsim -s ledon.cod
[16:36] <Obijuan> Y os deberían aparecer todas las ventanas que tenías abierta antes
[16:36] <Obijuan> Una con las Fuentes, otra con la ram y la principal
[16:36] <Obijuan> Pero necesitamos más cosas. Ahora queremos ver qué está pasando con los
[16:36] <Obijuan> pines del pic.
[16:36] <Obijuan> Pinchamos en windows/pin (en la ventana principal) y nos
[16:36] <Obijuan> aparece un dibujo (un poco cutre) del PIC
[16:37] <Obijuan> Aquí lo podéis ver:
[16:37] <Obijuan> http://www.iearobotics.com/proyectos/charlas-irc/pic-linux/pantallazos/pantallazo5.png


[16:37] <Obijuan> Este tipo de dibujos reciben el nombre de PinOut.
[16:37] <Obijuan> Las "cosas" verdes que hay son en realidad "flechas" que nos indican el
[16:37] <Obijuan> sentido del pin.
[16:38] <Obijuan> Ahora está indicando que son PINES DE ENTRADA (Es el
[16:38] <Obijuan> estado por defecto depués de un reset).
[16:38] <Obijuan> Las letras "L" indican que los pines están a nivel "LOW".
[16:38] <Obijuan> El color verde
[16:38] <Obijuan> de las flechas nos indica esto también: que todas las entradas están
[16:38] <Obijuan> a "LOW", es decir, que se está recibiendo un '0' lógico.
[16:38] <Obijuan> Comenzamos la simulación.
[16:38] <Obijuan> Pulsamos Step
[16:38] <Obijuan> BSF STATUS,RP0
[16:38] <Obijuan> Con esta instrucción ponermos a 1 el bit RP0 del registro de STATUS,
[16:38] <Obijuan> para acceder al banco 0.
[16:39] <Obijuan> Volvemos a pulsar STEP:
[16:39] <Obijuan> BCF TRISB,1
[16:39] <Obijuan> Con esto configuramos el pin 1 del puerto B para que sea de salida
[16:39] <Obijuan> en vez de entrada.
[16:39] <Obijuan> Fijaros en el Pinout
[16:39] <Obijuan> Ahora la Flecha verde que está en "portb1" está
[16:39] <Obijuan> apuntando hacia fuera: Esto indica que se ha configurado como salida.
[16:39] <Obijuan> Chulo, eh?
[16:40] <Obijuan> Lo véis bien?
[16:40] <alejandro>si, mola. :)
[16:40] <alejandro> <sliver> el dibujo es horrible
[16:40] <alejandro> jeje. :-)
[16:40] <Obijuan> Siguiente instrucción. Hacemos otro STEP:
[16:40] <Obijuan> BCF STATUS,RP0
[16:40] <alejandro> <HyLian> dile q ta mu chulo xD
[16:40] <Obijuan> Ahora accedemos al banco 0, que es donde se encuentra el registro PORTB
[16:40] <Obijuan> Hacemos un nuevo STEP:
[16:41] <Obijuan> BSF PORTB,1
[16:41] <Obijuan> Con esto ponemos a '1' el bit 1 del puerto B, es decir, sacamos 5v al
[16:41] <Obijuan> exterior del PIC.
[16:41] <Obijuan> Fijaos en el Pinout: Ahora la flecha es Roja y tiene la
[16:41] <Obijuan> letra H de "HIGH".
[16:41] <Obijuan> Hemos sacado 5v al exterior. Y si tenemos conectado un
[16:41] <Obijuan> led en nuestro PIC real, veríamos que se encendería.
[16:41] <Obijuan> ¿Cuanto tiempo ha tardado en ejecutarse el programa?
[16:41] <Obijuan> Miramos el tiempo: 4 micro-segundos.
[16:42] <Obijuan> ¿Cuanta memoria ocupa el programa?
[16:42] <Obijuan> Pinchamos en Windows/program memory para ver la memoria de programa:
[16:42] <Obijuan> Vemos que ocupa 5 posiciones, desde la 0x0000 hasta la 0x0004. Es decir,
[16:42] <Obijuan> 5 palabras de memoria.
[16:42] <Obijuan> El PIC16F876 tiene 8K palabras en total
Fin de la charla
[16:42] <Obijuan> Con el GPSIM podemos hacer cosas mucho más potentes: poner breakpoints,
[16:42] <Obijuan> simular interrupciones, conectar LCDs...
[16:43] <Obijuan> pero eso lo veremos en otra
[16:43] <Obijuan> charla :-)
[16:43] <Obijuan> No quiero aburriros
[16:43] <Obijuan> Para terminar:
[16:43] <Obijuan> http://www.iearobotics.com/proyectos/charlas-irc/pic-linux/pantallazos/fin.png
[16:43] <Obijuan> Con estas nociones básicas, se pueden simular todos los programas que hagan en clase del laboratorio de Arquitectura
[16:44] <Obijuan> Otro día organizaremos otra charla pero de programación del PIC, ahora que ya conocemos las herramientas
[16:44] <Obijuan> Preguntas? Dudas?



Download

Ejemplos empleados en la charla
Fuente Ejecutable Simulación Descripción
suma.asm suma.hex suma.cod Programa básico que hace la operación: SUMA = 1 + 2
ledon.asm ledon.hex ledon.cod Programa que enciende el led conectado al pin RB1


Registro de la charla
log-26-oct-2003.txt Log en ASCII
log-26-oct-2003.pdf Log en PDF
log-post-charla-26-oct-2003.txt Log de las conversaciones de después de la charla, en ASCII




Agradecimientos


IEA ROBOTICS
Juan González