Programación de microcontroladores paso a paso

Tekst
0
Recenzje
Przeczytaj fragment
Oznacz jako przeczytane
Programación de microcontroladores paso a paso
Czcionka:Mniejsze АаWiększe Aa



Programación de microcontroladores paso a paso

Ejemplos prácticos desarrollados en la nube

Primera edición, 2021

© 2021 Carlos Ruiz Zamarreño

© 2021 MARCOMBO, S. L.

www.marcombo.com

Diseño de la cubierta: ENEDENÚ DISEÑO GRÁFICO Maquetación: D. Márquez

Correctora: Anna Alberola y Beatriz García

Directora de producción: M.ª Rosa Castillo

Producció del ebook: booqlab

«Cualquier forma de reproducción, distribución, comunicación publica o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra».

ISBN: 978-84-267-3238-5

ÍNDICE

PRÓLOGO

1 INTRODUCCIÓN

2 ENTORNO DE PROGRAMACIÓN MPLAB® XPRESS IDE

3 MPLAB® CODE CONFIGURATOR (MCC)

4 HARDWARE COMPATIBLE

5 EXPLORANDO LAS POSIBILIDADES DEL PIC16F18855

6 DESCUBRIENDO EL FUNCIONAMIENTO CON EJEMPLOS

6.1 Hola mundo (i/o ports)

I/O - puertos de entrada/salida

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

6.2 Hola mundo mejorado (Temporizador y CLC)

TMR8 - temporizador de 8 bits

CLC - configurable logic cell

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

6.3 Luminosidad de led (PWM + ADC)

ISR - interrupciones

ADC - conversor analógico digital

PWM - módulo generador de pulsos variables

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

6.4 Comunicación serie (EUSART)

EUSART - módulo de comunicaciones serie

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

6.5 Sensores de temperatura interno y externo (I2C)

ITI - módulo indicador de temperatura interno

MSSP - módulo de comunicaciones serie síncronas (SPI/I2C)

EMC1001 - módulo sensor de temperatura digital

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

6.6 Comparación de nivel de señal analógica (DAC y comparador)

DAC - módulo conversor digital analógico

Módulo comparador analógico

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

6.7 Comparación de nivel de señal analógica (ADCC en modo Average)

Módulo ADC en modo computacional

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

6.8 Sensor capacitivo (ADCC en modo Burst Average, CVD)

CVD - divisor de tensión capacitivo

 

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

6.9 Canción de despedida (NCO y TMR0)

NCO - oscilador controlado numéricamente

TMR0 - temporizador 0

Implementación del ejemplo

Comentarios sobre el programa

Propuesta de modificaciones

7 BIBLIOGRAFÍA

ANEXOS

Tabla de códigos ascii

Puertas lógicas

notes.h

ÍNDICE DE FIGURAS

PRÓLOGO

El objetivo de este libro es acercar la programación de microcontroladores a todo tipo de personas con conocimientos básicos de electrónica; conseguir que, de una forma sencilla, mediante la utilización de una serie de herramientas que permiten una programación de los microcontroladores de forma simple y transparente, los usuarios menos familiarizados con este tipo de sistemas sean capaces de comprender su funcionamiento y realizar proyectos relativamente complejos.

Para ello, se utilizará como base un microcontrolador PIC® de la gama media mejorada de Microchip integrado en una placa de desarrollo de precio reducido (en torno a 10 €) y compatible a su vez con el sistema de programación en la nube MPLAB® Xpress IDE. La utilización de este sistema de programación ha sido la preferida para el desarrollo de las actividades, ya que libera al usuario de la tarea de contar con un sistema dedicado en el que instalar el entorno de programación. De este modo, podrá utilizar la placa de desarrollo y programar el microcontrolador en prácticamente cualquier ordenador, con el único requisito de tener una conexión a Internet y un puerto USB accesible.

