![Page 1: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/1.jpg)
SISTEMAS DIGITALES 1UNIDAD 4:
MICROCONTROLADORES
![Page 2: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/2.jpg)
Temas tratados• Introducción
• Arquitectura de un microcontrolador. Procesador. Memorias. Reloj. Módulos de entrada y salida digital (repaso).
• Implementación de Redes de Petri en lenguaje C
• Interrupciones. Diseño de la aplicación. Programación en modo encuesta y por interrupciones. Administración de las interrupciones. Criterios de diseño.
• Conversión analógica-digital. Métodos de conversión. Multiplexado de canales. Conversión digital-analógica.
• Temporizadores. Fuentes de reloj. Pre-escalado y resolución. Funciones de captura y salida automática. Modulación de ancho de pulso.
![Page 3: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/3.jpg)
IntroducciónEjemplo. Se quiere implementar un controlador para:
Leer periódicamente una temperatura y a partir de ella prender y apagar un calefactor, mostrando en un display la temperatura actual. La temperatura debe poder ajustarse. La funcionalidad debe poder cambiarse.
¿Posibles implementaciones para el controlador?
REPASO
![Page 4: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/4.jpg)
Introducción
Un implementación programada con diseño discreto requería:•Un microprocesador•20 líneas de I/O (2 chips de 16 c/u)•1 Interfaz serie (1 chip)•1 Timer (1 chip)•Memoria SRAM (para variables)•Memoria Flash (para programa)•Memoria EEPROM (para constantes)
REPASO
![Page 5: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/5.jpg)
Introducción
Diseño
discreto.
REPASO
![Page 6: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/6.jpg)
Introducción
Diseño
Integrado.
ATmega16 (atmel)
REPASO
![Page 7: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/7.jpg)
Introducción
Uso de los microcontroladores•Microondas, Lavarropas, Televisores, ...•Automóviles, aviones, barcos•Teléfonos•Automatización industrial•Pequeños dispositivos ad-hoc•...
REPASO
![Page 8: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/8.jpg)
•Cada fabricante tiene una oferta estructurada por “familias” y “subfamilias”.
•Cada familia tiene el mismo núcleo del procesador (o al menos con compatibilidad de código). El diseño del procesador puede ser propio o de terceros (caso ARM).
•Pueden ser familias orientadas a la aplicación
•O por performance (de diferente tipo)
REPASO
INTRODUCCIÓN
![Page 9: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/9.jpg)
REPASOEjemplo: oferta NXP de microcontroladores
Distintas familias:
• Basados en arquitecturas ARM (varias sub familias)
• Basados en Power Architecture ®
• Basados en arquitecturas Coldfire de 32 bits
• Basados en arquitecturas S12, HC08, HCS08, 80C51, etc. de 8 y 16 bits
• Con inclusión de procesadores de señal en el chip (DSC)
• De aplicación muy específica (encriptado, wireless, etc.)
![Page 10: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/10.jpg)
Selección de microcontroladores
![Page 11: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/11.jpg)
Selección de microcontroladores
![Page 12: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/12.jpg)
Selección de microcontroladores
![Page 13: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/13.jpg)
Selección de microcontroladores
![Page 14: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/14.jpg)
SELECCIÓN DE MICROCONTROLADORES
![Page 15: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/15.jpg)
kit FRDM-KL46Z
• MCU: Familia KL46
![Page 16: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/16.jpg)
Arquitectura
REPASO
![Page 17: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/17.jpg)
MemoriaS en el MCU•Registros (memoria de corto plazo):
• Pequeña (relativamente)• Almacenamiento temporario p/CPU
•Memoria de datos• Relativamente Grande• Almacena datos mientras el MCU funciona
•Memoria de programa• Relativamente Grande• De preferencia, mantiene el programa incluso con el
MCU apagado.
REPASO
![Page 18: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/18.jpg)
Memoria: Tipo físicos
REPASO
![Page 19: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/19.jpg)
Memoria
•S/DRAM: sin limite de escrituras
•EEPROM: 100.000 ciclos de borrado
•Flash: 10.000 ciclos de borrado
REPASO
![Page 20: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/20.jpg)
Memoria: Direccionamiento
•Separado:•Cada tipo físico se direcciona por separado (por
ejemplo, usando diferentes registros índices)•Hay direcciones repetidas
•Contínuo:•Se accede siempre igual y la lógica interna accede a
la memoria que corresponde•No hay direcciones repetidas
REPASO
![Page 21: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/21.jpg)
Memoria: Direccionamiento
•Separado
REPASO
![Page 22: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/22.jpg)
Memoria: Direccionamiento
•Continuo
REPASO
![Page 23: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/23.jpg)
Memoria: uso
![Page 24: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/24.jpg)
Memoria: uso
![Page 25: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/25.jpg)
Memoria: uso
![Page 26: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/26.jpg)
Memoria: stack (low->high)
![Page 27: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/27.jpg)
Arquitectura
•CISC vs. RISC
•Von Neuman vs. Harvard
•Tamaño/variedad de las instrucciones
•8/16/32 bits
REPASO
Algunos conceptos básicos:
![Page 28: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/28.jpg)
Arquitectura
Arquitectura Von Neuman
REPASO
Algunos conceptos básicos:
Procesador(CPU)
Bus de Direcciones
Memoria de Datos y Programa
(RAM)
Bus de Datos
Memoria de Programa(ROM)
Procesador(CPU)
Bus de Direcciones
Memoria de Datos(RAM)
Bus de Datos
![Page 29: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/29.jpg)
Arquitectura
Arquitectura Harvard
REPASO
Algunos conceptos básicos:
Procesador(CPU)
Memoria de Datos(RAM)
Bus de Direcciones
Memoria de Programa(ROM)
Bus de direcciones
Bus de Datos (Instrucciones)
Bus de Datos (datos)
![Page 30: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/30.jpg)
Arquitectura
Ejemplo: ARM Cortex M4 Harvard 32 bits (simplificado)
Debugging
Alta velocidad
![Page 31: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/31.jpg)
Arquitectura: Procesador• Tamaño/variedad de las instrucciones
• 8/16/32 bits
REPASO
![Page 32: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/32.jpg)
Tamaño/variedad de las instrucciones
8/16/32 bits
![Page 33: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/33.jpg)
Evolucion del mercado
![Page 34: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/34.jpg)
Arquitectura: Procesador• Tamaño/variedad de las instrucciones
• 8/16/32 bits
REPASO
![Page 35: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/35.jpg)
Ejemplo: registros en arquitectura ARMv6m
![Page 36: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/36.jpg)
EJEMPLO: del manual de referencia de arquitectura ARMv6-M
![Page 37: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/37.jpg)
Arquitectura: Procesador
Sobre las instruccionesPor stack
Por acumulador
Dos direcciones
Tres direcciones (A+B)*C
![Page 38: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/38.jpg)
Arquitectura: Procesador
Modos de direccionamiento
![Page 39: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/39.jpg)
Ejemplo: registros e instrucciones en arquitectura ARMv6m
•Veamos un programa corriendo . . .
![Page 40: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/40.jpg)
Fuentes de reloj en los MCU
• Los diferentes módulos que componen el microcontrolador requieren diferentes relojes para su operación.
• En general, existe un módulo generador de reloj SCG (SystemClock Generator) ó MCG (Multipurpose Clock Generator) que provee las diferentes señales necesarias.
• Como cualquier módulo, las frecuencias que produce el SCG pueden ser programadas/seleccionadas mediante el seteo de registros.
• Sin embargo, el cambio de frecuencias puede requerir un proceso que involucra varias etapas mas que el simple cambio de valores en un registro.
![Page 41: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/41.jpg)
Fuentes de reloj en los MCU• Ejemplo: distribución de señales de reloj en el MCU MCF51AC256
![Page 42: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/42.jpg)
Fuentes de reloj en los MCU• Ejemplo: generación de señales de reloj en el MCU KL46Z
![Page 43: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/43.jpg)
Fuentes de reloj en los MCU
Ver valores luego de un reset
![Page 44: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/44.jpg)
Modos/estados de operacion
• Los MCU pueden ponerse en diferentes estados de operación acorde a las necesidades de la aplicación.
• Normalmente los estados están relacionados con el consumo de energía
• Ejemplo: (MC9S08JM60) • RUN MODE: modo normal de ejecución; todos los relojes y módulos
funcionando
• Active Background Mode: modo de depuración “on-chip”
• WAIT MODE: el CPU se detiene y vuelve al trabajo con una interrupción
• 3 STOP modes: en estos modos, diferentes relojes (módulos) son “apagados”; normalmente se mantienen los valores de registros, RAM y pines de I/O
![Page 45: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/45.jpg)
Entrada/Salida digital
REPASO
![Page 46: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/46.jpg)
Digital I/O
• Implementadas por pines de conexión directa al exterior:• Se agrupan en “ports” de a 8 / 32 pines.• En general, los pines se pueden configurar como entrada
o salida• La lógica puede ser positiva o negativa.• Los pines pueden tener (generalmente tienen) otras
funciones alternativas.
REPASO
![Page 47: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/47.jpg)
Digital I/O•pin 1 del port B•Módulo de Interrupción 1 - entrada 5•Pin Tx de puerto serie
•Conversor AD canal 5
REPASO
![Page 48: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/48.jpg)
Digital I/O
• Los pines se controlan mediante 2 o 3 registros, como mínimo. Funcionalmente:• Data Direction Register (DDR): hay uno por cada puerto y
cada bit determina la dirección de un pin.• Port Register (PORT): uno por cada puerto y cada bit
controla el estado del puerto (si es de salida)• Port Input Register (PIN): uno por cada puerto y cada bit
da el estado de su respectivo pin
REPASO
![Page 49: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/49.jpg)
Digital I/O
(del manual de referencia del MCU)
REPASO
Solo dos registros
![Page 50: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/50.jpg)
Digital I/O
REPASO
![Page 51: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/51.jpg)
Digital I/O
PTBDD = 0x80; // initialize PTB7 as output
PTBD = 0; // initialize PTB to 0
PTBD_PTBD7 = ~PTBD_PTBD7; // invert the output
1 0 0 0 0 0 0 0
Ejemplo:bit 7 bit 0
REPASO
![Page 52: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/52.jpg)
Digital I/O
(del manual de referencia del MCU)
6 Registros para el port BFREESCALE KL46Z
REPASO
![Page 53: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/53.jpg)
Digital I/O
GPIOB_PDDR | = (1 << 7); // KDS - PTB7 as output
PTB->PDDR | = (1 << 7); // MCUexpresso;
GPIOB_PCOR | = (1<<7); // KDS - PTB7 to 0
PTB->PCOR | = (1<<7)// MCUexpresso;
GPIOB_PTOR |= (1 << 7); //KDS - invert the output
PTB->PTOR |= (1 << 7); MCUexpresso;
. . . 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
Ejemplo:
bit 7 bit 0FREESCALE KL46Z
REPASO
![Page 54: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/54.jpg)
Digital I/O:
Otros registros relacionados:•Pin Control Register n (PORTx_PCRn):
define Interrupt Status Flag and Clear -Interruptconfiguration - Pin function (multiplexer) - Driver strength - Filter control - Slew rate - Pullup/down resistor
•System Integration Module => System Clock Gating Control Registers:
habilita el uso del clock en los puertos
FREESCALE KL46Z
REPASO
![Page 55: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/55.jpg)
Digital I/O:
REPASO
![Page 56: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/56.jpg)
Digital I/O
•PORT DATA (Output) Register: de preferencia debe escribirse con operaciones de escritura de bit, si están disponibles
•Caso contrario usar : Read-Modify-Write con cuidado.
REPASO
![Page 57: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/57.jpg)
Digital Input
•Cancelación de ruidos
•Resistencias de pull-up/down en las entradas: puede (debe) programarse su conexión/desconexión.
REPASO
![Page 58: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/58.jpg)
Digital Input• La entrada se muestrea con cada pulso (flanco
ascendente normalmente) del clock, lo que ocasiona “metaestabilidad”:
![Page 59: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/59.jpg)
Digital Input
•Normalmente incorporan un Schmitt-trigger.
•Para reducir la “metaestabilidad” se introducen “sincronizadores”
![Page 60: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/60.jpg)
Digital Output
•Apenas el DDR setea un pin como salida, el MCU excita el pin de acuerdo al contenido del registro PORT DATA (output) correspondiente.
•Cuidado con los cortocircuitos
•Orden de seteo de DDR y PORT
REPASO
![Page 61: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/61.jpg)
Maquinas de estado finito en c/c++(MEF/FSM)
• Maquina de estado finito:
d
e
c
b
Inicialización
Evento/señal/Condición
a
Estado 1
Estado 2 Estado 3
REPASO
![Page 62: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/62.jpg)
Uso de MEF en la implementacion de controladores digitales en C
Ventajas
• Modelo muy simple de plantear
• Provee una vista general, rápida y clara del Sistema modelado y sus estados conceptuales
• Si el problema modelado es simple o habitual, permite reutilizar código o estrategias y lograr una rápida implementación
Desventajas
• Muy bajo nivel de especificación: no muestra comportamientos del Sistema ocultos por el modelo
• El grado de sistematización en la implementación de la MEF es bajo: gran parte del trabajo implementación debe definirse (resolverse) en el código.
• Esta resolución es muchas veces mas compleja que la realización del modelo mismo.
• La falta de sistematicidad hace que la implementación no garantice el comportamiento del Sistema tal cual el modelo.
REPASO
![Page 63: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/63.jpg)
R
SW1
AR
SW1
V
A
SW2 . SW1
R/SW2
SW2 . SW1
L1
L2
L3 L4
L5 L6
T1
T4
T2
T3
Redes de petri en c/c++
• Dada una Red de Petri es posible implementarla en código C en forma sistemática.
• El modelo debe estar libre de conflictos
• Veremos dos metodologías. En ambas el código producido opera en 4 etapas:
1. Adquisición de las entradas2. Análisis de las transiciones: para
determinar aquellas sensibilizadas3. Evolución del marcado de la red4. Producción de las Salidas
• En los ejemplos que siguen se asume la existencia de macros SW1, SW2, etc. que operan sobre los pines que corresponden
![Page 64: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/64.jpg)
//Marcado inicialL1 = 1;L4 = 1;......for(;;){
//se adquieren las entradasEnt1 = SW1;Ent2 = SW2;......//se determina el estado de las transicionesT1 = L1 && Ent1;T2 = L2 && Ent2 && !Ent1;T3 = L3 && L4 && !Ent2 && Ent1;T4 = L5 && L6 && !Ent1;......
Implementacion de redes de petri en C• Método 1: desarrollo del código a partir de la inspección directa de la
red
R
SW1
AR
SW1
V
A
SW2 . SW1
R/SW2
SW2 . SW1
L1
L2
L3 L4
L5 L6
T1
T4
T2
T3
![Page 65: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/65.jpg)
Implementacion de redes de petri en C• Método 1: desarrollo del código a partir de la inspección directa de la
red//evolución de la red según las reglas de marcadoif (T1) {L1=0; L2=1;}if (T2) {L2=0; L5=1; L3=1;}if (T3) {L3=0; L4=0; L6=1;}if (T4) {L5=0; L6=0; L1=1; L4=1;}......//producción de las salidas (SETR = L1 || L3 && Ent2 || L5;A = L2 || L6;V = L4;......
}
R
SW1
AR
SW1
V
A
SW2 . SW1
R/SW2
SW2 . SW1
L1
L2
L3 L4
L5 L6
T1
T4
T2
T3
Pueden ir aquí otras acciones asociadas al franqueo de la transición
![Page 66: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/66.jpg)
Implementacion de redes de petri en C•Método 2: desarrollo por variables y con código único
R
SW1
AR
SW1
V
A
SW2 . SW1
R/SW2
SW2 . SW1
L1
L2
L3 L4
L5 L6
T1
T4
T2
T3
En este método el programa ejecutado es siempre el mismo con independencia del modelo
La red se define mediante la matriz de incidencia, un vector de marcado y funciones de entrada y salida (por ejemplo en un .h)
![Page 67: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/67.jpg)
Implementacion de redes de petri en C•Método 2: desarrollo por variables y con código único
R
SW1
AR
SW1
V
A
SW2 . SW1
R/SW2
SW2 . SW1
L1
L2
L3 L4
L5 L6
T1
T4
T2
T3
Archivo Petri.h
![Page 68: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/68.jpg)
Implementacion de redes de petri en C•Método 2: desarrollo por variables y con código único
R
SW1
AR
SW1
V
A
SW2 . SW1
R/SW2
SW2 . SW1
L1
L2
L3 L4
L5 L6
T1
T4
T2
T3
Archivo Petri.h
![Page 69: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/69.jpg)
Implementacion de redes de petri en C• Método 2: desarrollo por variables y con código único
R
SW1
AR
SW1
V
A
SW2 . SW1
R/SW2
SW2 . SW1
L1
L2
L3 L4
L5 L6
T1
T4
T2
T3
En el main() el código es siempre el mismo:
![Page 70: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/70.jpg)
Implementacion de redes de petri en C•Comparación entre los métodos
▪ El método 1 es mas simple cuando el modelo es simple.
▪ El método 2 es mas estructurado y fácilmente escalables a modelos complejos
▪ Ambos pueden adaptarse para pasar de un esquema de polling a uno por interrupciones. El método 2 es mas eficiente en este caso.
▪ El método 2 permite cambiar modelos simplemente cambiando headersen un mismo proyecto: un proyecto -> muchas soluciones
▪ El método 2 puede ser adaptado para resolver y funcionar con redes que presenten conflictos, facilitando la realización del modelo
▪ Ambos pueden adaptarse muy sencillamente para trabajar con redes no binarias.
![Page 71: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/71.jpg)
Redes de petri versus MEF en la implementación de controladores digitales en C
Ventajas
• El modelo bajo Redes de Petri es exhaustivo (sirve como especificación)
• Permite una implementación sistemática
• Las metodologías de implementación garantizan el comportamiento según el modelo
• Posibilidad de generación automática del código
Desventajas
• El modelo es mas complejo que con MEF
![Page 72: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/72.jpg)
interrupciones
![Page 73: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/73.jpg)
Interrupciones
• Un programa sin uso de interrupiones (polling):
¿inconvenientes?
Procesar
Producir
salidas
. . .
do_init();
. . .
for (;;) {
do_inputs();
do_some_process();
set_outputs()
}
Inicializa-
ciones
Leer
entradas
![Page 74: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/74.jpg)
Interrupciones
• Con interrupciones:
![Page 75: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/75.jpg)
Interrupciones
• Con interrupciones:
![Page 76: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/76.jpg)
Interrupciones
• Con interrupciones:
Pueden no existir
Procesar
Producir
salidas
. . .
do_init();
. . .
interrupts_on;
for (;;) {
do_some_process();
set_outputs()
}
Atender
evento 1
Atender
evento 2
Atender
evento n. . .
Inicializa-
ciones
![Page 77: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/77.jpg)
Interrupciones
• Las interrupciones se generan cuando cambia un “estado”.
•Permiten la reacción ante eventos
•Restricciones de tiempo real
• Interrupt Service Routine (ISR)
![Page 78: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/78.jpg)
Interrupciones
• Polling vs. Interrupts
• Siempre hay que analizar la situación puntual, pero en general, usar interrupciones cuando:• Los eventos son infrecuentes• Hay mucho tiempo entre eventos • El cambio de estado es importante• Quiero detectar impulsos cortos• Hay eventos generados por hardware (no hay rebotes o picos)• Hay muy poco para hacer así que conviene estar en modo sleep
![Page 79: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/79.jpg)
Interrupciones
•Conviene “polear” cuando:• El operador es humano• No se requiere una temporización precisa• El estado es mas importante que el cambio• Los “impulsos” duran mucho• Hay ruido en la señal• Hay cosas para hacer en el main (pero no demasiado)
![Page 80: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/80.jpg)
Interrupciones
•Control de Interrupciones• Interrupt Enable (IE): bit que se setea para habilitar al
controlador que llame a la ISR cuando se produce el evento.
• Interrupt Flag (IF): lo setea el MCU cuando se produce el evento. Se limpia automática o manualmente.
• Interrupt mode (IM): mas de un bit para indicar si la interrupción se produce por flanco ascendente, descendente, , etc.
• Global Interrupt Enable.
![Page 81: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/81.jpg)
Interrupciones
•Control de Interrupciones• Inhabilitar las interrupciones no implica perder eventos.• Cuidado al limpiar la IF• Normal Interrupts and NMI
![Page 82: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/82.jpg)
Interrupciones
• Interrupt Vector Table: es una tabla donde se indica para cada interrupción en donde se encuentra la ISR que la atiende.
•Puede contener la dirección de la primera instrucción de la ISR respectiva o una instruciónjump (JSR) a la ISR (depende el MCU)
![Page 83: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/83.jpg)
MC
9S
08
QG
8
(Fre
esca
le)
![Page 84: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/84.jpg)
MC
9S
08
QG
8
(Fre
esca
le)
INTERRUPCIONES
![Page 85: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/85.jpg)
Interrupciones
•Prioridades: fijas o variables
•Dentro de una ISR se puede establecer cuales interrupciones se permiten (sin hacerlo “a mano” vía los IE)
•Cancelación de ruidos (por muestras múltiples)
•Eventos internos
![Page 86: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/86.jpg)
Interrupciones
• Pasos que ocurren ante una interrupción:1. MCU setea la IF (esté o no habilitada la interrupción)2. Se termina la instrucción en curso o si el MCU está en
estado “sleep”, se despierta.3. Se identifica la ISR considerando los IE y la
interrupcion de mas alta prioridad (si hay mas de un IF seteado).
4. Se llama a la ISR (... y ya pasó un tiempito)
![Page 87: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/87.jpg)
Ejemplo: Interrupcionespara el MKL46Z256VLL4
• NVIC
•Registros NVIC:• NVIC_ISER: set enable
• NVIC_ICER: clear enable
• NVIC_IPRn: prioridad
Ver: • Manual del referencia del KL46 (pag. 54)
• ARM architecture v6m reference manual (pag. 281)
•Registros PERIFERICOS
![Page 88: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/88.jpg)
Ejemplo: Interrupcionespara el MKL46Z256VLL4
![Page 89: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/89.jpg)
Ejemplo: Interrupcionespara el MKL46Z256VLL4
◼Ejemplo:
![Page 90: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/90.jpg)
Ejemplo: Interrupcionespara el MKL46Z256VLL4Ejemplo: interrupciones en entrada digital
◼Habilitar interrupciones del PIN: por ejemplo, para el Port C pin 3 por flanco ascendente (SW1 del kit)-> PORTC_PCR3, bits IRQC
◼Ubicar en NVIC el vector a utilizar de acuerdo a la necesidad: por ejemplo, para el Port C es el vector 47
◼Ubicar para ese vector el puntero a la ISR (nombre de la función ISR): PORTCD_IRQHandler(). Aquí se pone el código que atiende el evento
◼Ubicar para el vector 47 el numero de IRQ y IPR: 31 y 7 respectivamente
◼Determinar los bits del NVIC_IPRn a configurar: NVIC_IPR7 bits PRI_N3 (puede dejarse por defecto en cero)
◼Habilitar las interrupciones con NVIC_ISER: la 31
(a partir de este paso el MCU empieza a reaccionar a los eventos)
![Page 91: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/91.jpg)
Ejemplo: Interrupcionespara el MKL46Z256VLL4◼En definitiva:
![Page 92: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/92.jpg)
Entrada/Salida analogica
![Page 93: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/93.jpg)
Analog I/O
•Conversión DIGITAL a ANALOGICA:• Usando un modulador de ancho de pulso
![Page 94: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/94.jpg)
Conversión DIGITAL a ANALOGICA:
• Por redes del tipo R-2R. Para r bits sería:
REPASO
![Page 95: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/95.jpg)
Conversión DIGITAL a ANALOGICA:
• Por redes del tipo R-2R. Para r bits sería:
REPASO
![Page 96: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/96.jpg)
Conversión Analógica-Digital (CAD)
• Comparador: determina si V1 >V2 y arroja 1, ó 0 en caso contrario.
![Page 97: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/97.jpg)
Conversión Analógica-Digital (CAD)
• Conversión de valor
Involucra 3 pasos sucesivos:
![Page 98: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/98.jpg)
Conversión Analógica-Digital (CAD)
Codificación
Cu
antificació
n
Muestreo
![Page 99: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/99.jpg)
Conversión Analógica-Digital (CAD)
• El numero de bits en la codificación determina la resolución del conversor.
• Se puede muestrear a cualquier velocidad según la necesidad, pero si la aplicación requiere no perder información (ej: transmisión de video o audio) la velocidad de muestreo debe ser mayor o igual a dos veces la frecuencia máxima de la señal analógica (teorema de Nyquist-Shannon)
• Además, hay que tener en cuenta el tiempo que puede llevar la conversión.
• Y como la conversión lleva tiempo: para asegurar la estabilidad se usa una etapa de retención (sample-hold)
![Page 100: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/100.jpg)
Conversión Analógica-Digital (CAD)
• En la práctica el proceso es:
Filtro anti-aliasingMuestreo y Retención
Cuantificación y Codificación
Señal analógicax(t)
Limitación de ancho de banda
Varios métodos posibles
![Page 101: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/101.jpg)
Conversión Analógica-Digital (CAD)
Métodos mas comunes de Conversión Analógica-Digital:• Integrador de simple/doble rampa•Directa (flash)•Seguidor (Tracking)•Aproximaciones sucesivas•Sigma-Delta
![Page 102: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/102.jpg)
Conversión Analógica-Digital (CAD)
• Integrador de simple rampa
![Page 103: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/103.jpg)
Conversión Analógica-Digital (CAD)
• Integrador de doble rampa
![Page 104: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/104.jpg)
Conversión Analógica-Digital (CAD)
•Directa (flash): muy rápida (1 bit time); muy cara
Este método de conversión rápido es utilizado en algunos MCU y por lo general, no hay mas de 1 o 2 canales “rápidos”.
![Page 105: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/105.jpg)
Conversión Analógica-Digital (CAD)
•Seguidor (tracking): muy lenta (2r bit times) y variable; barata.
![Page 106: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/106.jpg)
Conversión Analógica-Digital (CAD)
•Aproximaciones sucesivas: velocidad media y fija en r+1
Este es el método mas utilizado en MCUs
![Page 107: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/107.jpg)
Conversión Analógica-Digital (CAD)
Sigma-Delta (∑Δ)• En vez de trabajar a la frecuencia de Nyquist, sobremuestrean.
• Esto disminuye el nivel de ruido de cuantificación permitiendo implementar conversores de 20 a 24 bits (con un diseño muy cuidado)
• Pero la frecuencia de datos final es baja: se usan para convertir señales que requieran gran rango dinámico y bajas frecuencias (ej: vibraciones de terremotos o adquisiciones precisas de baja tasa en la industria)
• Difícil encontrarlos dentro de un MCU
![Page 108: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/108.jpg)
Conversión Analógica-Digital (CAD)
![Page 109: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/109.jpg)
Conversión Analógica-Digital (CAD)
Modulador Sigma-Delta (∑Δ)
La señal digital obtenida queda conformada de manera que:Un “1” significa que ha habido un cambio positivo desde la última muestraUn “0” que ha habido un cambio negativo desde la última muestra
![Page 110: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/110.jpg)
Conversión Analógica-Digital (CAD)
Modulador Sigma-Delta (∑Δ)
![Page 111: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/111.jpg)
Conversión Analógica-Digital (CAD)
Modulador Sigma-Delta (∑Δ)
![Page 112: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/112.jpg)
Conversión Analógica-Digital (CAD)
Sigma-Delta (∑Δ)
Señal analógicax(t)
+Modulador ∑Δ de 1er orden
Señal digitalY(n)
fs=6,4 Mhz(1bit)
Filtro de Decimación
Digitalfs/fd
Señal digitalx(n)
fd=100KHz(16 bits)
El filtro “decimador” promedia muestras de 1 bit a fs para obtener a fd muestras de mayor resolución.Por ejemplo (diezmado en un factor de 16): 1010010110001010 (16 muestras de 1 bit)Promedio=7/16 ≡ 0,4375=0111 (1 muestra de 4 bits)
![Page 113: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/113.jpg)
Conversión Analógica-Digital (CAD)
•Control del CAD
Habilitación
Tensión de Referencia
Entrada Salida (registro)
Conversion Complete
Start Conversion
![Page 114: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/114.jpg)
Conversión Analógica-Digital (CAD)• Los MCU pueden tener varios CADs, con normalmente de 8 a
12 bits de precisión (KL46: 16 bits).
• Cada CAD puede atender hasta16 o más entradas (canales).
• Los canales se multiplexan (aumentan los tiempos).
• Autoincremento: al leer un canal, se pasa al siguiente y se efectúa un SC automáticamente.
• Existe el “modo contínuo” y de disparos sucesivos mediante el RTC
• Una conversión puede “dispararse” por eventos como un timer, una variación de una entrada digital o una señal externa.
![Page 115: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/115.jpg)
Ejemplo: cad en el MKL46Z256VLL4• Linear successive approximation algorithm with up to 16-bit resolution
• Up to four pairs of differential and 24 single-ended external analog inputs
• Output modes: differential 16-bit, 13-bit, 11-bit, and 9-bit modes / single-ended 16-bit, 12-bit, 10-bit, and 8-bit modes
• Output format in 2's complement 16-bit sign extended for differential modes
• Output in right-justified unsigned format for single-ended
• Single or continuous conversion
• Configurable sample time and conversion speed/power
• Conversion complete/hardware average complete flag and interrupt
• Input clock selectable from up to four sources
• Operation in low-power modes for lower noise
• Asynchronous clock source for lower noise operation with option to output the clock
• Selectable hardware conversion trigger with hardware channel select
• Automatic compare with interrupt for less-than, greater-than or equal-to, within range, or out-of-range, programmable value
• Temperature sensor
• Hardware average function
• Selectable voltage reference: external or alternate
• Self-Calibration mode
![Page 116: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/116.jpg)
Ejem
plo
: CA
D e
n e
l MK
L46
Z25
6V
LL4
![Page 117: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/117.jpg)
Ejemplo: cad en el MKL46Z256VLL4
(Ver pag. 471 del manual de referencia del KL46Z
![Page 118: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/118.jpg)
Ejemplo: cad en el MKL46Z256VLL4• Configurar el CAD (solo algunas posibilidades)
• Habilitar reloj para el módulo: SIM_SCGC6• Seleccionar el reloj y divisor:ADC0_CFG1• Seleccionar la resolución: ADC0_CFG1• Seleccionar el tiempo muestra: ADC0_CFG1y ADC0_CFG2• Seleccionar el modo de conversión: soft o hard, por demanda o continuo
:ADC0_SC2 y ADC0_SC3• Seleccionar referencias: ADC0_SC2• Seleccionar la forma: de adquisición diferencial o simple: ADC0_SC1• Seleccionar si se va a trabajar por interrupciones o polling: ADC0_SC1• Seleccionar el canal a adquirir (si es necesario): ADC0_SC1
• Adquisición• Disparar la conversión: ADC0_SC1• Ver si la conversión se completó: ADC0_SC1(polling) ó procesar la ISR
(interrupción)• Leer el valor: ADC0_RA
![Page 119: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/119.jpg)
Ejemplo: cad en el MKL46Z256VLL4
• En definitiva:
![Page 120: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/120.jpg)
TIMERS / PWM
![Page 121: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/121.jpg)
Timers
•Son contadores que suben o bajan con cada pulso de reloj.
•El valor actual se lee de un registro o se setea en el mismo.
•Cuidado al acceder a timers con longitud de registro mayor a la palabra del MCU
![Page 122: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/122.jpg)
Timers
• Los timers generalmente generan una interrupción cuando hacen overflow
•Esto sirve para generar señales o eventos periódicos (con acotada precisión)
•Pueden tener una señal de clock independiente del MCU. Con ella se incrementa la cuenta.
![Page 123: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/123.jpg)
Timers•Prescaler
• Es otro contador (de 8 o 10 bits) que trabaja contra el clock y produce una salida que es la que entra al timer.
TIMERPRESCALER
CLK
Se logra una extension de tiempos a medir por la división del prescaler. Ejemplo:
8 bit timer, clock de 1 Mhz -> cuenta máxima 255 uS con una resolución de 1 uS
8 bit timer, clock de 1 Mhz, prescaler en 1024 -> cuenta máxima 260 ms con una resolución de 1 ms.
![Page 124: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/124.jpg)
Timers• Otras fuentes de cuenta:
• Pulsos externos
• Cristal externo: generalmente de 32.768 KHz que implementa otro RTC independiente en el MCU
• Timestamp (input capture)• Puede setearse un evento para que automáticamente se copie el valor
del contador en un registro de captura. Ejemplo: cuando un comparador cambia o una entrada cambia, tomar la cuenta.
• Disparo de salida (output compare)• Se setea en el timer una cuenta y cuando se alcanza, automáticamente
se levanta una salida, o similar.
• Canales• Un timer puede manejar varios canales de ic, oc o pwm.
![Page 125: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/125.jpg)
Modulación de Ancho de Pulso (PWM)
•Es un timer que genera una señal periódica de salida con período y ciclo de trabajo configurables
![Page 126: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/126.jpg)
Modulación de Ancho de Pulso (PWM)
•Además de su uso como CDA, los PWM se usan para controlar ABS en autos, niveles de iluminación en LCDs, control de motores, etc.
![Page 127: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/127.jpg)
EJEMPLO: TimerS en el KL46
•2-channel periodic interrupt timer (PIT)
•Real time clock (RTC)
•Low-power timer (LPT)
•System tick timer (SysTick)
•One 6-channel TPM/PWM
•Two 2-channel TPM/PWM
![Page 128: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/128.jpg)
Ejemplo: timers en el KL46• Periodic Interrupt Timer (hay 2)
• Contadores de 32 bit que pueden ser encadenados (¡y contar con 64 bits!)• Generan una interrupción y un pulso al llegar a la cuenta• Muy simples de usar (ver ejemplo en pag. 596 del manual de referencia)
• RealTimeClock (RTC)• Con dos registros: 32 bits (segundos) y 16 bits (prescaler) que sube con cada
ciclo del oscilador de 32.768KHz)• Sigue trabajando en modo de bajo consumo y puede generar una interrupción
para salir de él o producir una alarma en determinado tiempo.• Tiene muy buenas capacidades de compensación (hasta 0.12 ppm)
• Low Power Timer• Temporizador o contador de pulsos de 16 bit• De bajo consumo y facil de usar
• SysTick• Estándar de ARM (ver pag. 275 de la ref. ARMv6M)• Muy simple: (sólo 4 registros), trabaja con el clock del procesador y cuenta en
24 bits
![Page 129: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/129.jpg)
Ejemplo: timers en el KL46• Módulos TPM en KL46
• 16 bits
• Reloj seleccionable: puede incrementarse con cada flanco del reloj asincrónico del módulo o en el flanco ascendente de un reloj externo (sincronizado con el asincrónico interno)
• Prescaler: programable para dividir por 1, 2, 4, 8, 16, 32, 64, or 128
• Modo de cuenta libre o con modulo
• Cuenta up o down
• 6 canales configurables para input capture, output compare, PWM
• Input capture: en flaco ascendente, descendente o ambos.
• Output compare: la salida se puede setear,(1) limpiar (0), invertir o generar un pulso
• Cada uno de los canales PWM pueden configurarse como “edge-aligned” o “center-aligned”
• Genera una interrupción o pedido de DMA por canal o por overflow
• Otras características . . .
![Page 130: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/130.jpg)
Timer/pwm(Modulo tpm en KL46)
![Page 131: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/131.jpg)
![Page 132: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/132.jpg)
Ejemplo: timers en el KL46• Ejemplo de uso del SysTick
• Ver si utilizar o no el valor de calibración para 10 ms (si existe)
• Setear el valor a contar: SYST_RVR
• Resetear el valor actual: SYST_CVR
• Habilita el timer indicando el reloj a utilizar y si se trabaja por interrupciones: SYST_CSR
• Atender la interrupción: SysTick_Handler()
![Page 133: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/133.jpg)
Ejemplo: timers en el KL46• En definitiva:
![Page 134: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/134.jpg)
Ejemplo: timers en el KL46• Ejemplo de uso del TPM
• Descripción de los registros• (pagina 566 y siguientes del manual de referencia del KL46)
• Pasos para configurar y usar TPM0 como temporizador general:1. SIM_SCGC6: habilitar el clock2. SIM_SOPT2: clock a utilizar para el TPM segun necesidad3. TPM0_SC: limpiar TOF, desabilitar el TPM, seleccionar el prescalado según
necesidad y habilitar o no la generacion de interrupciones por overflow segun se trabaje por polling o interrupciones.
4. TPM0_CNT: a cero.5. TPM0_MOD: con el valor necesario según necesidad.6. TPM_CONF: segun necesidad (normalmente CSOO y CSOT a cero)7. NVIC_ICPR y NVIC_ISER: si se trabajará por interrupciones8. void CMP0_IRQHandler(): definirla si se trabaja por interrupciones (el tratamiento
se hace aquí. Recordad grabar 1 en TOF )9. TMP0_SC: habilitar el timer10. Si se trabaja por polling, ver el estado de TOF en TMP0_SC y procesar segun
corresponda.
![Page 135: SISTEMAS DIGITALES 1 UNIDAD 4: MICROCONTROLADORES](https://reader030.vdocuments.pub/reader030/viewer/2022040709/624cb380d9babf77d55df928/html5/thumbnails/135.jpg)
Ejemplo: timers en el KL46•Ejemplo de uso del TPM