introducción a los microcontroladores - inicio · oferta de microcontroladores ... arquitectura...

56
MICROCONTROLADORES

Upload: trinhthu

Post on 09-May-2018

241 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MICROCONTROLADORES

Page 2: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MICROCONTROLADORES

Introducción

Arquitectura

Memoria

I/O Digital

Page 3: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

INTRODUCCIÓN

Uso de los microcontroladores

Microondas, Lavarropas, Televisores, ...

Automóviles, aviones, barcos

Teléfonos

Automatización industrial

Pequeños dispositivos ad-hoc

...

Page 4: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

INTRODUCCIÓN

Page 5: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

INTRODUCCIÓN

Oferta de Microcontroladores

Estructurada por “familias” y “subfamilias”.

Por ejemplo, cada familia tiene el mismo núcleo del

procesador (su código será compatible):

8051,PIC,HC,ARM

O son familias orientadas a la aplicación

O por performance (de diferente tipo)

Page 6: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

OFERTA DE MICROCONTROLADORES

Page 7: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

OFERTA DE MICROCONTROLADORES

Page 8: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ADVANCED RISC MACHINES

Fundada en 1990 (Antes ACOM)

“The world's leading semiconductor intellectual property

(IP) supplier”

“best MIPS to Watts - best MIPS to $ - smallest CPU die

size”

Los “socios” (hoy mas de 1000) compran las licencias de IP

y fabrican en base a ellas.

Diseñan procesadores y tecnologías relacionadas con ellos,

por ejemplo:

Procesadores

Conectividad para SoC

Procesadores Grficos

Software

Seguridad (para ARMs)

IoT

también fabrican algunas

cosas físicas . . .

Page 9: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

OFERTA DE MICROCONTROLADORES

Page 10: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

EJEMPLO DE IMPLEMENTADOR

Page 11: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

EJEMPLO FAMILIAS DE MCU NXP-ARM

Kit FRDM-KL46Z

Page 12: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ARQUITECTURA

Page 13: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ARQUITECTURA – EJEMPLO - AVR

Page 14: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ARQUITECTURA

IA

Page 15: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ARQUITECTURA: PROCESADOR

Page 16: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ARQUITECTURA

Von Neuman vs. Hardvard

CISC vs. RISC

Tamaño/variedad de las instrucciones

Velocidad: clock; 8/16/32 bits

Page 17: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ARM – CORTEX-M

Cortex-M

Arquitectura de

la Memoria

Arquitectura

ARM

Cortex-M0 Von Neumann ARMv6-M

Cortex-M0+ Von Neumann ARMv6-M

Cortex-M1 Von Neumann ARMv6-M

Cortex-M3 Harvard ARMv7-M

Cortex-M4 Harvard ARMv7E-M

Cortex-M7 Harvard ARMv7E-M

Page 18: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEMORIA

Registros (memoria de corto plazo):

Pequeña (relativamente)

Almacenamiento temporario p/CPU

Memoria de datos

Relativamente Grande

Almacena datos mientras el MCU funciona

También puede haber una memoria relativamente pequeña para almacenar datos en forma permanente (calibraciones)

Memoria de programa

Relativamente Grande

De preferencia, mantiene el programa incluso con el MCU apagado.

Page 19: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEMEORIAS

Page 20: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEMORIA: TIPO FÍSICOS

Page 21: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEMORIA

S/DRAM: sin limite de escrituras

EEPROM: 100.000 ciclos de borrado

Flash: 10.000 ciclos de borrado

Page 22: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

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 logica interna accede a la memoria que corresponde

No hay direcciones repetidas

Page 23: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEMORIA: DIRECCIONAMIENTO

Separado

Page 24: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEMORIA: DIRECCIONAMIENTO

Continuo

Page 25: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ENTRADA/SALIDA DIGITAL

Page 26: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ENTRADA/SALIDA DIGITAL

Page 27: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

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.

Page 28: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

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

Page 29: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL I/O

Los pines se controlan mediante 2 o 3 registros, como mínimo. Conceptual y 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

La forma de nombrar los registros cambia con el fabricante

Page 30: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL I/O

PORT Register: de preferencia debe

escribirse con operaciones de escritura de

bit, si estan disponibles

Caso contrario usar : Read-Modify-Write

con cuidado.

Page 31: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL OUTPUT

Apenas el DDR setea un pin como salida, el MCU

excita el pin de acuerdo al contenido del registro

PORT correspondiente.

Cuidado con los cortocircuitos

Orden de seteo de DDR y PORT

Page 32: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL INPUT

Pueden existir en los pines resistencias de pull-

up/down: puede (debe) programarse su

conexión/desconexión mediante algun registro al

efecto.

Page 33: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL I/O (del manual de referencia del un MCU NXP-HS08 de 8 bits)