Así, el usuario que se acerca a este libro, equipado con el reducido hardware indicado anteriormente, será capaz de, a través de diferentes ejemplos prácticos, ir avanzando en la programación del microcontrolador e ir adentrándose en los diferentes módulos que integra el dispositivo. Mediante la utilización de las diferentes herramientas que se presentan a lo largo del libro, el usuario aprenderá a configurar los módulos periféricos del microcontrolador a través de unos simples clics. Todo esto se desarrolla gracias a un proceso en el que el lector irá adquiriendo de forma gradual el conocimiento necesario sobre el funcionamiento y la configuración de los diferentes módulos, a la vez que practica con ellos. Además, en este libro se proponen problemas y modificaciones de los ejemplos prácticos que permitirán al usuario profundizar todavía más en el conocimiento de los diferentes módulos y su interrelación con el microcontrolador.

Por último, me gustaría recordar de nuevo al lector que el objetivo de este libro es acercarle a la programación de microcontroladores de forma sencilla y, aunque está pensado como una guía que se va apoyando en conocimientos previos, el lector puede ir consultando de forma independiente cada ejemplo, ya que están autocontenidos.

Así pues, y sin más dilación, le dejo continuar con la primera parte del libro, donde se contextualizará el papel de los dispositivos microcontroladores para pasar seguidamente a presentar las herramientas que se utilizarán y los ejemplos de programación.

1
INTRODUCCIÓN

En la actualidad estamos rodeados de numerosos dispositivos digitales que ejecutan un programa almacenado en su memoria que se encarga de recibir información a través de un número determinado de puertos de entrada, evaluar esta información y enviar una respuesta a través de sus puertos de salida. Entre este tipo de sistemas podemos diferenciar los sistemas basados en microprocesador, que generalmente cuentan con una mayor capacidad de procesado (mayor velocidad, registros, etc.) y dependen de un sistema operativo para gestionar sus periféricos (memoria, puertos de entrada/salida, etc.), y los sistemas basados en microcontrolador, que generalmente cuentan con unas prestaciones más reducidas (menor velocidad, número de registros reducido, tamaño de datos reducido, etc.), a la vez que integran todos sus periféricos en el mismo encapsulado.

Un ejemplo tradicional de sistema microprocesador lo encontramos en los ordenadores de sobremesa o portátiles, donde tenemos los diferentes periféricos (disco duro, RAM, teclado, ratón, etc.) conectados a una placa base en la que se aloja el microprocesador. Ejemplos de sistemas basados en microcontrolador los podemos encontrar en diferentes electrodomésticos que nos rodean, como una cafetera, el microondas o el mando a distancia del televisor. Estos dispositivos, a diferencia de un ordenador (sistema multipropósito), rara vez necesitan ser reprogramados o actualizados a una nueva versión de programa (firmware) y funcionan tal y como salieron de fábrica durante toda su vida útil. De ahí que reciban también el nombre de sistemas embebidos o empotrados, ya que están concebidos para un único propósito y muchas veces ni nos enteramos de que están ahí.

A partir de la diferenciación señalada queda claro que, en general, los sistemas basados en microcontrolador se encargan de realizar tareas relativamente sencillas que conllevan la gestión de un número determinado de entradas/salidas. Así, por ejemplo, en el caso de la cafetera citado anteriormente, el sistema microcontrolador se encargará de gestionar la pulsación de varios botones para el encendido/apagado de la cafetera, la solicitud de café, controlar la presión a la que se produce el café, el molido del grano, el volumen de café servido, la temperatura, el volumen de agua del contenedor, etc. Son elementos sencillos que no necesitan un sistema con gran capacidad de procesamiento.

A pesar de las reducidas prestaciones con las que generalmente cuentan, los sistemas microcontroladores son los semiconductores más vendidos en la actualidad debido a la gran variedad de aplicaciones hacia las que están orientados. Entre ellos, los más ampliamente utilizados son los microcontroladores de 8 bits, es decir, aquellos que trabajan con datos de 8 bits (muy alejados de los 64 bits con los que trabajan en la actualidad los sistemas microprocesadores más avanzados). Destacan como principales fabricantes de microcontroladores las compañías Intel™, Motorola™, Freescale semiconductor™, Zilog™, Mitsubishi Electric™, Texas Instruments™ o Microchip, y es esta última la que ofrece una gran variedad de dispositivos con múltiples configuraciones, herramientas de programación y una amplia comunidad de usuarios.

