miércoles, 2 de mayo de 2012

viernes, 10 de abril de 2009

Manual de la placa Easy8051B

Aquí tenéis el manual completo de la placa Easy8051B utilizada en prácticas. En este documento se explica en detalle todas las conexiones, los puertos, la utilidad de todos los jumpers, etc.
Descargar manual

martes, 10 de marzo de 2009

Prácticas de microcontroladores

Aquí podéis ver un video que presenta el material necesario para realizar las prácticas con microcontroladores.
http://polimedia.upv.es/visor/?id=a66bcd1c-2b6e-0a48-b9fe-532ae1da8b72

Cuestionario Ensamblador 2 (y puertos)

Aquí tenéis el cuestionario de repaso con ejercicios de ensamblador y el uso de los puertos en el microcontrolador.
Descargar cuestionario

lunes, 2 de marzo de 2009

Cuestionario Ensamblador 1

Aquí os deja el documento de repaso para el tema de Ensamblador y ciclos de máquina.
Leer documento (1 página)
Leer solución (2 páginas)

Ciclos máquina y tiempos de ejecución

En este documento se hace una breve introducción a los microcontroladores, se cita algunos ejemplos, sus características y se presenta el micro utilizado en clase, detallando el funcionamiento del reloj con lo que se introduce la definición de ciclo de máquina y tiempos de ejecución. Hay una serie de ejercicios que podéis ir haciendo y que fijan conceptos básicos.

Leer el documento (16 páginas)

Cuestionario I de Programación en C

Os dejo aquí el enlace al primer cuestionario del tema de programación en C.
Leer documento (1 página)
Soluciones


martes, 24 de febrero de 2009

lunes, 23 de febrero de 2009

Tablas del micro T89C51CC01

Para realizar las prácticas y conocer las direcciones de los registros debes mirar la documentación técnica del microcontrolador. Esta información la puedes llevar al examen.

Empezando a utilizar la placa Easy8051B

Antes de empezar a utilizar la placa de prácticas Easy8051B, puedes leer este pequeño manual en el que se explica como descargar el compilador e instalarlo en tu PC.
Leer

martes, 17 de febrero de 2009

Cuestionario Microcontroladores 1

Aquí puedes descargar el cuestionario del tema de introducción a los microcontroladores. El objetivo es que lo respondas una vez haya quedado vista la sesión de teoría.
Descargar preguntas

Soluciones:

1. Cita las diferencias entre sistemas basados en microcontrolador y en microprocesador.

Los sistemas basados en microprocesador necesitan placas externas para funcionar, tarjetas de adquisición de datos DAQ (como las vistas en las prácticas), memoria, sistemas gráficos, etc. Para su utilización se hace necesario la utilización de un S.O. (Linux, Windows, MacOS) sobre el que se instala la aplicación. Los sistemas basados en microprocesadores se utilizan en aplicaciones genéricas y en aquellos entornos en los que la potencia de cálculo es prioritaria.

Un ejemplo es el control y clasificación de piezas de fruta en un almacén con ayuda de videocámaras. En este caso hay una gran cantidad de información que debe ser procesada en tiempo real y requiere la utilización de CPU muy potentes, en estos casos es difícil que un microcontrolador pueda competir.

Por otra parte en los sistemas con microprocesador tenemos una gran facilidad en la visualización de la información (salida VGA) y podemos usar periféricos externos estándar. A favor del microprocesador podemos decir que es más flexible en cuanto al hardware (mucha oferta en el mercado) y al software a utilizar (diferentes compiladores).

En contra tenemos el espacio que ocupa un sistema basado en un microprocesador. Si el producto final debe ser comercializado y tener un tamaño reducido, no es una opción trabajar con un PC y debemos pensar en sistemas basados en microcontroladores.