Registros para el port B (solo dos registros)

(del manual de referencia del MCU)

Page 34: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL I/O Archivo header

correspondiente a un NXP-HS08

Page 35: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL I/O

(del manual de referencia del MCU)

NXP - KL46Z

Registros para el port B (seis registros)

Page 36: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL I/O Archivo header correspondiente a

un NXP-KL46Z

Page 37: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL I/O

GPIOB_PDDR =0x0080; // initialize PTB7 as output

// mejor: GPIOB_PDDR | = (1 << 7);

GPIOB_PCOR= 0xFFFF; // initialize PTB7 to 0

// mejor: GPIOB_PCOR | = (1<<7)

GPIOB_PTOR |= (1 << 7); // invert the output (¿Por qué el ‘OR’ está de mas en estos dos últimos casos?)

0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

Ejemplo:

bit 7 bit 0

NXP KL46Z

Page 38: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

DIGITAL I/O: OTROS REGISTROS RELACIONADOS

Pin Control Register n (PORTx_PCRn):

define Interrupt Status Flag and Clear -Interrupt configuration - Pin function (multiplexer) - Driver strength - Filter control - Slew rate – Pull up/down resistor

System Integration Module => System Clock Gating Control Registers:

habilita el uso del clock en los puertos

FREESCALE KL46Z

Page 39: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

KIT FRDM-KL46Z

Page 40: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

KIT FRDM-KL46Z MCU: MKL46Z256VLLZ4

Dual role USB interface with mini-B USB connector

4 digit segment LCD module

Capacitive touch slider

Ambient light sensor

MMA8451Q accelerometer

MAG3110 Magnetometer

2 user LEDs

2 user push buttons

Flexible power supply options – USB, coin cell battery, external source

Battery-ready, power-measurement access points

Easy access to MCU I/O via Arduino ™ R3 compatible I/O connectors

Programmable OpenSDA debug interface with multiple applications available

including:

Mass storage device flash programming interface

P&E Debug interface provides run-control debugging and compatibility with IDE tools

CMSIS-DAP interface: new ARM standard for embedded debug interface

Page 41: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

KIT FRDM-KL46Z

Page 42: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

PROGRAMACIÓN DEL MCU: VÍA OPENSDA

KL46Z PC

Page 43: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

PRIMER PROGRAMA: GPIO => USAR LEDS Y PULSADORES DEL KIT

1. Ver esquemático del kit: identificar pines

2. Ver manual de referencia del MCU

1. Identificar pines y puertos conectados con los leds y pulsadores

2. Ver necesidades de inicialización

1. Module Multiplexer (PINOUT - Pin Control Register)

2. System Clock Gating Control

3. Cargar la aplicación DEBUG-APP_Pemicro_vXXX.SDA como

aplicación a ejecutar por OpenSDA.

4. Correr Eclipse/Codewarrior

5. Hacer un programa mínimo

6. Debugging

Page 44: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

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

Page 45: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MAQUINAS DE ESTADO FINITO EN C/C++

(MEF/FSM)

Formalmente:

d

e

c

b

Inicialización

Evento/señal/Condición

a

Estado 1

Estado 2 Estado 3

tupla ⟨ E, Σ, A ⊆ E×Σ×E,sk ⟩, donde

E = {E1, E2 , ,..., En} es un conjunto finito de nodos.

Σ : es un alfabeto finito de etiquetas.

A : es un conjunto finito de aristas etiquetadas que unen nodos.

sk ∈ S: es el estado inicial.

⟨ S = {1,2,3},

Σ = {a, b, c},

A ={(1,b,2),(2,c,1),(2,d,3),(3,e,2),(3,a,1)},

sk =1 ⟩

Page 46: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MAQUINAS DE ESTADO FINITO EN C/C++

(MEF/FSM)

Implementación de la máquina de

estados

Inspección del hardware (interno u

externo)para detectar eventos

Implementación de la máquina de

estados

Interrupción hardware (interno u externo)

Handler

Polling Interrupciones

Uso de :

Page 47: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MAQUINAS DE ESTADO FINITO EN C/C++

(MEF/FSM)

Tipos de implementación en C y C++

Con instrucciones “switch” anidadas

Basadas en una matriz estado-transición

Similar a la anterior pero con punteros a funciones

Multi-thread FSM

Uso de estados extendidos

Todas las opciones anteriores orientadas a objeto en

C++

Page 48: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEF CON SWITCH ANIDADOS

Un nivel de decisión superior (SWITCH externo) referido al estado de

la máquina

Un nivel de decisión inferior (SWITCH interno) referido a las señales,

eventos o condiciones que tienen significancia en ese estado

Con pocas señales el switch interno suele reemplazarse con por IF(s)

A veces se invierte la jerarquía (modelo por eventos => Petri)

Los estados suelen ser enumeraciones

