Actualizado el 18 de Abril del 2020 (Publicado el 17 de Mayo del 2018)
2.469 visualizaciones desde el 17 de Mayo del 2018
367,2 KB
16 paginas
Creado hace 11a (23/10/2013)
Microcontroladores PIC
Ofertamos la posibilidad de hacer el proyecto de la asignatura usando PICs en
vez de Arduinos (AVR).
Microcontrolador = ordenador en un chip, incluyendo procesador, memoria,
algunos periféricos.
Al contrario que un microprocesador es “autosuficiente”
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Microcontroladores PIC
Arquitectura Harvard: diferente memoria (y por lo tanto buses)
para memoria de programa y memoria de datos.
Familia PIC18: 8 bits datos, 16 bits programa
Arquitectura
Von Neumann
Arquitectura
Harvard
No nos afecta demasiado trabajando en alto nivel (lenguaje C), pero en un
microcontrolador el alto nivel nunca está demasiado lejos del hardware.
Interesante tener una idea de cómo andan las cosas por abajo.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Familias microcontroladores PIC
PIC10, PIC12 8 bits, pocas patas, pocos recursos (módulos/perifericos)
PIC16 gama media de 8 bits. Bastantes periféricos
PIC18 gama alta de 8 bits
PIC24 16 bits
dsPIC 16 bits, especializados en tratamiento de señal (DSP)
PIC18: hasta 40 MHz (10 Mhz en ciclos de instrucción)
3/4 timers, hasta 20 fuentes de interrupción.
múltiples periféricos incorporados:
• 3 / 4 puertos I/O (8bits)
• Salidas Pulse Width Modulation (PWM)
• Conversor Analógico/Digital 10 bits
• Comunicaciones serie (UART, SPI, I2C)
• USB en algunos modelos.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
PIC18F2540/4520
MEMORIA:
•
•
•
32K memoria flash de programa reprogramable (16K instrucciones)
1536 bytes de datos (RAM)
256 bytes EEPROM no volatil (como un periférico)
20 fuentes de interrupción con dos niveles de prioridad.
13 canales ADC con 10 bits de resolución.
Comunicaciones serie UART (RS232,R485), y síncrona SPI, I2C
Dos canales PWM, dos comparadores
WatchDog Timer hasta 130 segundos
Multiplicador hardware 8x8 en un solo ciclo
Autoprogramable (permite reprogramarlo a través del puerto serie)
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Special Function Registers (SFR)
Dentro de la memoria de datos, tenemos los SFR (Special Function Registers)
a través de los cuales controlamos la mayor parte de las funciones del micro y
sus periféricos.
Cada periférico tiene asociado 2 o 3 SFR a través de los cuales se controla.
Ejemplos:
• Puertos B de entrada/salida: TRISB, PORTB, LATB
• TRISB determina si es entrada (1) o salida (1)
• En PORTB leemos valores del puerto.
• Usamos LATB para asignar valores a un puerto.
• Comunicaciones USART:
• TXREG, TXSTA: datos a transmitir, status/configuración de TX
• RCREG, RCSTA, datos recibidos, status/configuración de RX
• BRGH establece la velocidad del puerto (baudios)
Se usan directamente con esos nombre dentro del compilador
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Bits de configuración
También, dentro de la memoria del PiC hay un par de bytes que comprenden
los llamados bits de configuración.
Se definen dentro de nuestro programa C (o al crear el proyecto) y configuran
aspectos básicos de la configuración del PIC al arrancar.
Ejemplos: habilitación/deshabilitación del watchdog timer
Decidir si tras un reset el puerto B se dedica a entradas analógicas
o a un puerto normal de entrada/salida digital.
Si no los ponemos correctamente pueden ser fuente de errores frustrantes,
sobre todo al principio:
• Si el puerto B arranca como entrada analógica no responderá a nuestros
comandos para ponerlo a 0/1
• Si el “perro guardián” está activo pero nosotros no nos encargamos de “darle
el hueso” el PIC se va a resetear cada poco tiempo y nuestro programa no va
a funcionar.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Disposición de los 40 pines en el 18F4520
Uso básico de un pin: entrada/salida digital
La mayoría de los pines pueden tener varias funciones (excluyentes)
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
PUERTOS ENTRADA / SALIDA
4 o 5 puertos de entrada/salida RA, RB , RC, RD , RE
RB, RC, RD están completos 8 pines
RA, RE faltan algunos, dependiendo de nuestra configuración.
Registros asociados PORT, LAT, TRIS
TRISA = 0 / 1 determina si el pin es de salida/entrada
PORT para leer el valor de un puerto, LAT para escribirlo 1 high (5V)
0 low (0V)
De hecho PORT puede usarse para ambos menesteres, pero se aconseja
diferenciar entre lecturas/escrituras
En bloque o por separado LATC=255 (todos los pines de portC =1)
LATCbits.RC8 =1 (pin 8 de PORTC = 1)
Un pin puede dar (o recibir) un máximo de unos 25 mA.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
TIMERS
• Un timer es un contador que se incrementa cada ciclo máquina (aunque
algunos pueden configurarse para contar una entrada externa).
• En los PIC un ciclo máquina son 4 oscilaciones del reloj, luego con un cristal
de 4 Mhz, los timers se incrementarán cada microsegundo.
• Tenemos hasta 4 timers, aunque algunos de ellos pueden estar “usados” si
ciertos módulos están funcionando (p.e. PWM usa timer2)
• Modos de 8 y 16 bits: podemos definir el contador como 8 o 16 bits.
• Esto es importante porque al rebosar el contador 0xFF 0x00 se activa la
correspondiente interrupción del timer en cuestión.
• Si dicha interrupción está habilitada, saltamos a la rutina de procesar las
interrupciones. Esto nos permite ejecutar una tarea periódica sin estar
pendientes del contador.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
INTERRUPCIONES
20 fuentes de interrupción:
4 interrupciones por rebosamiento de timers.
4 interrupciones causadas por cambios de un pin (RB0, RB1, RB2, RB4-7)
Interrupciones asociadas a periféricos:
TX el registro de transmisión está vacío y listo para enviar un byte.
RX acabamos de recibir un byte.
AD ha terminado una conversión AD. Podemos acceder al resultado.
y muchas más.
2 niveles de prioridad: interrupciones altas pueden interrumpir a las bajas.
Es fundamental usar las interrupciones durante la programación.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Conversor Analógico-Digital (ADC)
Hasta 13 canales (no simultáneos) con una resolución de 10 bits.
Convierte voltaje externo (0-5V) en un número 0-1023
Lectura de sensores analógicos
Salida PWM
Permite simular salida “analógica” con un puerto digital: onda cuadrada de
frecuencia alta (p.e 10 KHz) en la que podemos controlar el tiempo en “on “.
Disponemos de 2 canales de PWM con una misma frecuencia (programable)
pero con diferente % en “on” (hasta 10 bits de resolución).
Muy útiles para controlar motores (junto con un H-bridge para controlar
dirección y un driver de potencia)
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Comunicaciones serie:
Asíncronas: módulo UART
Aplicación más común: comunicación RS232 con el ordenador.
Voltajes distintos, necesitaremos un conversor de voltajes.
PIC: 0 lógico = 0V 1 lógico = 5V
PC 0 lógico = [3V/15V] 1 lógico [-3V/-15V]
Comunicaciones síncronas: Módulo Master Synchronous Serial Port (MSSP)
Puede trabajar en uno de dos modos (excluyentes):
Serial Peripheral Interface (SPI)
Inter Integrated Circuit (I2C)
En ambos casos el módulo puede configurarse como master o slave.
Permiten comunicaciones con numerosos periféricos.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Enlaces sobre estos temas
Tengo escritos algunos tutoriales sobre programación de PICs en C.
Cubren aspectos básicos sobre:
Temporizadores, Interrupciones
Uso del ADC, PWM
Comunicaciones serie
http://picfernalia.blogspot.com.es/
Numerosos otros recursos en la web:
•
•
•
•
•
http://embedded-lab.com/
http://www.todopic.com.ar/
http://www.mikroe.com/products/view/285/
book-pic-microcontrollers-programming-in-c/
http://picprojects.org.uk/projects/picprojects.htm
http://www.coolcircuit.com/gadgets/category/pic-projects/
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Placa de desarrollo: Easy PIC 6
Conexión a través de USB (instalar los drivers y software del programador)
http://www.mikroe.com/downloads/get/1202/mikroprog_for_pic_drivers_v200.zip
http://www.mikroe.com/downloads/get/1201/mikroprog_suite_for_pic_v226.zip
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Programador, alimentación (5V)
Conexión USB para programar
Alimentación (hasta 500 mA)
Alimentación
externa (si es
necesaria)
Se controla con
un switch.
Botón de reset.
Resetea el
micro.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Microcontrolador
Zócalos para distintos
modelos de PICs:
8,14,18,20 28 y 40
pines
Solo uno de ellos
puede estar ocupado.
Cristal incluido
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Entrada / Salida
LEDs conectados a todos
los pines. Permiten ver su
estado: 1 = encendido
0 = apagado
Un microswitch permite
decidir si los LEDS están
conectados o no.
Pulsadores conectados a
todos los pines.
Pueden configurarse para
estar a 0 o 1 por defecto y
cambiar al pulsar.
Para usarlos debemos
declarar el pin de entrada.
Teclados keypad 4x4
Teclado de flechas.
INFORMATICA INDUSTRIAL (2012)
ANTONIO TABERNERO GALÁN
Puerto Serie RS232
Conversor de niveles
(0-5V) a (-15/+15)V
Conector D
Comentarios de: Microcontroladores PIC (0)
No hay comentarios