El microcontrolador es un sistema empotrado que contiene todo lo necesario, dispone de la unidad de control, la CPU, el banco de registros, la memoria principal, el módulo de entrada/salida y el sistema de adquisición de datos (DAQ). Debido a su alta integración solemos encontrarlos en sistemas empotrados y de tamaño reducido, principalmente, siendo el bajo coste por unidad uno de los principales argumentos para su elección. Un sistema basado en un microcontrolador no depende del S.O.

Si el objetivo es un hardware que pueda venderse, que sea portable y barato (fabricando cientos o incluso miles de unidades), entonces estará justificado el uso de microcontroladores. Si lo que deseamos es controlar un proceso en una nave industrial, un PC con una tarjeta de adquisición de datos será suficiente. Hay que tener en cuenta que en este caso generalmente los clientes necesitarán una actualización del sistema en el tiempo, algo que no sucede con sistemas desarrollados con microcontrolador como puedes ser mp3, móviles u otros dispositivos que son sistemas cerrados.

Resumiendo podríamos decir que un microcontrolador se utiliza en aplicaciones específicas en las que la potencia de cálculo no es proiritaria y sí lo es el tamaño. Los sistemas basados en microprocesador se utilizan en aplicaciones en las que esté justificado el uso de un PC ya sea por razones de espacio o por costes, pero básicamente el producto final a obtener puede determinar la plataforma a utilizar.

2. Cita dispositivos de tu entorno que utilicen microcontroladores.

Mando a distancia de la televisión, nevera, Xbox, iPod, coche, microondas, reloj digital, coche, móvil, TV, osciloscopio, aparatos de cocina, aire acondicionado, cámaras digitales, lectores de tarjetas.

3. Busca dos fabricantes de microcontroladores y detalla las características de uno de sus micros que integre puertos USB o que pueda transmitir datos vía radiofrecuencia (RF).

Microchip tiene muchos modelos que incluyen interfaz USB. Un ejemplo puede ser el modelo PIC18F13K50.

Atmel por otro lado, también ofrece integrados con USB, otro ejemplo puede ser el modelo AT90USB1286.

4. Describe para los modelos anteriores elegidos, las características principales, velocidad, cantidad de memoria, número de puertos, dispositivos integrados, etc.

Modelo PIC18F13K50.
Para empezar puedes ver que utiliza memoria tipo Flash, esto quiere decir que puede programarse muchas veces. Tiene 8KB de espacio para el programa y procesa instrucciones a 12MIPS. Cuenta con 512Bytes de memoria para datos y 256Bytes de EEPROM. Para comunicarse con otros dispositivos cuenta con interfaces USART, SPI e I2C (muy utilizado en sistemas domóticos). Cuenta con 4 temporizadores integrados, uno de 8bits y tres de 16bits. También tiene 9 canales para digitalizar señales analógicas con una resolución de 10bits, esto quiere decir que podríamos utilizar este micro para montar un sistema de alarma con hasta 9 sensores de presencia. Otro dato importante es la tensión de funcionamiento, que está en el rago de 1.8 a 5.5 voltios. Como puedes ver también dispone de interfaz USB. Para datos más específicos puedes consultar la hoja de características mirando en la web del fabricante.

Modelo AT90USB1286.
Este micro también dispone de interfaz USB, 128KB de memoria para programa, 8KB para datos y 4KB de EEPROM. Si quisiéramos conectar sensores analógicos podríamos conectar hasta 8 sensores con 10 bits de resolución. Puede ejecutar instrucciones hasta 16MIPS. La tensión de funcionamiento es de 2.7 a 5.5 voltios. Para información detallada, puedes entrar en la web del fabricante y localizar la hoja de características.

5. Si alguna característica de estos microcontroladores es desconocida para ti, apúntala aquí. Detallamos aquellas que nos habéis preguntado (puedes enviar un email si tienes más dudas):

