SlideShare uma empresa Scribd logo
1 de 144
Baixar para ler offline
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
funcionales de un
ordenador: CPU,
Memoria y Unidades
de E/S, es decir, se
trata de un
computador completo
en un solo circuito
integrado.
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. EL ENTORNO DE DESARROLLO PARA
MICROCHIP
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.
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
• 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.
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.
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 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.
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
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.
• Repertorio de instrucciones
• Temporizadores, Puertos de E/S y manejo de datos
• Interrupciones
1.4. DISEÑO DE APLICACIONES CON PIC
(LENGUAJE ENSAMBLADOR)
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
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
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
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 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.
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
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.
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.
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.
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)
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.
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.
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: 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
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).
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: 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)
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
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
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.
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.
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.
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.
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 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.
¿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.
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.
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
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
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 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.
HIDBOOTLOADER SOFTWARE
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
70
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
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
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
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.
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
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
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)
{
;
}
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()
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 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 */
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, 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.
• 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
• 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
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. Por medio de comandos del C18
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:
• #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>);
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
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
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.
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.
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.
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)
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.
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ñ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.
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
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.
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 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.
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 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).
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 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,…)
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 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.
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
control de potencia en DC
1.6. CONVERTIDORES DE DATOS Y
APLICACIONES BÁSICAS
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.
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 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.
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.
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).
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>
• 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
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
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
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
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
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
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
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
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
• SE ADELANTA EL TEMA DEL CAPITULO 3 POR
ASI REQUERIRLO LA APLICACIÓN PRACTICA.
3.2. COMUNICACIÓN SERIAL DE DATOS
MICROCONTROLADOR – PC
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
INTERFAZ
136
M.C. ANDRÉS GERARDO FUENTES
COVARRUBIAS
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
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
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
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
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
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
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
DUDAS Y PREGUNTAS:
• fuentesg@ucol.mx
• fuentesg85@hotmail.com
• fuentesg@gmail.com
• FACEBOOK: /Andres.FuentesCovarrubias

Mais conteúdo relacionado

Mais procurados

Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Alejandro Garcia
 
02.Arquitectura de los microcontroladores pic
02.Arquitectura de los microcontroladores pic02.Arquitectura de los microcontroladores pic
02.Arquitectura de los microcontroladores picJonathan Ruiz de Garibay
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladoresceiv
 
Programación de AVR
Programación de AVRProgramación de AVR
Programación de AVRJuan Corleone
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresDidier Tec
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVRabemen
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84guestf09168b
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4Luis Zurita
 
Sistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picSistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picRoberto Di Giacomo
 
Module 2 ARM CORTEX M3 Instruction Set and Programming
Module 2 ARM CORTEX M3 Instruction Set and ProgrammingModule 2 ARM CORTEX M3 Instruction Set and Programming
Module 2 ARM CORTEX M3 Instruction Set and ProgrammingAmogha Bandrikalli
 
Modulacion Digital de Señales Analogicas
Modulacion Digital de Señales AnalogicasModulacion Digital de Señales Analogicas
Modulacion Digital de Señales AnalogicasCarlos Toth
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesLuis Zurita
 

Mais procurados (20)

Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2
 
02.Arquitectura de los microcontroladores pic
02.Arquitectura de los microcontroladores pic02.Arquitectura de los microcontroladores pic
02.Arquitectura de los microcontroladores pic
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladores
 
Programación de AVR
Programación de AVRProgramación de AVR
Programación de AVR
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
Atmega
AtmegaAtmega
Atmega
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladores
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVR
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
 
Sistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picSistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador pic
 
Module 2 ARM CORTEX M3 Instruction Set and Programming
Module 2 ARM CORTEX M3 Instruction Set and ProgrammingModule 2 ARM CORTEX M3 Instruction Set and Programming
Module 2 ARM CORTEX M3 Instruction Set and Programming
 
Computadores RISC
Computadores RISCComputadores RISC
Computadores RISC
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
Sistemas Microprocesados I
Sistemas Microprocesados ISistemas Microprocesados I
Sistemas Microprocesados I
 
Modulacion Digital de Señales Analogicas
Modulacion Digital de Señales AnalogicasModulacion Digital de Señales Analogicas
Modulacion Digital de Señales Analogicas
 
curso de plc
curso de plccurso de plc
curso de plc
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 

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

Semelhante a C++ para microcontroladores y aplicación práctica (20)

Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
El microcontrolador PIC16F877
El microcontrolador PIC16F877El microcontrolador PIC16F877
El microcontrolador PIC16F877
 
Libro basico pic
Libro basico picLibro basico pic
Libro basico pic
 
MICROCONTROLADORES.ppt
MICROCONTROLADORES.pptMICROCONTROLADORES.ppt
MICROCONTROLADORES.ppt
 
Introducción
IntroducciónIntroducción
Introducción
 
Introducción
IntroducciónIntroducción
Introducción
 
Clase arquitectura
Clase arquitecturaClase arquitectura
Clase arquitectura
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladores
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladores
 
Datasheet
DatasheetDatasheet
Datasheet
 
18 f4550 2
18 f4550 218 f4550 2
18 f4550 2
 
18 f4550 2
18 f4550 218 f4550 2
18 f4550 2
 
Microcontroladores PIC USS
Microcontroladores PIC  USSMicrocontroladores PIC  USS
Microcontroladores PIC USS
 