Los microcontroladores de Microchip reciben el nombre de microcontroladores PIC®, siglas que corresponden a Peripheral Interface Controller, y todo el mundo se refiere a ellos como PIC. Se basan en una arquitectura Harvard que cuenta con memoria de datos y de programa separadas físicamente y con una CPU RISC (Reduced Instruction Set Computer) que contiene un número reducido de instrucciones. Los PIC® se dividen, en función del número de bits de los datos que procesan, en 32 bits, 16 bits y 8 bits. Estos últimos se dividen, a su vez, en diferentes gamas en función de sus capacidades de procesamiento, el tamaño de las memorias o el número de periféricos que integran; así, se puede distinguir entre la gama baja, media, media mejorada y la gama alta.

Es importante destacar, por último —y antes de pasar a describir el entorno en el que vamos a trabajar en este libro—, que este tipo de dispositivos, debido a su simplicidad de programación, a la integración de nuevos y cada vez más complejos periféricos, a su reducido consumo y a su bajo coste, está siendo empleado en aplicaciones cada vez más avanzadas, donde va reemplazando de forma imparable la parte tradicionalmente reservada a la electrónica analógica. Por ello, su conocimiento resulta una parte esencial en la formación de cualquier persona interesada en la electrónica en particular o en la ingeniería en general.

2
ENTORNO DE PROGRAMACIÓN MPLAB® XPRESS IDE

El nuevo entorno de programación MPLAB® Xpress IDE que ofrece Microchip está basado en una programación en la nube en la que, mediante una serie de pasos muy sencillos, podremos realizar un programa, depurarlo y pasarlo al microcontrolador en el que se va a ejecutar. Todo lo que hagamos estará guardado en nuestra cuenta de usuario, la cual Microchip nos ofrece de forma gratuita. Este entorno ofrece al programador acceso a todos sus proyectos independientemente del lugar en el que esté y le permite trabajar en cualquier sitio sin necesitar instalar pesados programas o llevar copias de sus proyectos allá donde vaya. Sin embargo, este punto de vista no es del agrado de algunos programadores, que ven en este tipo de programación una dependencia a una conexión a Internet que, aunque está disponible en cada vez más lugares, no siempre está garantizada en lo referente a calidad y velocidad; también le achacan los problemas asociados a la seguridad en cuanto al acceso a sus proyectos, que podrían verse expuestos debido a vulnerabilidades del sistema. A pesar de todo, y aparte de las disquisiciones anteriores —en las que no vamos a entrar—, que atienden a un punto de vista personal de cada programador, MPLAB® Xpress IDE es una nueva y potente herramienta que aporta mayor flexibilidad a la hora de abordar el desarrollo de proyectos, acelera la labor del programador, acerca el desarrollo de sistemas microcontroladores a un mayor número de usuarios gracias a sus herramientas simplificadas y se complementa muy bien con la nueva filosofía actual de deslocalización del trabajo mediante la utilización de la nube. Además, cuenta con diferentes tarjetas de evaluación y desarrollo que se integran de forma sencilla con este sistema.

Sin entrar en más detalles, vamos a pasar a describir con claridad los primeros pasos que hay que dar para comenzar a utilizar este entorno de programación en nuestro ordenador. En primer lugar, es importante destacar que este entorno de programación, al estar basado en un plugin desarrollado en JAVA™, no se podrá ejecutar desde el navegador Chrome™ (que eliminó su soporte de JAVA™ en septiembre de 2015), por lo que se recomienda utilizar como navegador Explorer™ o Firefox™ (Windows™) o Safari™ (Mac OS X). Asimismo, es recomendable contar con la última versión de Java™ instalada en nuestro sistema para evitar posibles problemas (se puede descargar desde la página www.java.com), aunque esto lo podremos hacer más adelante. Una vez tenido en cuenta lo anterior, introduciremos la siguiente dirección en nuestro navegador:

https://www.microchip.com/mplab/mplab-xpress