MIPS: Es una forma de medir la potencia de cálculo de un micro. Hace referencia a millones de instrucciones por segundo (Million Instructions Per Second). Puede servir de referencia a la hora de comparar micros pero no es del todo exacto porque depende de las instrucciones de cada micro y de la gestión que hace de la memoria, es decir, puede servir de referencia si tienen el mismo juego de instrucciones pero no será exacto para comparar micros diferentes.
Lee más en Wikipedia.

SPI: Es un estándar de transmisión de datos entre circuitos integrados de equipos electrónicos. Al usar un sistema serie, se reduce el número de pistas, los pines, el tamaño de los circuitos y por lo tanto el coste final. En estos sistemas la velocidad de transmisión no es importante. Si el micro incluye este protocolo, se facilita una rápida integración con otros dispositivos.
Lee más en Wikipedia.

USART: Transmitir la información por un único cable es mucho más efectivo en coste que hacerlo en paralelo utilizando más cables (comunicación serie frente a paralelo). Un dispositivo USART permite transmitir la información de manera secuencial (en serie) entre dispositivos. Por ejemplo cuando un micro tiene esta funcionalidad, transmitir datos desde el micro a un PC por el puerto serie es inmediato.
Lee más en Wikipedia

6. Describe las características del entorno de desarrollo MPLAB IDE de Microchip. ¿Para qué sirve?

Cuando se toma la decisión de utilizar un microcontrolador para un proyecto, necesitamos un software para escribir el código, depurarlo, compilarlo y finalmente grabarlo en el micro, ésta es la finalidad de un entorno de desarrollo (IDE). Los microcontroladores pueden programarse en diferentes lenguajes desde Basic, C, Pascal, ensamblador, etc. Puedes elegir diferentes entornos de desarrollo o compiladores. MPLAB es un IDE fabricado por Microchip y sólo funciona para los micros de esta empresa. También puedes utilizar otros compiladores que pueden programar cualquier microcontrolador (por ello éstos se denominan compiladores cruzados), por ejemplo KEIL es uno de ellos, que precisamente es el que utilizaremos en las prácticas del segundo cuatrimestre.
Página web de KEIL
Lee sobre KEIL en Wikipedia
Lee sobre MPLAB en Wikipedia
Información de MPLAB por Microchip
Tutorial detallado de MPLAB (fuente blog Micropic)

7. ¿Qué es la arquitectura Harvard?

Cuando una máquina tiene arquitectura Harvard, significa que físicamente los datos del programa y las instrucciones se almacenan en lugares diferentes. Por contra en máquinas con arquitectura Von Neumann se almacena juntos los datos y las instrucciones.
Lee sobre la arquitectura Harvard en Wikipedia

8. En un microcontrolador, ¿para qué sirve el registro Watchdog?

También se llama perro guardián. Prácticamente todos los microcontroladores disponen de este sistema. Es un temporizador que decrementa su valor y al llegar a cero hace que el micro se resetee. Si por cualquier motivo, el programa en ejecución falla o se bloquea, este contador hará que el micro se reinicie. Por supuesto en la programación del micro hay que tenerlo en cuenta para ir reiniciando este temporizador se manera periódica para evitar que llegue al valor de disparo. Esta funcionalidad puede deshabilitarse al programarlo, sólo hay que configurar el bit necesario en uno de sus registros.
Lee más en Wikipedia

9. ¿Qué es un ciclo de máquina?

Un ordenador básicamente sólo puede hacer un tarea a la vez. Cada tarea debe desmenuzarse en sus pasos más básicos. La secuencia de pasos desde que lee una instrucción y se ejecuta hasta que se lee la siguiente se llama Ciclo de Máquina. Este ciclo de máquina es igual a un determinado número de tics de reloj, diferente en función del microcontrolador.
Artículo sobre los ciclos de máquina y tiempos de ejecución

10. ¿Qué ventajas puede tener programar en Ensamblador? Cuando diseñas una aplicación para un microcontrolador ¿Es mejor programar en alto nivel o en Ensamblador?