Apunte de microprocesadores pic
Apunte de microprocesadores picApunte de microprocesadores pic
Apunte de microprocesadores pic
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacion
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacion
 
Microcomputadoras
MicrocomputadorasMicrocomputadoras
Microcomputadoras
 
Electronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACHElectronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACH
 
Curso basico de pic 16 f877
Curso basico de pic 16 f877Curso basico de pic 16 f877
Curso basico de pic 16 f877
 

Último

SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONALMiNeyi1
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdfValeriaCorrea29
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOBRIGIDATELLOLEONARDO
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 

Último (20)

Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 

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

  • 1. UNIDAD 1. Microcontroladores Programables SISTEMAS EMBEBIDOS Y CONTROL POR: M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  • 2. ¿QUE ES UN PROCESADOR? M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 2 1.1. Conceptos básicos sobre microcontroladores
  • 3. ¿DONDE ESTÁN LOS PROCESADORES? M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 3
  • 4. ¿QUE ES UN MICROCONTROLADOR? M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 4
  • 6. HARDWARE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 6
  • 7. APLICACIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 7
  • 8. REPERTORIO DE INSTRUCCIÓN M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 8
  • 9. HARDWARE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 9
  • 10. HARDWARE DE UN MICROCONTROLADOR M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 10
  • 11. UNIDAD CENTRAL DE PROCESO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 11
  • 12. CPU (ESQUEMA) M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 12
  • 13. TAREAS DE UN CPU M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 13
  • 14. TAREAS DEL CPU CONT… M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 14
  • 15. TAREAS DE … M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 15
  • 16. TIPOS DE CPU M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 16
  • 17. SISTEMA DE MEMORIA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 17
  • 18. SISTEMA DE MEMORIA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 18
  • 19. LOS MICROCONTROLADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 19
  • 20. APLICACIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 20
  • 21. MICROCONTROLADORES COMUNES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 21 1.2. Los microcontroladores PIC y Atmel
  • 22. ESCALABILIDAD EN MICROCHIP M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 22
  • 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. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 24 Ciclo de vida de un software embebido
  • 25. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 25 Técnica de desarrollo del software embebido
  • 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. 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. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 28
  • 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. 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. MAPA DE MEMORIA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 31
  • 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. 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. 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. • Repertorio de instrucciones • Temporizadores, Puertos de E/S y manejo de datos • Interrupciones 1.4. DISEÑO DE APLICACIONES CON PIC (LENGUAJE ENSAMBLADOR)
  • 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. 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. 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. OPERACIONES ORIENTADAS AL BYTE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 39
  • 40. OPERACIONES ORIENTADAS AL BIT M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 40
  • 41. OPERACIONES DE CONTROL M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 41
  • 42. OPERACIONES CON LITERALES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 42
  • 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. 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. 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. 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. 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. 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. 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. 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. PUERTOS DE ENTRADA/SALIDA M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 51
  • 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. 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. REGISTRO ADCON1 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 54
  • 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. 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. 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. 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. 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. 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. 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. ARMADO DEL SISTEMA MÍNIMO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 62
  • 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. ¿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. 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. 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. 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. FORMATO DEL LINKER SCRIPT M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 68
  • 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. HIDBOOTLOADER SOFTWARE M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 70
  • 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. 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. 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. 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. 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. 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. 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. 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. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 79 • Asignación:
  • 80. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 80 • Aritméticos
  • 81. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 81 • Relacionales
  • 82. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 82 • Lógicos • De manejo de bits
  • 83. OPERADORES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 83 • Incremento, decremento y desplazamiento de bits
  • 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. EXPRESIONES M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 85
  • 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. • 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. • 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. EJEMPLO 1 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 89 • “Hola Mundo” con un simple led
  • 90. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 90
  • 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. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 92 MAPA DE E/S DEL PIC18F4550
  • 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. 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. 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. 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. 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. 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. 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. 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. EJEMPLO 2 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 101 • “Hola mundo” con LCD 16x2 alfanumérico
  • 102. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 102
  • 103. • Botones y Leds • Teclado de matriz • Display Led, Alfanumérico y Grafico 1.4. INTERCONEXIÓN DE PERIFÉRICOS
  • 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. 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. 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. TECLADO DE MATRIZ M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 107
  • 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. DISPLAY LED DE 7 SEGMENTOS M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 109 • Display Led:
  • 110. DISPLAY ALFANUMERICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 110
  • 111. DISPLAY ALFANUMERICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 111
  • 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. M.C. Andrés Gerardo Fuentes Covarrubias 113 LCD 16X2 • Juego de señales
  • 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. FUNCIONES RELACIONADAS CON EL LCD M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 115
  • 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. DISPLAY GRAFICO M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 117
  • 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. 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. CONVERTIDOR ANALÓGICO-DIGITAL M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 120
  • 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. 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. 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. M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS 124
  • 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 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 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 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 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. 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 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 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 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. • SE ADELANTA EL TEMA DEL CAPITULO 3 POR ASI REQUERIRLO LA APLICACIÓN PRACTICA. 3.2. COMUNICACIÓN SERIAL DE DATOS MICROCONTROLADOR – PC
  • 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. INTERFAZ 136 M.C. ANDRÉS GERARDO FUENTES COVARRUBIAS
  • 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. 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. 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. 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. 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 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 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 DUDAS Y PREGUNTAS: • fuentesg@ucol.mx • fuentesg85@hotmail.com • fuentesg@gmail.com • FACEBOOK: /Andres.FuentesCovarrubias