Successfully reported this slideshow.
UNIDAD 1.
Microcontroladores
Programables
SISTEMAS EMBEBIDOS Y CONTROL
POR: M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
¿QUE ES UN PROCESADOR?
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
2
1.1. Conceptos básicos sobre
microcontroladores
¿DONDE ESTÁN LOS PROCESADORES?
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
3
¿QUE ES UN MICROCONTROLADOR?
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
4
MICROPROCESADORES VS
MICROCONTROLADORES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
5
HARDWARE
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
6
APLICACIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
7
REPERTORIO DE INSTRUCCIÓN
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
8
HARDWARE
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
9
HARDWARE DE UN MICROCONTROLADOR
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
10
UNIDAD CENTRAL DE PROCESO
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
11
CPU (ESQUEMA)
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
12
TAREAS DE UN CPU
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
13
TAREAS DEL CPU CONT…
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
14
TAREAS DE …
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
15
TIPOS DE CPU
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
16
SISTEMA DE MEMORIA
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
17
SISTEMA DE MEMORIA
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
18
LOS MICROCONTROLADORES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
19
APLICACIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
20
MICROCONTROLADORES COMUNES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
21
1.2. Los microcontroladores PIC y Atmel
ESCALABILIDAD EN MICROCHIP
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
22
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
23
Concepto
Circuito integrado que
incluye en su interior
las tres unidades
funcio...
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
24
Ciclo de vida de un software embebido
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
25
Técnica de desarrollo del software
embebido
• Modelo de programación del uC PIC18F4550
• Modelado de programas en Mplab
• Simulación de programas en Proteus VSM
1.3. ...
MODELO DE PROGRAMACIÓN CON EL PIC18F4550
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
27
• El PIC18F4550, pertenece a los micro...
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
28
ORGANIZACIÓN DE LA MEMORIA
EL UC PIC18F4550 DISPONE DE LAS SIGUIENTES MEMORIAS:
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
29...
ORGANIZACIÓN DE LA MEMORIA
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
30
• Memoria de configuración: memoria en la que se inc...
MAPA DE MEMORIA
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
31
ARQUITECTURA HARVARD
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
32
El uC PIC18F4550 dispone buses diferentes para el acceso a...
MODELADO DE PROGRAMAS EN
MPLAB
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
33
• Microchip provee una buena herramienta para el...
SIMULACIÓN DE PROGRAMAS CON
PROTEUS VSM
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
34
Como una
funcionalidad
adicional, MPLAB...
• Repertorio de instrucciones
• Temporizadores, Puertos de E/S y manejo de datos
• Interrupciones
1.4. DISEÑO DE APLICACIO...
FORMATO DE UN PROGRAMA EN
ENSAMBLADOR PIC18F4550(1)
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
36
LIST P=18F4550 ;Directiva p...
FORMATO DE UN PROGRAMA PIC18F4550(2)
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
37
CBLOCK 0x000 ;Variables en la ACCESS RAM (...
REPERTORIO DE INSTRUCCIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
38
El juego de instrucciones es altamente ortogonal y ...
OPERACIONES ORIENTADAS AL BYTE
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
39
OPERACIONES ORIENTADAS AL BIT
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
40
OPERACIONES DE CONTROL
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
41
OPERACIONES CON LITERALES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
42
TEMPORIZADORES, PUERTOS DE
ENTRADA/SALIDA Y MANEJO DE DATOS
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
43
Los temporizadores ...
TEMPORIZADORES DE RETARDO CÍCLICO
• Sea la velocidad de reloj de 20Mhz, con un cristal de cuarzo HS conectado a las patill...
TEMPORIZADORES HARDWARE
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
45
• Los temporizadores son contadores que al activarlos e...
TIMER 0
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
46
Existe la posibilidad de activar un preescaler en los temporizadores de...
TIMER 1
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
47
Resolución de los temporizadores:
Timer0 -> Temporizador configurable d...
RETARDOS CON EL TIMER0
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
48
Un retardo con un Timmer ofrece la posibilidad de operac...
PUERTOS DE ENTRADA/SALIDA Y MANEJO DE
DATOS
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
49
• El uC PIC18F4550 dispone 5 puerto...
PUERTOS DE ENTRADA/SALIDA
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
50
• REGISTROS DE UN PUERTO DE E/S: Cada puerto de E/S
t...
PUERTOS DE ENTRADA/SALIDA
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
51
PUERTO A
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
52
• Dispone de 7 líneas de E/S. Las funciones alternativas son:
■ RAO: e...
REGISTRO ADCON1
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
53
– VCFG1: Bit de configuración de la tensión de referencia VREF-...
REGISTRO ADCON1
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
54
PUERTO B
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
55
• Dispone de 8 líneas de E/S. Las funciones alternativas son:
■ RBO: e...
PUERTO B
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
56
• Resistencias de pull.up: Todas las líneas del puerto B disponen de r...
PUERTO C
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
57
• Dispone de 5 líneas de E/S (RCO, RCl, RC2, RC6 y RC7) y 2 líneas de ...
PUERTO D
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
58
• Dispone de 8 líneas de E/S. Las funciones alternativas son:
■ RDO: l...
PUERTO E
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
59
• Dispone de 3 líneas de E/S (REO, RE1 y RE2) y 1 línea de solo entrad...
OSCILADOR
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
60
• El PIC18F4550, tiene un oscilador interno
de 32 KHZ. Este PIC ejecu...
RESET
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
61
• Es la acción con la cual inicia el
trabajo del uC.
• Existe el pin 1 MC...
ARMADO DEL SISTEMA MÍNIMO
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
62
¿QUÉ ES UN BOOTLOADER?
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
63
• El termino bootloader hace referencia a un pequeño pro...
¿QUÉ ES UN BOOTLOADER?
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
64
• Es necesario tener un programador para usarlo solo una...
CONFIGURACIÓN DEL HIDBOOTLOADER
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
65
• Microchip provee un Bootloader para agilizar ...
RELOCALIZACIÓN DE VECTORES DE INTERRUPCIÓN
• Los vectores originales situados en
la parte baja de la memoria son
asignados...
ESQUEMA DE ÁRBOL DE PROYECTO PARA USO CON
BOOTLOADER
• Programa principal con
vectores relocalizados
• Script para el link...
FORMATO DEL LINKER SCRIPT
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
68
HIDBOOTLOADER
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
69
• El diagrama del sistema mínimo incluye la circuitería para sost...
HIDBOOTLOADER SOFTWARE
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
70
FORMATO DE LOS FUSES EN ENSAMBLADOR
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
71
;------------------------------------------...
FORMATO DE LLAMADAS EN ENSAMBLADOR
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
72
;-------------------------------------------...
1.4. DISEÑO DE APLICACIONES CON PIC
(LENGUAJE C, C18)
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
73
• Repertorio de instrucci...
EL COMPILADOR MC18
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
74
• Si queremos realizar la programación de los microcontrolad...
EL COMPILADOR MC18
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
75
• Mas productividad
• Permite codificado en línea de ASM
• S...
FORMATO DE PROGRAMA (1)
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
76
#include <p18f4550.h>
#include <delays.h>
//Bits de con...
FORMATO DE PROGRAMA (2)
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
77
/**VARIABLES ******************************************...
FORMATO DE PROGRAMA (3)
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
78
/** CODIGO DE LA FUNCION PRINCIPAL ********************...
OPERADORES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
79
• Asignación:
OPERADORES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
80
• Aritméticos
OPERADORES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
81
• Relacionales
OPERADORES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
82
• Lógicos
• De manejo de bits
OPERADORES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
83
• Incremento, decremento y desplazamiento de bits
OPERADORES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
84
• Dirección e Indirección
• Ejemplos:
• p = &contador; /* p apunta a...
EXPRESIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
85
MANEJO DE DATOS
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
86
• Tipos: El lenguaje C proporciona cinco
tipos básico de datos,...
• Las variables deben ser
declaradas antes de ser
utilizadas en el programa. El
proceso de declaración de
variables le dic...
• C18 nos permite mezclar
diferentes tipos de variables
dentro de una misma expresión. Y
existen un conjunto de reglas que...
EJEMPLO 1
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
89
• “Hola Mundo” con un simple led
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
90
PODEMOS DEFINIR UN PUERTO EN C18
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
91
1. Por medio de una referencia simbólica
2. Po...
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
92
MAPA DE E/S
DEL
PIC18F4550
POR MEDIO DE UNA REFERENCIA SIMBÓLICA
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
93
• Siempre puede definirse un bit:
• #defi...
POR MEDIO DE COMANDOS C18
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
94
• Configuración de los pines de E/S
Cada puerto tiene...
PROGRAMAS EJEMPLO:
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
95
• Programa “hola mundo”
• Corrimientos a la derecha y a la i...
INTERRUPCIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
96
• Las interrupciones son tareas programas que el micro
realiza c...
INTERRUPCIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
97
• Las interrupciones en el micro pueden darse de varios
tipos:
•...
INTERRUPCIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
98
• El micro puede tener varias interrupciones programadas a
la ve...
INTERRUPCIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
99
• El Pic18F4550 cuenta con tres vectores de interrupcion, mismo ...
INTERRUPCIONES
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
100
• ¿Como se codifican las interrupciones?
;---------------------...
EJEMPLO 2
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
101
• “Hola mundo” con LCD 16x2 alfanumérico
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
102
• Botones y Leds
• Teclado de matriz
• Display Led, Alfanumérico y Grafico
1.4. INTERCONEXIÓN DE PERIFÉRICOS
BOTONES Y LEDS
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
104
• Por lo general es necesario siempre agregar un botón para señ...
BOTONES Y LEDS
• En el caso de los leds, estos tienen al menos tres presentaciones en encapsulado
through-Hole y se clasif...
TECLADO DE MATRIZ
• El teclado en un sistema embebido se implementa de diferentes formas, puede ser
implementado con una s...
TECLADO DE MATRIZ
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
107
DISPLAY LED, ALFANUMERICO Y GRAFICO
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
108
• Los tipos de display interconectados a u...
DISPLAY LED DE 7 SEGMENTOS
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
109
• Display Led:
DISPLAY ALFANUMERICO
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
110
DISPLAY ALFANUMERICO
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
111
M.C. Andrés Gerardo
Fuentes Covarrubias
112
LCD 16X2
El LCD cuenta en sus señales de control de patillas para gobernar el ...
M.C. Andrés Gerardo
Fuentes Covarrubias
113
LCD 16X2
• Juego de señales
USO E INICIALIZACIÓN DEL LCD ALFANUMÉRICO
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
114
• Las funciones de manejo del LCD al...
FUNCIONES RELACIONADAS CON EL LCD
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
115
DISPLAY GRAFICO
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
116
La resolución tradicional para
aplicaciones embebidas es
de 12...
DISPLAY GRAFICO
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
117
• El convertidor analógico – digital y medición de temperaturas
• El DAC con resistencias, Interconexión de un MC1408-0 y
...
CONVERTIDOR ANALÓGICO-DIGITAL
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
119
• Microchip PIC18F4550 contiene 13 convertidores...
CONVERTIDOR ANALÓGICO-DIGITAL
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
120
CONVERTIDOR ANALÓGICO-DIGITAL
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
121
• Otra de sus características es que tiene dos p...
CONVERTIDOR ANALÓGICO-DIGITAL
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
122
Se recomienda que la máxima resistencia de entra...
M.C. Andrés Gerardo
Fuentes Covarrubias
123
MODELO DE CONVERSIÓN
• El multiplexor.- El ADC es un convertidor de aproximaci...
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
124
M.C. Andrés Gerardo
Fuentes Covarrubias
125
INICIALIZACIÓN DEL ADC• Encabezado
#include <18f4550.h>
#include <adc.h>
• Ini...
126
INICIALIZACIÓN DEL ADC
• Muestreo
// Habilitamos el ADC
ADC_INT_ENABLE();
for(;;)
{
// Toma una muestra y la convierte...
127
APLICACIÓN PRÁCTICA
• Medición de temperatura
• Sensor LM35 grados centígrados
• Sensor lineal
• Necesidad de un Circu...
128
EL SENSOR DE TEMPERATURA LM35Z
• Sensor en grados centígrados
• Escala de medición 10mV/°C
• Salida lineal
• Fuente de...
129
COMPORTAMIENTO LINEAL
• Solo temperaturas positivas
• Resistencia única de
linealización
• Polarización totalmente pos...
M.C. Andrés Gerardo Fuentes
Covarrubias
130
¿PORQUÉ USAR UN CAS (CIRCUITO ACONDICIONADOR DE
SEÑAL)?
•En la aplicación típi...
131
CIRCUITO DE ACONDICIONAMIENTO DE SEÑAL
24.0
3
1
VOUT
2
U1
LM35
V1
5V
3
2
1
84
U2:A
LM358
U1(VOUT)
R2
10k
R1
10k
D1
1N4...
132
EL AMPLIFICADOR OPERACIONAL
• LM358, OpAmp cuadruple unipolar
• Usado para CAS para uC unipolares
• Baja señal y bajo ...
133
ACONDICIONAMIENTO LINEAL DE SEÑALES
EL AMPLIFICADOR DIFERENCIAL
• (V+) se obtiene de la división de voltajes: (V+) = [...
• SE ADELANTA EL TEMA DEL CAPITULO 3 POR
ASI REQUERIRLO LA APLICACIÓN PRACTICA.
3.2. COMUNICACIÓN SERIAL DE DATOS
MICROCON...
COMUNICACIONES SERIALES PIC18F4550
135
• Están reguladas por la USART del PIC
• Se utilizan pines particulares del PIC
• P...
INTERFAZ
136
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
INSTRUCCIONES DEL C18
137
• FUNCIONES
• OPENUSART()
• WRITEUSART()
• baudUSART()
• getsUSART()
• putrsUSART()
• putsUSART(...
INICIALIZACIÓN DE LA USART
138
• FUNCIONES
• OPENUSART(),
• sintaxis: OPENUSART(unsigned char config, unsigned int spbrg);...
TRANSMISIÓN DE CARACTERES
139
Para la transmisión de caracteres se puede usar una función dedicada, o bien la
función de c...
RECEPCIÓN DE CARACTERES (POLLING)
140
Para la recepción de caracteres se puede usar una función dedicada, o bien las
funci...
RECEPCIÓN DE CARACTERES (INTERRUPCIÓN)
141
Para la recepción de caracteres mediante el método de interrupciones es
necesar...
142
Siguiendo la metodología de definición de interrupciones, asignar una función de
servicio a la interrupción en el vect...
143
Finalmente, inicializar las interrupciones por periféricos en el programa principal y atrapar la bandera de
recepción:...
144
DUDAS Y PREGUNTAS:
• fuentesg@ucol.mx
• fuentesg85@hotmail.com
• fuentesg@gmail.com
• FACEBOOK: /Andres.FuentesCovarru...
Upcoming SlideShare
Loading in …5
×

C++ para microcontroladores y aplicación práctica

7,412 views

Published on

Primera unidad del curso de Sistemas Embebidos y Control, Universidad de Colima, México

Published in: Education
  • Be the first to comment

C++ para microcontroladores y aplicación práctica

  1. 1. UNIDAD 1. Microcontroladores Programables SISTEMAS EMBEBIDOS Y CONTROL POR: M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  2. 2. ¿QUE ES UN PROCESADOR? M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 2 1.1. Conceptos básicos sobre microcontroladores
  3. 3. ¿DONDE ESTÁN LOS PROCESADORES? M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 3
  4. 4. ¿QUE ES UN MICROCONTROLADOR? M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 4
  5. 5. MICROPROCESADORES VS MICROCONTROLADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 5
  6. 6. HARDWARE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 6
  7. 7. APLICACIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 7
  8. 8. REPERTORIO DE INSTRUCCIÓN M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 8
  9. 9. HARDWARE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 9
  10. 10. HARDWARE DE UN MICROCONTROLADOR M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 10
  11. 11. UNIDAD CENTRAL DE PROCESO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 11
  12. 12. CPU (ESQUEMA) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 12
  13. 13. TAREAS DE UN CPU M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 13
  14. 14. TAREAS DEL CPU CONT… M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 14
  15. 15. TAREAS DE … M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 15
  16. 16. TIPOS DE CPU M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 16
  17. 17. SISTEMA DE MEMORIA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 17
  18. 18. SISTEMA DE MEMORIA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 18
  19. 19. LOS MICROCONTROLADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 19
  20. 20. APLICACIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 20
  21. 21. MICROCONTROLADORES COMUNES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 21 1.2. Los microcontroladores PIC y Atmel
  22. 22. ESCALABILIDAD EN MICROCHIP M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 22
  23. 23. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 23 Concepto Circuito integrado que incluye en su interior las tres unidades funcionales de un ordenador: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completo en un solo circuito integrado.
  24. 24. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 24 Ciclo de vida de un software embebido
  25. 25. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 25 Técnica de desarrollo del software embebido
  26. 26. • Modelo de programación del uC PIC18F4550 • Modelado de programas en Mplab • Simulación de programas en Proteus VSM 1.3. EL ENTORNO DE DESARROLLO PARA MICROCHIP
  27. 27. MODELO DE PROGRAMACIÓN CON EL PIC18F4550 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 27 • El PIC18F4550, pertenece a los microcontroladores PIC18 de gama alta. Posee una arquitectura RISC (reduced instruction set computer) de 16 bits longitud de instrucciones y 8 bits de datos. La tabla muestra en resumen las características fundamentales de este microcontrolador y de sus antecesores los PIC18F2455/2550/4455.
  28. 28. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 28
  29. 29. ORGANIZACIÓN DE LA MEMORIA EL UC PIC18F4550 DISPONE DE LAS SIGUIENTES MEMORIAS: M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 29 • Memoria de programa: memoria flash interna de 32.768 bytes. Almacena instrucciones y constantes/datos. Puede ser escrita/leída mediante un programador externo o durante la ejecución programa mediante unos punteros. • Memoria RAM de datos: memoria SRAM interna de 2048 bytes en la que están incluidos los registros de función especial. Almacena datos de forma temporal durante la ejecución del programa Puede ser escrita/leída en tiempo de ejecución mediante diversas instrucciones. • Memoria EEPROM de datos: memoria no volátil de 256 bytes. Almacena datos que se deben conservar aun en ausencia de tensión de alimentación Puede ser escrita/leída en tiempo de ejecución a través de registros. • Pila: bloque de 31 palabras de 21 bits. Almacena la dirección de la instrucción que debe ser ejecutada después de una interrupción o subrutina.
  30. 30. ORGANIZACIÓN DE LA MEMORIA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 30 • Memoria de configuración: memoria en la que se incluyen los bits de configuración (12 bytes de memoria flash) y los registros de identificación (2 bytes de memoria de solo lectura). Se trata de un bloque de memoria situado a partir de la posición 30000H de memoria de programa (más allá de la zona de memoria de programa de usuario). En esta memoria de configuración se incluyen: Bits de configuración: contenidos en 12 bytes de memoria flash permiten la configuración de algunas opciones del uC como: - Opciones del oscilador. - Opciones de reset. - Opciones del watchdog. - Opciones de la circuitería de depuración y programación. - Opciones de protección contra lectura de memoria de programa y memoria EEPROM de datos. Estos bits se configuran generalmente durante la programación del uC, aunque también pueden ser leídos y modificados durante la ejecución del programa. • Registros de identificación: se trata de dos registros situados en las direcciones 3FFFFEH y 3FFFFFH que contienen información del modelo y revisión del dispositivo. Son registros de solo lectura y no pueden ser modificados por el usuario.
  31. 31. MAPA DE MEMORIA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 31
  32. 32. ARQUITECTURA HARVARD M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 32 El uC PIC18F4550 dispone buses diferentes para el acceso a memoria de programa y memoria de datos (arquitectura Harvard): • Bus de la memoria de programa: - 21 líneas de dirección - 16/8 líneas de datos (16 líneas para instrucciones/8 líneas para datos) • Bus de la memoria de datos: - 12 líneas de dirección - 8 líneas de datos Esto permite acceder simultáneamente a la memoria de programa y a la memoria de datos. Es decir se puede ejecutar una instrucción (lo que por lo general requiere acceso a memoria de datos) mientras se lee de la memoria de programa la siguiente instrucción (proceso pipeline). Por tanto la ejecución completa de 1 instrucción (lectura instrucción +ejecución) se hace en un 1 ciclo de instrucción (4 Tosc). EXCEPCIÓN: las instrucciones que modifican el contenido del PC requieren 2 ciclos de instrucción.
  33. 33. MODELADO DE PROGRAMAS EN MPLAB M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 33 • Microchip provee una buena herramienta para el desarrollo de aplicaciones con microcontroladores PIC, esta es el MPLAB • Con MPLAB se puede: • Editar programas • Ensamblarlos si están escritos en ensablador • Compilarlos si están escritos en un lenguaje de alto nivel • Depurarlos con el MPLAB Sim
  34. 34. SIMULACIÓN DE PROGRAMAS CON PROTEUS VSM M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 34 Como una funcionalidad adicional, MPLAB permite invocar al Proteus desde el entorno de desarrollo para efectuar la depuración directamente en el esquemático de la aplicación Hardware.
  35. 35. • Repertorio de instrucciones • Temporizadores, Puertos de E/S y manejo de datos • Interrupciones 1.4. DISEÑO DE APLICACIONES CON PIC (LENGUAJE ENSAMBLADOR)
  36. 36. FORMATO DE UN PROGRAMA EN ENSAMBLADOR PIC18F4550(1) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 36 LIST P=18F4550 ;Directiva para definir el procesador #include "P18F4550.INC" ;******** Bits de configuracion ********** CONFIG PWRT = ON ;PWRT habilitado CONFIG WDT = OFF ;Watchdog deshabilitado CONFIG MCLRE = ON ;MCLR como entrada CONFIG PBADEN = OFF ;Todos los pines del puerto B como entradas analogicas CONFIG DEBUG = OFF ;Deshabilitar modo DEBUG CONFIG LVP = OFF ;Deshabilitacion del modo programacion de bajo nivel CONFIG FOSC = HSPLL_HS ;Oscilador de alta velocidad con PLL habilitado ;********* Bits de proteccion ****************** CONFIG CP0 = OFF ;los bloques del codigo de programa CONFIG CP1 = OFF ;no estan protegidos CONFIG CP2 = OFF CONFIG CP3 = OFF CONFIG CPB = OFF ;Sector Boot no esta protegido CONFIG CPD = OFF ;La EEPROM no esta protegida
  37. 37. FORMATO DE UN PROGRAMA PIC18F4550(2) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 37 CBLOCK 0x000 ;Variables en la ACCESS RAM (Banco 0) max 96 bytes ;Aqui va la declaracion de variables ENDC ORG 0xf00000 ;Area de definicion de variables de la EEPROM ;DE "Test Data",0,1,2,3,4,5 ORG 0x0000 ;vector de interrupcion del reset goto main ORG 0X0008 ;vector de interrupcion de baja prioridad goto main ORG 0X0018 ;vector de interrupcion de alta prioridad goto main main: ;Programa principal fin: goto fin end
  38. 38. REPERTORIO DE INSTRUCCIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 38 El juego de instrucciones es altamente ortogonal y esta dividido en 4 grupos: • Operaciones orientadas al Byte • Operaciones orientadas al Bit • Operaciones con literales • Operaciones de control
  39. 39. OPERACIONES ORIENTADAS AL BYTE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 39
  40. 40. OPERACIONES ORIENTADAS AL BIT M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 40
  41. 41. OPERACIONES DE CONTROL M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 41
  42. 42. OPERACIONES CON LITERALES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 42
  43. 43. TEMPORIZADORES, PUERTOS DE ENTRADA/SALIDA Y MANEJO DE DATOS M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 43 Los temporizadores son segmentos de código que permiten introducir retardos de tiempo entre la ocurrencia de eventos o la ejecución cíclica de segmentos de código. A saber, su implementación es de alguna de las dos siguientes naturalezas: • Temporizadores de retardo con ciclos anidados Se construyen por medio de una estructura de ciclos anidados calculando el tiempo que tarda en ejecutarse una instrucción “nop” (1 periodo de maquina o 4Tw) y ejecutando esta hasta conseguir el tiempo requerido. • Temporizadores con Timer en hardware Se temporiza por medio del desbordamiento de alguno de los timers de hardware con que cuenta el uC.
  44. 44. TEMPORIZADORES DE RETARDO CÍCLICO • Sea la velocidad de reloj de 20Mhz, con un cristal de cuarzo HS conectado a las patillas OSC1/OSC2: M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 44 Para lograr un retardo de 500 mS, por ejemplo, tendríamos que saber cuantas veces habría que ejecutar la instrucción “nop”. Retardo = 500mS / 0.2 uS = 0.500 / 0.0000002 = 2,500,000 veces la ejecución de nop Tw = 1/20mHz = 50nS La instrucción “nop” tarda en ejecutarse un ciclo de reloj que son 4TW Nop = 4 Tw = 0.2 uS ;Rutina de delay de 500ms Xtal=20Mzh ;----------------------------------- delay: movlw .40 movwf del500ms cic500: movlw .250 movwf externo cic2: movlw .250 movwf interno cic1: nop decfsz interno goto cic1 decfsz externo goto cic2 decfsz del500ms goto cic500 return
  45. 45. TEMPORIZADORES HARDWARE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 45 • Los temporizadores son contadores que al activarlos empiezan una cuenta y cuando esta cuenta se acaba se activa el flanco de interrupción por el temporizador, entrando el micro en la rutina de interrupción del temporizador. • El PIC18F4550 tiene 4 temporizadores, de los cuales 1 de ellos es de 8 bits y el resto de una precisión de 16 bits.
  46. 46. TIMER 0 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 46 Existe la posibilidad de activar un preescaler en los temporizadores de forma que se pueda “alargar” la duración del temporizador, dependiendo del temporizador puede ser de 2,4,8 e incluso 16.
  47. 47. TIMER 1 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 47 Resolución de los temporizadores: Timer0 -> Temporizador configurable de 8 ó 16 bits. Timer1 -> Temporizador de 16 bits. Timer2 -> Temporizador de 8 bits. Timer3 -> Temporizador de 16 bits.
  48. 48. RETARDOS CON EL TIMER0 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 48 Un retardo con un Timmer ofrece la posibilidad de operación independiente de la frecuencia de reloj, ya que un Timmer hardware se basa en un conteo de un registro contador, lo cual da robustez e independencia al software. Proceso de Inicialización y uso del timmer0 como retardador sin interrupciones: 1. Calcule el contador del timmer según la relación: retardo = 4 * Prescaler * (65535 – valor cargado en timer0) * Fosc Ejemplo: TMR0 = 65535 – (retardo * Fosc) / (4 * prescaler)
  49. 49. PUERTOS DE ENTRADA/SALIDA Y MANEJO DE DATOS M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 49 • El uC PIC18F4550 dispone 5 puertos de E/S que incluyen un total de 35 líneas digitales de E/S: Todas las líneas digitales de E/S disponen de al menos una función alternativa asociada a alguna circuitería especifica del uC. Cuando una línea trabaja en el modo alternativo no puede ser utilizada como línea digital de E/S estándar.
  50. 50. PUERTOS DE ENTRADA/SALIDA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 50 • REGISTROS DE UN PUERTO DE E/S: Cada puerto de E/S tiene asociado 3 registros: • Registro TRIS: mediante este registro se configuran cada una de las líneas de E/S del puerto como ENTRADA (bit correspondiente a '1') o como SALIDA (bit correspondiente a '0'). • Registro PORT: mediante este registro se puede leer el nivel de pin de E/S y se puede establecer el valor del latch de salida. • Registro LAT: mediante este registro se puede leer o establecer el valor del latch de salida.
  51. 51. PUERTOS DE ENTRADA/SALIDA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 51
  52. 52. PUERTO A M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 52 • Dispone de 7 líneas de E/S. Las funciones alternativas son: ■ RAO: entrada analógica (ANO)/ entrada de comparación (C1IN-) ■ RAÍ: entrada analógica (AN1)/ entrada de comparación (C2IN-) ■ RA2: entrada analógica (AN2)/ entrada de comparación (C2IN+) ■ RA3: entrada analógica (AN3)/ entrada de comparación (C1IN+) ■ RA4: entrada de reloj del Temporizador 0 (TOCKI)/salida de comparación (C1OUT) ■ RA5: entrada analógica (AN4)/ salida de comparación (C2OUT)/HLVDIN entrada de detección de tensión alta/baja ■ RA6: entrada del oscilador principal (OSC2)/salida de señal de reloj (CLKO) En el reset las líneas RAO, RAÍ, RA2, RA3 y RA5 se configuran como líneas de entrada analógicas. Para poder utilizarlas como líneas digitales de E/S hay que desactivar la función analógica: MOVLW 0FH ; Se desactiva la función de entrada analógica MOVWF ADCON1 ; para las líneas RAO, RA1, RA2, RA3 y RA4 MOVLW 07H ; Configura los comparadores para entrada digital. MOVWF CMCON ;para las líneas RAO, RA1, RA2 y RA3 MOVLW 3CH ; Se configuran RA5, RA4, RA3 y RA2 como entradas MOVWF TRISA ; y RA1 y RAO como salidas
  53. 53. REGISTRO ADCON1 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 53 – VCFG1: Bit de configuración de la tensión de referencia VREF-: VCFG1=‘0’: VREF- se conecta a VSS VCFG1=‘1’: VREF- se conecta a la línea física RA2 – VCFG0: Bit de configuración de la tensión de referencia VREF+: VCFG1=‘0’: VREF+ se conecta a VDD VCFG1=‘1’: VREF+ se conecta a la línea física RA2 – PCFG3..PCFG0: Bits configuración de los puertos de conversión A/D. Mediante estos bits se establecen que líneas físicas (RA5..RA0, RB4..RB0, RE1 y RE0) van a trabajar como entradas del convertidor A/D (Ver Tabla de configuración de líneas de conversión A/D).
  54. 54. REGISTRO ADCON1 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 54
  55. 55. PUERTO B M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 55 • Dispone de 8 líneas de E/S. Las funciones alternativas son: ■ RBO: entrada analógica (AN12)/ interrupción externa 0 (INTO)/entrada de fallo del ECCP (FLTO)/entrada de datos del SPI (SDI)/línea de datos del PC (SDA) ■ RB1: entrada analógica (AN10)/ interrupción externa 1 (INTl)/línea de reloj del SPI (SDI)/línea de reloj del PC (SDA) ■ RB2: entrada analógica (AN8)/ interrupción externa 2 (INT2)/salida de datos del USB (VCMO) ■ RB3: entrada analógica (AN9)/ línea de E/S del CCP2 (CCP2)/salida de datos del USB (VPO) ■ RB4: entrada analógica (AN11)/ interrupción por cambio en pin (KBIO)/ salida de CS del SSP (CSSP) ■ RB5: interrupción por cambio en pin (KBI1)/ línea de programación (PGM) ■ RB6: interrupción por cambio en pin (KBI2)/ línea de programación (PGC) ■ RB7: interrupción por cambio en pin (KBI3)/ línea de programación (PGD)
  56. 56. PUERTO B M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 56 • Resistencias de pull.up: Todas las líneas del puerto B disponen de resistencias de pull- up internas que pueden ser activadas poniendo el bit RBPU del registro INTCON2 a '0' (RPBU=T después de un reset). Si una línea del puerto B se configura como salida la resistencia de pull-up correspondiente se desactiva automáticamente. Por defecto, en el reset las líneas RB4..RB0 están programadas como entradas analógicas. Existen dos formas de configurar RB4..RB0 como líneas de E/S digitales: ■ Poniendo a '0' el bit PBADEN del registro de configuración CONFIG3H=> en el reset RB4..RB0 se configuran como líneas de E/S digitales ■ Si PBADEN='l' (valor por defecto) se pueden configurar RB4..RB0 como líneas el E/S digitales desactivando la función analógica: MOVLW 0x07 ; Se desactiva la función de entrada analógica MOVWF ADCON1 ; para las líneas RBO, RB1, RB2, RB3 y RB4 MOVLW 0xF0 ; Se configuran RB7, RB6, RB5 y RB4 como entradas MOVWF TRISB ; y RB3, RB2, RB1 y RBO como salidas
  57. 57. PUERTO C M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 57 • Dispone de 5 líneas de E/S (RCO, RCl, RC2, RC6 y RC7) y 2 líneas de solo entrada (RC4 y RC5). Las funciones alternativas son: ■ RCO: salida del oscilador del Temp. 1 (T1OSO)/ entrada de contador de los temporizadores 1 y 3 (T13CKI) ■ RCl: entrada del oscilador del Temporizador 1 (TIOSI)/ línea de E/S del CCP2 (CCP2)/ salida OE del transceiver del USB (UOE) ■ RC2: línea de E/S del CCP1 (CCP1)/ salida PWM del ECCP1 (PÍA) ■ RC4: línea menos del bus USB (D-) / línea de entrada del USB (VM) ■ RC5: línea más del bus USB (D-) / línea de entrada del USB (VP) ■ RC6: salida de transmisión del EUSART (TX)/ línea de reloj del EUSART (CK) ■ RC7: entrada de recepción del EUSART (RX)/ línea de datos síncrona del EUSART (DT)/ salida de datos del SPI (SDO) En el reset todas las líneas del puerto C quedan configuradas como entradas digitales
  58. 58. PUERTO D M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 58 • Dispone de 8 líneas de E/S. Las funciones alternativas son: ■ RDO: línea de datos del SPP (SPPO) ■ RD1: línea de datos del SPP (SPP1) ■ RD2: línea de datos del SPP (SPP2) ■ RD3: línea de datos del SPP (SPP3) ■ RD4: línea de datos del SPP (SPP4) ■ RD5: línea de datos del SPP (SPP5) / salida PWM del ECCP1 (P1B) ■ RD6: línea de datos del SPP (SPP6) / salida PWM del ECCP1 (P1C) ■ RD7: línea de datos del SPP (SPP7) / salida PWM del ECCP1 (P1D) • Resistencias de pull.up: Todas las líneas del puerto D disponen de resistencias de pull-up internas que pueden ser activadas poniendo el bit RDPU del registro PORTE a T (RPDU='O' después de un reset). Si una línea del puerto D se configura como salida la resistencia de pull-up correspondiente se desactiva automáticamente.
  59. 59. PUERTO E M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 59 • Dispone de 3 líneas de E/S (REO, RE1 y RE2) y 1 línea de solo entrada (RE3). Las funciones alternativas son: ■ REO: entrada analógica (AN5)/ salida de reloj 1 del SPP (CK1SPP) ■ RE1: entrada analógica (AN6)/ salida de reloj 2 del SPP (CK2SPP) ■ RE2: entrada analógica (AN7)/ salida de habilitación del SPP (OESPP) ■ RE3: Línea de reset externo (MCLR) / línea de programación (VPP) • En el reset todas las líneas RE2..RE0 se configuran como entradas analógicas. Para poder utilizarlas como líneas digitales de E/S hay que desactivar la función analógica: • MOVLW 0FH ; Se desactiva la función de entrada analógica MOVWF ADCON1 ; para las líneas REO, RE1 y RE2 MOVLW 06H ; Se configuran RE2 y RE1 como entradas MOVWF TRISE ; y RE0 como salida La línea RE3 por defecto tiene la función de Reset del uC. Si se desea desactivar la función de Reset y utilizar RE3 como línea de entrada digital hay que poner a '0' el bit MCLRE del registro de configuración CONFIG3H.
  60. 60. OSCILADOR M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 60 • El PIC18F4550, tiene un oscilador interno de 32 KHZ. Este PIC ejecuta una instrucción en un ciclo de máquina (4 periodos de reloj). • Cuando se requiere aumentar la velocidad de procesamiento se debe conectar un oscilador externo con frecuencias de osciladores de 8, 10, 12, 16, 20, 32, 40 y 48 MHz. • Los capacitores cerámicos entre 15 a 33 pF.
  61. 61. RESET M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 61 • Es la acción con la cual inicia el trabajo del uC. • Existe el pin 1 MCLR (masterclear) que puede ser configurado como RESET. • Cuando se conecta a un nivel bajo este pin, en el uC se produce un reset. Para operación normal este pin debe encontrarse a un nivel alto.
  62. 62. ARMADO DEL SISTEMA MÍNIMO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 62
  63. 63. ¿QUÉ ES UN BOOTLOADER? M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 63 • El termino bootloader hace referencia a un pequeño programa que se realiza para determinado microcontrolador, ya sea PIC, Freescale, Atmel, etc. Este código lo que hace es tomar los datos que se le enviaran por puerto serial (UART), USB, Ethernet, el que sea que pueda enviar una cadena de Bytes al microcontrolador. El microcontrolador va tomando esos datos que le van llegando y los va "Programando" en su propia memoria Flash.
  64. 64. ¿QUÉ ES UN BOOTLOADER? M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 64 • Es necesario tener un programador para usarlo solo una vez y así grabarle el programa residente en memoria FLASH. Ya después de esto se usa el Bootloader para grabar la flash del micro. • El programa residente ocupa memoria flash y por ende tienes un poco menos de memoria para la aplicación real del micro. No es mucha la que quita, pero hay que tener eso claro. • Por ningún motivo se puede sobrescribir las posiciones de memoria FLASH en la que se encentra el programa residente Bootloader. Si se borra por algún error, pierdes el bootloader y toca nuevamente programarlo con un grabador externo. • No todos los micros pueden soportar Bootloder, esto se limita a aquellos que tienen la capacidad de autograbar su memoria FlLASH. Por ejemplo el 16F84 no lo permite, por eso sacaron la versión PIC16F628A que si lo deja y además tiene mejores prestaciones.
  65. 65. CONFIGURACIÓN DEL HIDBOOTLOADER M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 65 • Microchip provee un Bootloader para agilizar el tiempo de desarrollo de aplicaciones para Pic que cuentan con interfaz USB • Tan solo es necesario cargar el microcontrolador con el firmware y proteger el área de booteo • Adicionar los fuses convenientes en el código • Relocalizar los vectores de interrupción para que no toquen los vectores originales.
  66. 66. RELOCALIZACIÓN DE VECTORES DE INTERRUPCIÓN • Los vectores originales situados en la parte baja de la memoria son asignados al BootLoader • Los vectores relocalizados se asignan al uso del programa de usuario • Es necesario escribir un script para el linker (mplink) para que el ensamblador “sepa” donde fueron localizados los nuevos vectores y donde se asigno el espacio de memoria de programa para el programa de usuario. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 66
  67. 67. ESQUEMA DE ÁRBOL DE PROYECTO PARA USO CON BOOTLOADER • Programa principal con vectores relocalizados • Script para el linker (MPLink) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 67
  68. 68. FORMATO DEL LINKER SCRIPT M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 68
  69. 69. HIDBOOTLOADER M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 69 • El diagrama del sistema mínimo incluye la circuitería para sostener el HIDBootloader • Para entrar en modo Bootloader, se debe presionar el botón conectado en RB4, manteniéndolo presionado, después se debe dar RESET al pic con otro pulsador en el pin MCLR. Al resetear el PIC, lo primero que hace el PIC es preguntar por el estado del PIN RB4 donde esta el pulsador. De estar presionado este botón, el PIC entra en modo Bootloader y si no ejecuta el código normal que le grabamos al PIC. • El led conectado en el puerto RD1 se enciende y apaga cuando entra en modo Bootloader.
  70. 70. HIDBOOTLOADER SOFTWARE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 70
  71. 71. FORMATO DE LOS FUSES EN ENSAMBLADOR M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 71 ;-------------------------------------------------------------------------------------- ;Bits de configuración ;---------------------------- CONFIG PWRT = ON ;PWRT habilitado CONFIG WDT = OFF ;Watchdog deshabilitado CONFIG MCLRE = ON ;MCLR como entrada CONFIG PBADEN = OFF ;Todos los pines del puerto B como entradas ;analogicas CONFIG DEBUG = OFF ;Deshabilitar modo DEBUG CONFIG LVP = OFF ;Deshabilitacion del modo programacion de bajo nivel CONFIG FOSC = HSPLL_HS ;Oscilador de alta velocidad con PLL habilitado CONFIG BOR = OFF CONFIG USBDIV = 1 CONFIG PLLDIV = 5 CONFIG CPUDIV = OSC1_PLL2 CONFIG VREGEN = ON ;********* Bits de protección ****************** CONFIG WRTB = ON ;bit de proteccion del area de booteo CONFIG CP0 = OFF ;los bloques del codigo de programa CONFIG CP1 = OFF ;no estan protegidos CONFIG CP2 = OFF CONFIG CP3 = OFF CONFIG CPB = ON ;Sector Boot esta protegido CONFIG CPD = ON ;La EEPROM esta protegida
  72. 72. FORMATO DE LLAMADAS EN ENSAMBLADOR M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 72 ;------------------------------------------------------------------------------------ ;vector de interrupcion del reset ;-------------------------------- ORG 0x1000 goto main ;----------------------------------------------------------------------------------- ;vector de interrupcion de alta prioridad ;---------------------------------------- ORG 0X1008 goto main ;----------------------------------------------------------------------------------- ;vector de interrupcion de baja prioridad ;---------------------------------------- ORG 0X1018 goto main
  73. 73. 1.4. DISEÑO DE APLICACIONES CON PIC (LENGUAJE C, C18) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 73 • Repertorio de instrucciones • Diseño de aplicaciones básicas en lenguaje C • Puertos de E/S, temporizadores y manejo de datos • Interrupciones
  74. 74. EL COMPILADOR MC18 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 74 • Si queremos realizar la programación de los microcontroladores PIC en un lenguaje como el C, es preciso utilizar un compilador de C. • Dicho compilador nos genera ficheros en formato Intel- hexadecimal, que es el necesario para programar (utilizando un programador de PIC) un microcontrolador de 6, 8, 18 ó 40 patillas.
  75. 75. EL COMPILADOR MC18 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 75 • Mas productividad • Permite codificado en línea de ASM • Soporta compilado en línea con MPLAB • Portabilidad de código en lenguaje C • Soporta recursividad de funciones • Amplia gama de microcontroladores • Capacidad de relocalización de código y vectores de interrupción
  76. 76. FORMATO DE PROGRAMA (1) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 76 #include <p18f4550.h> #include <delays.h> //Bits de configuracion //-------------------------------------------------------------------- #pragma config PWRT = ON //PWRT habilitado #pragma config WDT = OFF //Watchdog deshabilitado #pragma config MCLRE = ON //MCLR como entrada #pragma config PBADEN = OFF //Todos los pines del puerto B como entradas digitales #pragma config DEBUG = OFF //Deshabilitar modo DEBUG #pragma config LVP = OFF //Deshabilitacion del modo programacion de bajo nivel #pragma config FOSC = HSPLL_HS //Oscilador de alta velocidad con PLL habilitado #pragma config BOR = OFF //Brown out Voltage desactivado #pragma config USBDIV = 1 //Divisor de FOSC para el puerto USB activado #pragma config PLLDIV = 5 //Factor de division para el generador de señal de reloj (cristal de 20Mhz) #pragma config CPUDIV = OSC1_PLL2 #pragma config VREGEN = ON //Bits de proteccion //------------------------------------------------------------------- #pragma config WRTB = ON //bit de proteccion del area de booteo #pragma config CP0 = OFF //los bloques del codigo de programa #pragma config CP1 = OFF //no estan protegidos #pragma config CP2 = OFF #pragma config CP3 = OFF #pragma config CPB = ON //Sector Boot esta protegido #pragma config CPD = ON //La EEPROM esta protegida
  77. 77. FORMATO DE PROGRAMA (2) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 77 /**VARIABLES **************************************************/ #pragma udata /** FUNCIONES PROTOTIPO ***************************************/ /** VECTOR REMAPPING ******************************************/ extern void _startup (void); #pragma code _RESET_INTERRUPT_VECTOR = 0x000800 void _reset (void) { _asm goto _startup _endasm } #pragma code #pragma code _HIGH_INTERRUPT_VECTOR = 0x000808 void _high_ISR (void) { ; } #pragma code _LOW_INTERRUPT_VECTOR = 0x000818 void _low_ISR (void) { ; }
  78. 78. FORMATO DE PROGRAMA (3) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 78 /** CODIGO DE LA FUNCION PRINCIPAL ***************************/ #pragma code void main(void) { TRISD = 0; //TODOS LOS PINES DEL PUERTO B COMO SALIDA LATD = 0; //TODOS LOS PINES DEL PUERTO B EN CERO while(1) { LATDbits.LATD7 = !LATDbits.LATD7; Delay10KTCYx(250); } }//end main()
  79. 79. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 79 • Asignación:
  80. 80. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 80 • Aritméticos
  81. 81. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 81 • Relacionales
  82. 82. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 82 • Lógicos • De manejo de bits
  83. 83. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 83 • Incremento, decremento y desplazamiento de bits
  84. 84. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 84 • Dirección e Indirección • Ejemplos: • p = &contador; /* p apunta a la dirección de contador */ • El operador de indirección *, nos da el valor o contenido de la variable cuya dirección está apuntada por el puntero. • p = &contador; /* p apunta a la dirección de contador */ • a = *p; /* guarda en a el contenido de la var. apuntada por p */
  85. 85. EXPRESIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 85
  86. 86. MANEJO DE DATOS M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 86 • Tipos: El lenguaje C proporciona cinco tipos básico de datos, con cuatro modificadores posibles. Podemos utilizar variables de cualquiera de esos tipos. • La tabla siguiente muestra los tipos disponibles: • C18 permite una "forma corta" para escribir algunos de los tipos. Concretamente, podemos utilizar unsigned, short, o long en lugar de unsigned int, short int, o long int.
  87. 87. • Las variables deben ser declaradas antes de ser utilizadas en el programa. El proceso de declaración de variables le dice a C18 de que tipo son y como se llaman. Al igual que las demás instrucciones de C18, deben terminar con “;”. • La forma en que se declara una variable es la siguiente: tipo nombre_de_la_variable; Donde: tipo es alguno de los enumerados en la tabla anterior. Unos ejemplo son: int temperatura; int a = 0; signed long a = 125, b, c = -10; char nombre = 'juan perez'; DECLARACIÓN DE VARIABLES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 87
  88. 88. • C18 nos permite mezclar diferentes tipos de variables dentro de una misma expresión. Y existen un conjunto de reglas que nos permiten saber de que tipo será el resultado de la misma. • El C18 convertirá a int cualquier expresión que contenga variables char, short o int. Esta conversión solo tiene efecto mientras se realizan los cálculos. Las variables en sí mismas no cambian su tipo. • Las reglas de conversión de tipos hacen que el resultado de una operación sea siempre el mismo que el de la variable más larga que intervenga en ella. Sin embargo, podemos forzar a que el resultado sea de un tipo en particular, de la siguiente forma: • (tipo) valor donde tipo es el tipo al que queremos que pertenezca valor. El siguiente ejemplo nos aclarará todo esto: int a = 250, b = 10; long c; c = a * b; CONVERSIONES ENTRE TIPOS M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 88
  89. 89. EJEMPLO 1 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 89 • “Hola Mundo” con un simple led
  90. 90. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 90
  91. 91. PODEMOS DEFINIR UN PUERTO EN C18 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 91 1. Por medio de una referencia simbólica 2. Por medio de comandos del C18
  92. 92. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 92 MAPA DE E/S DEL PIC18F4550
  93. 93. POR MEDIO DE UNA REFERENCIA SIMBÓLICA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 93 • Siempre puede definirse un bit: • #define <simbolo> <PORT>bits.#pin • Ejemplo: #define Led PORTBbits.PORTB0 • Después ponerlo a un nivel: • <simbolo>=[0|1] • Ejemplo: Led=0; • Obtener el nivel: • <simbolo>)==[1|0] • If(Led==0) Nunca olvidar definir como va a usarse cada bit: TRIS<port>(<estado de los bits>);
  94. 94. POR MEDIO DE COMANDOS C18 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 94 • Configuración de los pines de E/S Cada puerto tiene vinculados determinados pines agrupados en forma de un “Puerto”, los pines deben configurarse individualmente, los registros de configuración siguen el estandar del Ensamblador. TRIS<puerto> configura los bits vinculados con un puerto en particular un bit en [1] define una entrada un bit en [0] define una salida
  95. 95. PROGRAMAS EJEMPLO: M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 95 • Programa “hola mundo” • Corrimientos a la derecha y a la izquierda • Rotación de bits a la derecha y a la izquierda • Contador binario de 8 bits(0-255) • Pausas en milisegundos • Detección de nivel con pushboton
  96. 96. INTERRUPCIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 96 • Las interrupciones son tareas programas que el micro realiza cuando el flanco de interrupción se activa, con lo que el micro deja el programa principal y accede a una parte reservada de la memoria que se llama rutina de interrupción, donde una vez acabada la rutina de interrupción, se baja el flanco de interrupción que lo ha provocado y el micro continua el programa principal donde lo había dejado antes de ir a la rutina de interrupción.
  97. 97. INTERRUPCIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 97 • Las interrupciones en el micro pueden darse de varios tipos: • Interrupciones externas. • Interrupciones por desbordamiento del contador. • Interrupciones de EUSART. • Interrupciones USB. • Interrupciones del ADC. • Interrupciones por periféricos externos.
  98. 98. INTERRUPCIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 98 • El micro puede tener varias interrupciones programadas a la vez, pero hay que tener en cuenta que una vez que el código entra en una rutina de interrupción, el micro no puede acceder a otra interrupción hasta que la rutina de interrupción que se está ejecutando finalice. • En el caso de que saltasen a la vez 2 o más interrupciones, el micro accedería aleatoriamente a una de ellas, es por ello que suele darse prioridad a las interrupciones si tenemos alguna rutina de interrupción más importantes que otras.
  99. 99. INTERRUPCIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 99 • El Pic18F4550 cuenta con tres vectores de interrupcion, mismo que apuntan a las rutinas de servicio correspondientes: • Reset (0000h) • Usuario alta prioridad (0008h) • Usuario baja prioridad (0018h)
  100. 100. INTERRUPCIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 100 • ¿Como se codifican las interrupciones? ;-------------------------------------------------------------------------- ;vector de interrupción del reset ;-------------------------------- ORG 0x0000 goto main ;Etiqueta donde inicia la ISR ;-------------------------------------------------------------------------- ;vector de interrupción de alta prioridad ;---------------------------------------- ORG 0X0008 goto main ;Etiqueta donde inicia la ISR ;-------------------------------------------------------------------------- ;vector de interrupción de baja prioridad ;---------------------------------------- ORG 0X0018 goto main ;Etiqueta donde inicia la ISR • Las instrucciones GOTO <label>, transfieren el control a una parte de nuestro programa donde reside la ISR • ISR significa Interrupt Service Routine, es decir rutina de servicio a interrupción y en pocas palabras y lenguaje coloquial no es otra cosa que el código que deberá ejecutar el microcontrolador cuando ocurra el estímulo hardware que desencadena la interrupción, por ejemplo presionar el botón de RESET.
  101. 101. EJEMPLO 2 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 101 • “Hola mundo” con LCD 16x2 alfanumérico
  102. 102. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 102
  103. 103. • Botones y Leds • Teclado de matriz • Display Led, Alfanumérico y Grafico 1.4. INTERCONEXIÓN DE PERIFÉRICOS
  104. 104. BOTONES Y LEDS M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 104 • Por lo general es necesario siempre agregar un botón para señalizar alguna acción que debe lleva a cabo el usuario del sistema embebido, por ejemplo, el manejo de un menú de opciones, la ocurrencia de un evento, el accionamiento de un actuador, etc. • Los botones utilizados en los sistemas embebidos por lo general son microswitches como los que a continuación se ilustra en la figura. En Proteus Isis un botón se representa como se muestra en la figura de la derecha, por lo general el pin donde es conectado un botón como entrada se envía a Pull-Up con una resistencia de 4.7k a 10k y un capacitor en paralelo a tierra con el pushBoton para eliminar los rebotes provocados al presionar el botón. Este circuito es con activación a 0, es decir el pin lee 1 y al presionar el botón se va a nivel 0.
  105. 105. BOTONES Y LEDS • En el caso de los leds, estos tienen al menos tres presentaciones en encapsulado through-Hole y se clasifican según el tamaño: 3, 5 y 10 milímetros respectivamente, según el diámetro del capuchón y también la forma porque existen redondos, planos y rectangulares. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 105
  106. 106. TECLADO DE MATRIZ • El teclado en un sistema embebido se implementa de diferentes formas, puede ser implementado con una simple botonera con el circuito básico mostrado en el tema de botones, cada uno con su resistencia de pull-up y capacitor antirrebote. Sin embargo, este tipo de diseño para una botonera de mas de 3 botones suele ser poco practica: M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 106 Para los casos en los cuales se requiere una forma mas estilizada de teclado se usa un formato matricial, ya sea en forma de 4 renglones X 3 filas o de 4 x 4.
  107. 107. TECLADO DE MATRIZ M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 107
  108. 108. DISPLAY LED, ALFANUMERICO Y GRAFICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 108 • Los tipos de display interconectados a un microcontrolador tienen tres aplicaciones en particular: • Display led de 7 segmentos, que se usa como señalizador de conteo o reloj, la particularidad de este tipo de configuración es el multiplexeo del canal de datos, ya que solo se usan 7 o 4 líneas de un puerto para enviar el código de despliegue y otras tantas líneas de salida para la polarización del display. • Display alfanumérico LCD, por lo general el mas usado es el de 2 líneas x 16 caracteres o de 4 líneas x 20 caracteres. • El display grafico mas ampliamente usado es el de 128x64 y en este tipo de display la unidad básica es el pixel.
  109. 109. DISPLAY LED DE 7 SEGMENTOS M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 109 • Display Led:
  110. 110. DISPLAY ALFANUMERICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 110
  111. 111. DISPLAY ALFANUMERICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 111
  112. 112. M.C. Andrés Gerardo Fuentes Covarrubias 112 LCD 16X2 El LCD cuenta en sus señales de control de patillas para gobernar el intercambio de datos y comandos entre el microcontrolador y el LCD. Básicamente: • E (Enable): Después de enviar un dato o comando al LCD un impulso positivo no menor de 450nS valida el bus de datos y hace que el LCD tome en consideración lo que este presente en el. • R/W’ (Lectura/Escritura’): Si esta en nivel 1 pone el bus de datos en modo de lectura, si es 0 lo pone en modo de escritura, por lo general esta señal permanentemente se hace 0, a menos que el programador vaya a efectuar operaciones de lectura a la memoria del LCD. • RS (Selección de Registro): Por medio de esta señal, el LCD discrimina si lo que esta presente en el bus de datos es un Comando (RS=0) o un código ASCII para desplegar en el display. (RS=1).
  113. 113. M.C. Andrés Gerardo Fuentes Covarrubias 113 LCD 16X2 • Juego de señales
  114. 114. USO E INICIALIZACIÓN DEL LCD ALFANUMÉRICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 114 • Las funciones de manejo del LCD alfanumérico se encuentran en la librería XLCD.h • El comando OpenXLCD(FOUR_BIT & LINES_5X7) ejecuta el proceso de inicialización del LCD, indica al controlador de LCD HD44780 fabricado por Hitachi que inicialice el LCD conectado al uC por medio de 4 líneas de control/datos y que el carácter formado será de 5x7 pixeles con un display multilinea. • La función putrsXLCD( “” ); envía datos hacia el LCD para su despliegue. Si fuese necesario tener salida de datos formateada deberá antes usarse la funcion sprintf() y posteriormente putsXLCD(). • Se puede redirigir la salida de consola por medio de printf() reenviándola al LCD mediante printf(lcd_putc,…)
  115. 115. FUNCIONES RELACIONADAS CON EL LCD M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 115
  116. 116. DISPLAY GRAFICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 116 La resolución tradicional para aplicaciones embebidas es de 128 x 64 pixeles. A diferencia del display alfanumérico 16x2 es necesario manejar los pixeles individualmente y crear las fuentes de texto con algún editor de fuentes y exportarlas como librerías al proyecto del compilador. El bus de datos es de 8 bits y no es opcional manejar 4 bits como los LCD 16x2.
  117. 117. DISPLAY GRAFICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 117
  118. 118. • El convertidor analógico – digital y medición de temperaturas • El DAC con resistencias, Interconexión de un MC1408-0 y control de potencia en DC 1.6. CONVERTIDORES DE DATOS Y APLICACIONES BÁSICAS
  119. 119. CONVERTIDOR ANALÓGICO-DIGITAL M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 119 • Microchip PIC18F4550 contiene 13 convertidores analógicos digitales, los cuales pueden ser seleccionados en modos de resolución de 8 ó 10 bits, para ello antes habrá que configurar las entradas en modo ADC.
  120. 120. CONVERTIDOR ANALÓGICO-DIGITAL M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 120
  121. 121. CONVERTIDOR ANALÓGICO-DIGITAL M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 121 • Otra de sus características es que tiene dos patillas de referencia donde podemos dar la tensión de referencia para todas o algunas de las entradas del CAD. • Otra posibilidad es configurar el tiempo de adquisición de datos, pues tiene un registro habilitado especialmente pare ello ya que en algunas ocasiones hay que esperar al interruptor de muestreo que se cierre y que el condensador (Chold) se descargue para poder hacer otra adquisición.
  122. 122. CONVERTIDOR ANALÓGICO-DIGITAL M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 122 Se recomienda que la máxima resistencia de entrada (Rs) sea de 2.5K, pues sino la conversión no sería del todo fiable, por lo que habría que hacer una adaptación de impedancias entre las partes.
  123. 123. M.C. Andrés Gerardo Fuentes Covarrubias 123 MODELO DE CONVERSIÓN • El multiplexor.- El ADC es un convertidor de aproximaciones sucesivas de 10 bits, el cual puede realizar la conversión de una de las 8 entradas (o canales) analógicas AN0,...,AN7 multiplexadas por la lógica interna que utiliza como líneas de selección del canal los bits CHS2:CHS0, en donde se coloca el número en binario del canal a convertir. • Voltajes de Referencia.- Todo convertidor ADC requiere voltajes de referencia que determinan el valor de mínima escala (VREF-) y el de plena escala (VREF+), de manera que la conversión de un valor de voltaje analógico Vin en el rango de VREF- a VREF+ producirá un valor equivalente binario D en el rango de 0 a 2n, donde n es la resolución del convertidor (n = 10).
  124. 124. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 124
  125. 125. M.C. Andrés Gerardo Fuentes Covarrubias 125 INICIALIZACIÓN DEL ADC• Encabezado #include <18f4550.h> #include <adc.h> • Inicialización del ADC y el canal a muestrear unsigned int ADCResult=0; unsigned char config1=0x00,config2=0x00,portconfig=0x00; //Inicializar ADC con los siguientes parámetros: //---------------------------------------------- // FOSC/2 como reloj de conversion (ADC_FOSC_2) // Resultado justificado a la derecha del registro de conversion (ADC_RIGHT_JUST) // Tiempo de adquisicion de 2 Tad (ADC_2_TAD) // Muestreo en el Canal 1 (ADC_CH0) // Interrupciones del ADC habilitadas (ADC_INT_ON) // Voltaje de referencia del ADC desde VDD a VSS (ADC_REF_VDD_VSS) config1 = ADC_FOSC_2 | ADC_RIGHT_JUST | ADC_2_TAD ; config2 = ADC_CH0 | ADC_INT_ON | ADC_REF_VDD_VSS ; portconfig = ADC_0ANA ; OpenADC(config1,config2,portconfig);
  126. 126. 126 INICIALIZACIÓN DEL ADC • Muestreo // Habilitamos el ADC ADC_INT_ENABLE(); for(;;) { // Toma una muestra y la convierte a voltaje ConvertADC(); while(BusyADC()); ADCResult = (unsigned int) ReadADC(); //volts = (ADCResult*5.0)/1024.0; // convierte el valor del ADC a su equivalente en voltaje printf("Dato=%u rn",ADCResult); //Lo despliega en la consola Delay10KTCYx(retraso1s); } M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  127. 127. 127 APLICACIÓN PRÁCTICA • Medición de temperatura • Sensor LM35 grados centígrados • Sensor lineal • Necesidad de un Circuito Acondicionador de Señal (CAS) • Regulación de la velocidad de muestreo • Tipos de variables en control análogo • Acciones de control según la variable controlada. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  128. 128. 128 EL SENSOR DE TEMPERATURA LM35Z • Sensor en grados centígrados • Escala de medición 10mV/°C • Salida lineal • Fuente de alimentación unipolar positiva M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  129. 129. 129 COMPORTAMIENTO LINEAL • Solo temperaturas positivas • Resistencia única de linealización • Polarización totalmente positiva • Sin CAS • Interfaz directa con el microcontrolador, entrada analógica M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  130. 130. M.C. Andrés Gerardo Fuentes Covarrubias 130 ¿PORQUÉ USAR UN CAS (CIRCUITO ACONDICIONADOR DE SEÑAL)? •En la aplicación típica con una fuente unipolar, la salida de voltaje esta autoelevada para permitir la lectura de temperaturas positivas y negativas. •Rango de medición de (-55) a (+150°C) •Se usa una resistencia de calibración de 18k •La salida es la diferencia de tensión entre las terminales de salida del sensor.
  131. 131. 131 CIRCUITO DE ACONDICIONAMIENTO DE SEÑAL 24.0 3 1 VOUT 2 U1 LM35 V1 5V 3 2 1 84 U2:A LM358 U1(VOUT) R2 10k R1 10k D1 1N4148 D2 1N4148 R3 18k R4 10k R5 10k U2:A(OP) R1(1) LM35Z Comparador de Ganancia unitaria Salida M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  132. 132. 132 EL AMPLIFICADOR OPERACIONAL • LM358, OpAmp cuadruple unipolar • Usado para CAS para uC unipolares • Baja señal y bajo voltaje de conversión M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  133. 133. 133 ACONDICIONAMIENTO LINEAL DE SEÑALES EL AMPLIFICADOR DIFERENCIAL • (V+) se obtiene de la división de voltajes: (V+) = [R2/(R2 + R1)]V2 • Las corrientes IA e IB se calculan usando la ley de Ohm. • IA = IB y (V+) = (V-) • Vo se obtiene de una sustitución sencilla. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  134. 134. • SE ADELANTA EL TEMA DEL CAPITULO 3 POR ASI REQUERIRLO LA APLICACIÓN PRACTICA. 3.2. COMUNICACIÓN SERIAL DE DATOS MICROCONTROLADOR – PC
  135. 135. COMUNICACIONES SERIALES PIC18F4550 135 • Están reguladas por la USART del PIC • Se utilizan pines particulares del PIC • Pueden elegirse tres tipos de interfaz, a saber: • SPI (Asíncrona), SCI (Sincrona), I2C (Sincrona) • Este modulo de librería para periférico contiene: • Soporta transmisión/recepción de bytes • Incorpora funciones para transmisión/recepción multi BYTE • Provee funciones para manejo de buffers • Provee macros para habilitar/deshabilitar interrupciones M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  136. 136. INTERFAZ 136 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  137. 137. INSTRUCCIONES DEL C18 137 • FUNCIONES • OPENUSART() • WRITEUSART() • baudUSART() • getsUSART() • putrsUSART() • putsUSART() • ReadUSART() • MACROS • DataRdyUSART • CloseUSART • BusyUSART • putcUSART • getcUSART M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  138. 138. INICIALIZACIÓN DE LA USART 138 • FUNCIONES • OPENUSART(), • sintaxis: OPENUSART(unsigned char config, unsigned int spbrg); • Parámetros básicos: • USART_TX_INT_OFF :Interrupción por transmisión=OFF • USART_RX_INT_OFF :Interrupción por recepción=OFF • USART_ASYNCH_MODE :Modo asíncrono típico de RS232C • USART_EIGHT_BIT :Modo datos=8 bits • USART_CONT_RX :Modo recepción continua de datos • USART_BRGH_LOW :Palabra de configuración para velocidad baja • Selección de velocidad de transmisión, velocidad baja: spbrg=X • X=(Fosc/velocidad_transmision)/64)-1 Para 9600 X=77 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  139. 139. TRANSMISIÓN DE CARACTERES 139 Para la transmisión de caracteres se puede usar una función dedicada, o bien la función de consola printf() con las opciones de formateo de salida: Ejemplo: printf(“Contador=%u %u”,contador1, contador2); M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  140. 140. RECEPCIÓN DE CARACTERES (POLLING) 140 Para la recepción de caracteres se puede usar una función dedicada, o bien las funciones de consola con las opciones de formateo: Ejemplo: getcUSART() Es necesario escanear el valor de la bandera RCIF para saber en que momento la EUSART ha recibido un dato por el puerto serial si se trabaja en modo de polling de la interfaz serial, el código resultante es como el siguiente: dato=0; while(dato!=13) //Recibimos datos hasta que se reciba un r { while(PIR1bits.RCIF==0); //Ciclar mientras no haya dato dato=getcUSART(); //Leer dato recibido en el buffer printf("%c",dato); //Retrasmitimos para depurar } M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  141. 141. RECEPCIÓN DE CARACTERES (INTERRUPCIÓN) 141 Para la recepción de caracteres mediante el método de interrupciones es necesario definir en ON la bandera de configuración correspondiente al momento de configurar la EUSART mediante la función OpenUSART(): OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW, 77); Siguiendo la metodología de definición de interrupciones, asignar una función de servicio a la interrupción en el vector de interrupción bajo 0008H. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  142. 142. 142 Siguiendo la metodología de definición de interrupciones, asignar una función de servicio a la interrupción en el vector de interrupción bajo 0008H. //** Seccion de interrupciones ************************** void ISRRecepcion (void); //Funcion prototipo para la interrupcion del RCIF volatile char dato, kbHit; //Variables utilizadas en el control de la interrupcion #pragma code Interrupcion = 0x0008 void VectorInterrupcion (void) { _asm goto ISRRecepcion _endasm } #pragma code //Se cierra seccion //Rutina de servicio a la interrupcion de recepcion serial #pragma interrupt ISRRecepcion void ISRRecepcion (void) { if (PIR1bits.RCIF==1) { dato=getcUSART(); //Se lee dato recibido kbHit=1; //Indica que se ha recibido un dato PIR1bits.RCIF=0; //Borramos bandera de interrupcion } } M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  143. 143. 143 Finalmente, inicializar las interrupciones por periféricos en el programa principal y atrapar la bandera de recepción: void main(void) { TRISB=0; OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW, 77); RCONbits.IPEN =0; //Deshabilitamos prioridades INTCONbits.PEIE =1; //Habilitamos la interrupcion de perifericos INTCONbits.GIE =1; //Habilitamos interrupcion global kbHit =0; //Inicializamos la bandera de recepcion de caracter for(;;) { if(kbHit==1) { printf("%c",dato); kbHit=0; } } } M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  144. 144. 144 DUDAS Y PREGUNTAS: • fuentesg@ucol.mx • fuentesg85@hotmail.com • fuentesg@gmail.com • FACEBOOK: /Andres.FuentesCovarrubias

×