Si va a ser una aplicación compleja, lo mejor es desarrollarla completamente en lenguaje de alto nivel ya que permitirá un mejor trabajo en equipo y una rápida depuración del código, no obstante, si es una aplicación sencilla, de unas pocas decenas de líneas, podría ser interesante, por eficiencia, escribirla en ensamblador.

miércoles, 3 de diciembre de 2008

Obtener el identificador de la tarjeta

Antes de utilizar la tarjeta NI USB-6008 hay que conocer su ID (identificador que le asigna el sistema al conectarla al PC). Este mini documento explica como obtenerlo.

Puedes descargarlo aquí.

lunes, 24 de noviembre de 2008

Uso de unidades en Borland C++

Este mini documento explica muy brevemente el uso de las unidades en los proyectos con Borland C++.

Puedes descargarlo aquí.

lunes, 27 de octubre de 2008

Práctica 5 · Entrada digital (tarjeta NI USB-6008)

La práctica 5 consiste en configurar la tarjeta NI USB-6008 para leer un sensor conectado a un pin de entrada (señal digital) mostrando el cambio de estado por pantalla, por ejemplo con un mensaje del tipo "Sensor activado!!". Se hace uso de las unidades, las funciones de la librería para la tarjeta y se diseña un interfaz gráfico sencillo.

Puedes descargar la práctica aquí.

sábado, 28 de junio de 2008

¿Qué son los registros DPL y DPH?

Una pregunta de Francisco:

"Hola Luis: Tengo unas dudas respecto al problema de ensamblador de Junio 2006. Copio el programa literalmente aqui:

org 5000h
Etiqueta1:
MOV R0,30h
Etiqueta2:
MOV DPL, 31h
MOV DPH,32h
MOVX A,@DPTR
INC DPTR
MOV 31h,DPL
MOV 32h,DPH
MOV DPL,33h
MOV DPH,34h
MOVX @DPTR,A
INC DPTR
MOV 33h,DPL
MOV 34h,DPH
DJNZ R0,Etiqueta2end

"Vale pues mi pregunta es la siguiente: cuando pone DPL y DPH ¿cómo lo tengo que considerar?, así a simple vista puedo entender que uno es la parte alta y otro la baja, pero ¿cómo busco eso en las tablas? Saludos y Gracias."

Respuesta del profesor:

El microcontrolador visto en clase dispone de un registro de 16 bits llamado DPTR, pero como no dispone de una instrucción para cargarlo de una vez, debemos hacerlo con dos instrucciones MOV, primero cargando la parte baja (MOV DPL,31h) y luego la parte alta (MOV DPH,32h). Ambos registros puedes verlos en las tablas, te los pongo señalados en la figura siguiente:

Mucho ánimo!!

martes, 24 de junio de 2008

Dudas de un problema de examen

En el examen de Junio de 2006, sobre el siguiente problema:

"Se desea controlar un proceso industrial que temporice un tiempo t1 de 1 segundo,
posteriormente otro tiempo t2 de medio segundo y cuando finalice t2 escriba en el puerto
P2 el valor 0xF1 y así sucesivamente. Para ello se utilizará el Timer 0 del microcontrolador Atmel y se programará en modo 16 bits atendido por interrupciones. Para temporizar los tiempos t1 y t2 se utilizará el conteo de desbordamientos. Reloj de 12 Mhz."


Pregunta1: En el enunciado, nos dicen sacar por el puerto P2 el valor en hexadecimal de F1 y sucesivamente. ¿Qué quieren que hagamos?

-R: lo que quería decir (yo puse el problema) es que se enviara dicho valor por el puerto y volviera a comenzar el proceso de nuevo...

Pregunta2: Para calcular los valores de THO y TLO tenemos que calcular el tiempo del ciclo de maquina ¿Qué fórmula se utiliza?