Aquí nos aparecerá la página de presentación de MPLAB® Xpress IDE, donde se nos describen las bondades de este sistema y donde, de igual modo, podremos encontrar gran cantidad de información sobre el entorno de desarrollo, guías de configuración y todo tipo de materiales de ayuda (por supuesto, en un perfecto inglés). También encontraremos aquí el enlace Get Started NOW!, que nos permite acceder al entorno de programación con el que vamos a trabajar y al cual también podremos acceder directamente introduciendo en nuestro navegador esta otra dirección: https://mplabxpress.microchip.com/mplabcloud/ide

 

Si es la primera vez que accedemos al entorno de programación de MPLAB® Xpress IDE, será necesario que realicemos una serie de acciones para configurar correctamente nuestro equipo y poder trabajar con el sistema, tal y como se describirá a continuación. Sin embargo, antes de todo, y si todavía no tenemos una cuenta de Microchip, es recomendable registrarse para obtener una de forma gratuita, ya que será lo que nos permita que nuestro trabajo se quede almacenado una vez terminemos. Además, nos facilitará información actualizada de nuevos productos y actualizaciones, y la no desdeñable posibilidad de conseguir muestras gratuitas de muchos de los últimos microcontroladores desarrollados por la empresa y que podremos utilizar en nuestros futuros proyectos (free samples).


Figura 2.1 Entorno de programación MPLAB Xpress IDE.

Una vez creada la cuenta y logueados (o no), será necesario comprobar que tenemos la última versión de JAVA® instalada en nuestro ordenador y descargarnos la herramienta MPLAB® Code ConFigurator (MCC) para MPLAB® Xpress IDE. Todo lo anterior lo podremos hacer pinchando en el botón que aparece en la barra de herramientas con forma de escudo con las letras MCC y siguiendo los pasos que se nos indican en la ventana de la Figura 2.2.


Figura 2.2 Pasos para la configuración de MPLAB® Xpress IDE en nuestro ordenador.

Ahora ya tenemos nuestro sistema preparado para utilizar este nuevo entorno de programación. MPLAB® Xpress IDE está basado en el sistema de desarrollo de escritorio MPLAB® X IDE e integra la mayoría de sus funcionalidades, además de tener una apariencia muy similar a este, como se observa en la figura 2.3.


Figura 2.3 Ventana de trabajo de MPLAB® Xpress IDE.

Para aquellos que no están familiarizados con la utilización del entorno de programación MPLAB® X IDE, este se estructura en diferentes ventanas, entre las que podemos encontrar las siguientes:

Barra de menús y herramientas

Situada en la parte superior. Nos permite acceder a las distintas opciones de configuración del programa y nos proporciona accesos rápidos para la creación del proyecto, compilación y simulación.

Project

Situada en la parte superior izquierda. Muestra la estructura del proyecto en el que estamos trabajando y los archivos que lo integran.

Dashboard

Situada en la parte inferior izquierda. Muestra las propiedades del proyecto y sus dependencias con respecto a las herramientas que se utilizarán para su compilación, simulación y ensamblado, entre otras cosas.

Ventana de trabajo

Situada en la parte central. Será aquí donde se realice la edición del código fuente de los programas.

Ventana de información

Situada en la parte central, bajo la ventana de trabajo. Nos mostrará información sobre los procesos que se realicen en el sistema y nos permitirá visualizar las variables y los registros internos del microcontrolador.

Barra de estado

Situada en la parte inferior. Nos muestra el estado de los dispositivos conectados.

Además, MPLAB® Xpress IDE incorpora una barra de menús en la parte superior derecha que nos proporcionará acceso a gran cantidad de información sobre el sistema, soporte, foros y ejemplos con programas que pueden cargarse directamente en MPLAB® Xpress IDE y con los que podemos comenzar a familiarizarnos con el funcionamiento del entorno de programación de forma sencilla.


Figura 2.4 Ejemplos de programación de MPLAB® Xpress IDE.

Una de las principales aplicaciones que, al igual que en MPLAB® X IDE, también se encuentra integrada dentro de MPLAB® Xpress IDE es el sistema de configuración gráfica MPLAB® Code Configurator o MCC, el cual instalamos antes y permite generar las instrucciones para la configuración del microcontrolador de forma rápida y sencilla gracias a su entorno gráfico, como se describirá en el siguiente apartado.