Implementado:

Directamente en el main (totalmente o como una parte de él)

Haciendo uso de una función (“dispatcher”), donde se implementa

Page 49: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEF CON SWITCH ANIDADOS Modelo:

Proximo_Estado= Estado_Actual; switch ( Estado_Actual) { case EST_1: //aqui van acciones dentro del estado 1 switch (evento ) { //solo eventos que cambian este estado case EVEN_1: Proximo_estado = EST_x; // aquí pueden ir acciones asociadas al evento para este cambio de estado break; case EVEN_4: Proximo_estado = EST_y; // aquí pueden ir acciones asociadas el evento para este cambio de estado break;

. . . } break;

(continua en la siguiente diapositiva)

Page 50: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEF CON SWITCH ANIDADOS (viene de la anterior diapositiva)

case EST_n: //aqui van acciones dentro del estado n switch (evento ) { //solo eventos que cambian este estado case EVEN_3: Proximo_estado = EST_x; // aquí pueden ir acciones asociadas al evento para este cambio de estado break;

. . . } break; } if (Estado_actual!=Proximo_estado){ // solo en caso de utilidad particular //aciones para todo cambio de estado funcion_salida(Estado_actual); // solo en caso de utilidad particular funcion_entrada(Próximo_estado); // solo en caso de utilidad particular Estado_actual=Proximo_estado; }

Page 51: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEF CON SWITCH ANIDADOS

Simple

Poco uso de RAM

Tiempo de respuesta variable (aumenta con el numero de casos)

Implementación no jerárquica

El código no es reusable

Compleja cuando los estados y las señales aumentan

Page 52: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MEF CON SWITCH ANIDADOS

void dispatch(unsigned const evento) { switch(estado) { case EST_1: ProcesarEst1(evento); break; case STATE_2: ProcesarEst2(evento); break; ... }

Una variante (de muchas):

Page 53: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

ALTERNATIVA: MATRIZ DE TRANSICIONES Señal 1 Señal 2 Señal 3 Señal4

Estado X Accion X(), Estado_Y

Estado Y AccionY(), Estado_A

Estado A Accion A(), Estado_Q Accion B(), Estado_A AccionC (), Estado_A

Estado Q Accion Q(), Estado_X

Representación directa de la MEF

Tiempo de respuesta constante y mas rápido

Mayor posibilidad de reusar el código con menos cambios

Pero la tabla puede ser muy grande y con desperdicios de celdas (pero puede

mandarse a la flash/rom)

Se puede pasar a un esquema mas económico usando un par de vectores

La inicialización puede ser complicada

(Curiosidad: si las acciones son la misma en toda la línea=> Moore; si pueden variar=>Mealy)

Page 54: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

EJEMPLO:

int func_S1(void); int func_S2(void); int func_S3(void); enum codigo_estados { S1, S2, S3}; enum codigo_eventos {a, b, c, d, e, nada}; struct transicion { int (*funcion_estado)(void); enum codigo_estados proximo; }; struct transicion tabla_estado_evento [3][6]={ {{func_S1,S1},{func_S1,S2},{func_S1,S1},{func_S1,S1},{func_S1,S1},{func_S1,S1}}, {{func_S2,S2},{func_S2,S2},{func_S2,S1},{func_S2,S3},{func_S2,S2},{func_S2,S2}}, {{func_S3,S1},{func_S3,S3},{func_S3,S3},{func_S3,S3},{func_S3,S2},{func_S3,S3}} };

d

e

c

b

Inicialización

Evento/señal/Condición

a

Estado 1

Estado 2 Estado 3

Page 55: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

EJEMPLO: void dispatcher(enum codigo_estados, enum codigo_eventos); enum codigo_estados estado_actual=S1; enum codigo_eventos evento_actual=nada; main() { int (* accion)(void); for (;;) { dispatcher(estado_actual,evento_actual); } return 0; } void dispatcher(enum codigo_estados, enum codigo_eventos){ int (*funcion)(void); funcion=tabla_estado_evento[estado_actual][evento_actual].funcion_estado; funcion(); estado_actual=tabla_estado_evento[estado_actual][evento_actual].proximo; }

Page 56: Introducción a los Microcontroladores - Inicio · Oferta de Microcontroladores ... ARQUITECTURA – EJEMPLO - AVR . ARQUITECTURA IA . ARQUITECTURA: PROCESADOR . ARQUITECTURA

MAQUINAS DE ESTADO FINITO EN C/C++

(MEF/FSM)

Ejemplo: los leds titilan alternativamente sólo cuando está el pulsador accionado

Tiempo X

Tiempo X

PulsadorLiberado

Pulsadorapretado

Inicialización

PulsadorLiberado

Leds Apagados

Led Verde Encendido – Rojo Apagado

Led Rojo Encendido – Verde Apagado