-R: por supuesto, es lo primero que debes hacer porque todos los cálculos se basan en el ciclo de máquina y éste depende de la velocidad de la máquina, a mayor frecuencia, el ciclo de máquina es más 'rápido' (el tiempo que tarda en ejecutar una instrucción es más pequeño ya que el reloj va más rápido). Por lo tanto lo primero es calcular vuestro CM (ciclo máquina) en función de la frecuencia que os den.

Un ejemplo: Supongamo un problema en el que te dan una frecuencia de 12Mhz...

- Primero calcula el inverso para sacar el periodo: 1/12Mhz=0,8333microsegundos.

- Después mira la documentación del micro para ver cuantos ciclos de reloj tiene un ciclo de máquina (Atmel tiene 12CLK por CM, Microchip tiene 4CLK por CM).

- En nuestro caso (Atmel) si ves las transparencias tiene 12, por lo tanto un ciclo de máquina en este micro tardará en ejecutarse: 12x0,8333...= 1microsegundo.

Fíjate que ésto es lo primero que tienes que hacer en un problema, ya que todos los cálculos están basados en el tiempo de ciclo de máquina. Prueba a hacerlo para otras frecuencias como 2Mhz, 10Mhz o 40Mhz.

Pregunta3: Una vez calculado el TCM calculamos el número de cuentas necesarias. Si el número de cuentas es superior a 2^número de bits del temporizador se tiene que obtener el resto que introducimos en THO y TLO. ¿Tiempo total = TCM x Cuentas?

-R: Imagina que te sale una cuenta de 65.781 (una cuenta completa de 65.536 más una parcial de 245), en este caso tendrás que cargar primero el resto 245 en TL0 (TH0=0) para contabilizarlo primero y después dejar que se desborde una vez para completar la cuenta...

Puedes hacerlo al revés, primero la cuenta completa y después la parcial. En ambos casos necesitas una variable que te cuente los desbordamientos.

Resumiendo: cuando la cuenta supera el valor máximo del registro, hay que hacer varias pasadas o desbordamientos para ir 'acumulando', por lo tanto el tiempo total será: TCMxCuentas.

Sobre el examen de Junio (2º parcial)

Unas preguntas de Antonio...

Pregunta1 ¿cómo va a ser el examen? ¿test, problemas como las practicas...?
-R: habrá 3 problemas, ensamblador, interrupciones y temporizadores.

Pregunta2: ¿las tablas las llevamos nosotros, no?
-R: Sí, no os las olvidéis, las necesitaréis para resolver los problemas.

Pregunta3: el tema de las practicas... ¿cuándo saldrá la lista para saber cuales nos faltan por hacer y cuando se podran recuperar?
-R: A estas alturas las prácticas ya no se recuperan.

Pregunta4: ¿cuándo son tus tutorias....?
-R: Estaré el viernes 27 todo el día en el despacho.

Pregunta5: ¿El tema de conversión A/D entra?
-R: Para el examen de Junio de 2008 no entra este tema.

sábado, 21 de junio de 2008

A vueltas con el modo Autorrecarga...

Óscar preguntaba lo siguiente:

"Tengo una duda bastante específica sobre los Timers que no he podido aclarar en el libro. Se que el modo autorrecarga de un timer sirve para cargarlo a un valor predefinido tras el desborde del mismo, vale , ok. Pero si no lo cargase, ¿qué pasaría con el valor de los registros (en este caso registro) TL0 tras eldesbordamiento? ¿Se pondría a 0? o ¿seguiría en el valor máximo 'contando'? De lo que he podido leer en el libro, me queda claro que sigue funcionando, osea contando tras ocurrir el desborde. Quiere decir esto que: llega al valor máximo (supongamos 256)--> se pone a 0 yluego vuelve a seguir aumentando hasta que se desborde de nuevo?Entonces, esto quiere decir que, en el caso de que me interesase tener como cuenta inicial un 0(para los modos de 13bits y 16), no necesitaría hacer recarga software del contador al desbordar éste? (puesto que se pondría por defecto a 0)..."

Respuesta del profesor: A ver...dejad que mire las tablas y os copie la figura del modo...


Como puedes ver en la figura, en el modo autorrecarga, el registro que lleva la 'cuenta' es TLx (es el que genera el 'Overflow') y por lo tanto cuando finaliza dicha cuenta, se recarga con el valor de THx (mira el sentido de la flecha). Por lo tanto NO hace falta cargarlo cada vez que desborda, ya que THx tiene el valor que hayas definido (actuando como una memoria). En este caso, debes cargar inicialmente THx, que determinará la temporización elegida.

Cuando acaba la cuenta, TLx NO necesariamente empieza de nuevo desde cero, leerá el valor de THx. Si le has puesto en THx, el valor 23, será éste el inicio de la cuenta en TLx, ¿entendido?

También es cierto que si cargas inicialmente THx a cero, la cuenta empezará desde cero, pero utilizar este modo en este caso es desaprovechar la funcionalidad de la autorrecarga.

Ten en cuenta que el modo autorrecarga se utiliza para temporizaciones repetitivas y está pensado precisamente para que no tengas que recargar el mismo valor continuamente en el contador...

Si tienes más dudas, escribe!

domingo, 8 de junio de 2008

Cuestionario Programación en C y uso de máscaras

Estimados alumnos, aquí publico la solución al cuestionario sobre Programación en C y algunos ejercicios del uso de máscaras. Se explica de manera sencilla los conceptos, no obstante, si alguna respuesta no quedase clara, os invito a participar enviándome un correo a fin de poder ampliar la explicación.

También he incluido archivos de audio (mp3) con las respuestas.

Cuestionario resuelto en PDF:
Nota: he detectado que desde Firefox parece que no se abre el PDF, puedes descargarlo poniendo el ratón sobre la imagen y utilizando la opción del botón derecho "Guardar enlace como...".


Audio: Los archivos mp3 son un complemento al documento de texto, te recomiendo que leas primero el documento pdf y después escuches los archivos mp3.

Archivos para escuchar directamente desde la web:
(puede tardar un poco en iniciar la reproducción, ten paciencia)

Pregunta 1, haz clic en 'Play':

Pregunta 2:

Pregunta 3:

Pregunta 4:

Pregunta 5:


Archivos en mp3 para descargar:
Audio pregunta 1
Audio pregunta 2
Audio pregunta 3
Audio pregunta 4
Audio pregunta 5

domingo, 1 de junio de 2008

Cuestionario de Temporizadores/Contadores

Estimados alumnos, aquí publico la solución al cuestionario sobre Temporizadores/Contadores. Se explica de manera sencilla los conceptos, no obstante, si alguna respuesta no quedase clara, os invito a participar enviándome un correo a fin de poder ampliar la explicación.

También he incluido archivos de audio (mp3) con las respuestas. ¿Pensáis que el audio ayuda a entender mejor los conceptos del documento de texto en pdf? (espero vuestros correos o comentarios en este blog).

Cuestionario resuelto en PDF:

Audio: Los archivos mp3 son un complemento al documento de texto, te recomiendo que leas primero el documento pdf y después escuches los archivos mp3.

Archivos para escuchar directamente desde la web:
(puede tardar un poco en iniciar la reproducción, ten paciencia)

Pregunta 1, haz clic en 'Play':

Pregunta 2:

Pregunta 3:

Preguntas 4-8:

Pregunta 9:

Preguntas 10-13:

Pregunta 14:

Pregunta 15:

Preguntas 16-17:


Archivos en mp3 para descargar:
Audio pregunta 1
Audio pregunta 2
Audio pregunta 3
Audio preguntas 4-8
Audio pregunta 9
Audio preguntas 10-13
Audio pregunta 14
Audio pregunta 15
audio preguntas 16-17