Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Optativa de 2 ciclo
Ingeniera Informtica
Ingeniera de Telecomunicacin
J os Luis Villarroel Salcedo
Departamento de Informtica e Ingeniera de Sistemas
Centro Politcnico Superior
Universidad de Zaragoza
NDICE
Introduccin 1
El 68HC08 40
El TMS320F2812 100
Herramientas de desarrollo 157
Gestin del tiempo 202
Sistemas discretos secuenciales 237
Sistemas muestreados 298
Procesos concurrentes 353
Ejecutivos cclicos 368
Prioridades e interrupciones 410
Ncleos multitarea 437
SISTEMAS EMPOTRADOS 1
SISTEMAS EMPOTRADOS
INTRODUCCIN
SISTEMAS EMPOTRADOS 2
DEFINICIN
Sistema de Tiempo Real: Es un sistema informtico en el que es
significativo el tiempo en el que se producen sus acciones.
No basta que las acciones de un sistema sean correctas, sino que,
adems, deben ocurrir dentro de un intervalo de tiempo determinado.
Los sistemas tiempo real suelen estar integrados en un sistema de
ingeniera ms general, en el que realizan funciones de control,
procesamiento y/o monitorizacin:
SISTEMAS EMPOTRADOS
(embedded systems)
Ejemplos: Vdeo, lavadora, ABS, , computadora de vuelo
SISTEMAS EMPOTRADOS 3
EJEMPLO
Computador
de un coche
Km/h
Km
Cont. Velocidad T
Hora
Computador
Control
Empotrado
Calefaccin
Aire
Acondicionado
Sistema Inyeccin
Pedales
Ruedas
SISTEMAS EMPOTRADOS 4
EJEMPLO
Varias tareas:
Control automtico de velocidad
Control climatizacin
Visualizacin:
velocidad
rpm
consumo
niveles
alarmas
...
Ordenes del conductor:
comienzo cont. velocidad
establecimiento temperatura
interior
puesta en hora
...
SISTEMAS EMPOTRADOS 5
CARACTERSTICAS
Concurrencia
Los componentes del sistema controlado o monitorizado funcionan
simultneamente
El sistema de control debe atenderlo y generar las acciones de control
o visualizacin de forma simultnea
Un computador ejecuta sus acciones de forma secuencial RAPIDEZ
se puede hacer que el computador ejecute sus acciones de forma
aparentemente simultnea
Computadores multiprocesador o sistemas con varios computadores
SISTEMAS EMPOTRADOS 6
CARACTERSTICAS
Fiabilidad y seguridad
Un fallo en un sistema de control puede hacer que el sistema
controlado se comporte de forma peligrosa o antieconmica
Es importante asegurar que si el sistema de control falla lo haga de
forma que el sistema controlado quede en un estado seguro => hay
que tener en cuenta los posibles fallos o excepciones en el diseo
Eficiencia
Gran parte de los sistemas de control deben responder con gran
rapidez a los cambios en el sistema controlado
SISTEMAS EMPOTRADOS 7
CARACTERSTICAS
Interaccin con dispositivos fsicos
Los sistemas empotrados interaccionan con su entorno mediante
diversos tipos de dispositivos que normalmente no son convencionales
(teclados, impresoras, ...): convertidores A/D y D/A, pwm, entradas y
salidas digitales paralelo y serie, ... (interfases con sensores,
actuadores, perifricos especiales, ...)
Los componentes del software que controlan el funcionamiento de
estos dispositivos (manejadores, "drivers") son, en general,
dependientes del sistema concreto
SISTEMAS EMPOTRADOS 8
CARACTERSTICAS
Robustez
Embarcados en sistemas con movimiento o que pueden ser
transportados, sujetos a vibraciones e incluso impactos (coches,
robots, instrumentacin porttil, ...)
No siempre trabajan en condiciones ptimas de temperatura, humedad,
limpieza.
Factor de proteccin IP: IP65
Primer dgito: proteccin ante entrada de slidos (polvo)
Segundo dgito: proteccin ante la entrada de lquidos
SISTEMAS EMPOTRADOS 9
CARACTERSTICAS
Bajo consumo
Muchos de estos sistemas estn alimentados con bateras o pilas.
Menor consumo => mayor autonoma
En muchos casos necesidades de bajo voltaje (3V)
Bajo peso
Caracterstica de agradecer en sistemas porttiles
No depende nicamente del computador embarcado y su periferia sino
tambin de la alimentacin (bateras) o de los sensores y actuadores
SISTEMAS EMPOTRADOS 10
CARACTERSTICAS
Bajo precio
Aplicable a electrnica de consumo y otros dispositivos con mercados
muy competitivos (p.e. telefona mvil)
Pequeas dimensiones
Las dimensiones de un sistema empotrado no dependen slo de s
mismo sino tambin del espacio disponible en el sistema que controla
y/o monitoriza.
Caracterstica a tener muy en cuenta por los problemas que acarrea
SISTEMAS EMPOTRADOS 11
EJEMPLOS
Ejemplos de sistemas empotrados
Electrnica de consumo
Videos, HIFI, televisin, ...
Lavadoras, frigorficos, lavaplatos,
...
Automviles
Control velocidad, climatizacin,
visualizacin
ABS, ASR
Inyeccin
Telecomunicaciones
Radios, telfonos mviles
GPS
Avinica, espacial
Computadores de vuelo, de
misin
Path-finder
Defensa
Bombas y misiles inteligentes
Vehculos, direccin de tiro, ...
Instrumentacin
SISTEMAS EMPOTRADOS 12
CLASIFICACIN COMPUTADORES
Supercomputadores
Servidores
Estaciones de trabajo
PC's
Calculadoras
Autmatas Programables
Reguladores digitales
Tarjetas microprocesadores
+tarjetas E/S +bus
Microcontroladores, DSPs
Clculo cientfico
Gestin (bancos, empresas)
Bases de datos
Control industrial
Simuladores de vuelo
Robtica
Electrodomsticos
Aeronutica
Telfonos mviles
TIEMPO REAL
E
M
P
O
T
R
A
D
O
S
N
O
E
M
P
O
T
R
A
D
O
S
PROPSITO GENERAL
Tarjetas microprocesadores
+tarjetas E/S +bus
SISTEMAS EMPOTRADOS 13
LOS MICROS
Microprocesadores
Propsito general
Potente CPU
Caches y manejo eficiente de memoria
CPU especializada:
Instruccin MAC
Manejo buffers, ...
Memoria interna (RAM/ROM)
Perifricos:
Timers
Lneas serie alta velocidad
Caches
SI
NO
Memoria interna (RAM/ROM)
Perifricos:
E/S digitales
Conversores A/D
PWM
Timers
Lneas serie (SCI, SPI)
Memoria externa
Caches
SI
NO
Microcontroladores
Control digital
La CPU no necesita potencia
Todo en un CHIP
DSPs
Procesado Digital de Seal
Potente CPU especializada
Comunicacin con conversores A/D externos
SISTEMAS EMPOTRADOS 14
EL MERCADO
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
90 91 92 93 94 95 96 97 98 99
8-bit
4-bit
16-bit
C
DSP
SISTEMAS EMPOTRADOS 15
CARACTERSTICAS DE LOS C y DSP
Tcnica de fabricacin
CMOS: Complementary Metal Oxide Semiconductor
La inmensa mayora de los procesadores para sistemas empotrados se
fabrican en esta tecnologa
Menor consumo (alimentacin a bateras)
Mayor inmunidad al ruido
Son chips casi o totalmente estticos (no necesidad de refresco) => el reloj
puede ser ralentizado o detenido: seelp mode
SISTEMAS EMPOTRADOS 16
CARACTERSTICAS DE LOS C y DSP
Arquitecturas
Von-Neuman (C)
Programa y datos son almacenados en la misma memoria principal. Un
nico bus de datos.
Primero se busca la instruccin y entonces el dato involucrado => Dos
bsquedas en secuencia.
Harvard (C y DSP)
Bus de datos y bus de instrucciones separados.
Arquitectura segmentada => bsquedas en paralelo
Pre-bsqueda de siguiente instruccin en paralelo con acceso a los datos
de la instruccin en ejecucin
SISTEMAS EMPOTRADOS 17
CARACTERSTICAS DE LOS C y DSP
CISC: Complex Instruction Set Computer
Muchas instrucciones diferentes. Potentes y especializadas.
Facilita la programacin.
Cdigo muy compacto
P.e.: Motorola
RISC: Reduced Instruction Set Computer
Pocas instrucciones muy sencillas.
La sencillez de las instrucciones permite liberar rea de silicio para
implementar caractersticas que mejoren las prestaciones.
Chips ms baratos, de menor consumo, de menos pines.
P.e.: PIC
SISTEMAS EMPOTRADOS 18
CARACTERSTICAS DE LOS C y DSP
Memorias
PROGRAMA PARMETROS
DATOS NO VOLTILES
VARIABLES
PILA
ROM
OTP
EPROM
EEPROM
FLASH
EEPROM
FLASH
RAM con batera
RAM
SISTEMAS EMPOTRADOS 19
CARACTERSTICAS DE LOS C y DSP
Mscara
Memoria ROM
Programada en fbrica
OTP: One Time Programmable
Es un dispositivo PROM. En realidad una EPROM sin ventana de borrado.
Una vez que el programa ha sido grabado no puede ser borrado ni
modificado
Alternativa a la mscara ROM para series pequeas
Reprogramacin
El uso de EPROM, EEPROM, EPROM y FLASH para la memoria de
programa facilita el desarrollo y puesta a punto de dispositivos
El uso de EEPROM, EPROM y FLASH permite la reprogramacin del
procesador sin extraerlo del sistema que controla
Nuevas versiones, eliminacin de errores
SISTEMAS EMPOTRADOS 20
CARACTERSTICAS DE LOS C y DSP
Alimentacin
Bajo voltaje
Alimentacin a 5V (C)
Alimentacin a 3V (C y DSP)
IDLE/HALT
Modos de bajo consumo, manteniendo valores de registros, memoria y
salidas
IDLE: se para la CPU
El micro se despierta con una interrupcin externa o interna (timers) o
con el RESET
Actividad peridica del micro -> timer dedicado a despertar
HALT: se para todo (CPU, timers, perifricos), el micro se despierta slo
con una interrupcin externa o RESET
SISTEMAS EMPOTRADOS 21
CARACTERSTICAS DE LOS C y DSP
Entradas / salidas
UART: Universal Asynchronous Receiver Transmitter
SCI: Serial Comunication Interface.
Synchronous Serial Port
SPI: Serial Periferal Interface
McBSP: Multi Channel Buffered Serial Port
I2C: Inter-Integrated Circuit bus
Bus serie de dos hilos
Multi-master, multi-slave, deteccin de colisiones. 128 dispositivos, 10
metros
CAN: Controller Area Network
Bus con prioridades
SISTEMAS EMPOTRADOS 22
CARACTERSTICAS DE LOS C y DSP
Conversin Analgico-Digital (slo C, algn DSP)
Dada la dificultad de integrar circuitos analgicos con digitales no suelen
tener gran precisin
Normalmente 8 10 bits
Conversin Digital-Analgica (slo C , algn DSP)
No suele estar implementada
PWM: Pulse Width Modulator. Se usa como tcnica de conversin D/A
Contadores de pulsos (slo C)
Cada pulso/evento incrementa un registro acumulador -> nmero de veces
que ha sucedido el evento
SISTEMAS EMPOTRADOS 23
CARACTERSTICAS DE LOS C y DSP
Interrupciones
Desde los perifricos: timers, UARTS, A/D, E/S paralelo, componentes
externos.
Interrupciones enmascarables -> se pueden activar y desactivar
Interrupciones vectorizadas: una direccin de salto para cada
interrupcin
Prioridades
SISTEMAS EMPOTRADOS 24
CARACTERSTICAS DE LOS C y DSP
Caractersticas especiales
Watchdog timer
Si el programa no reinicializa el watchdog antes de un cierto tiempo, ste
procede a hacer el RESET del sistema
Monitor del reloj
Circuito que detecta si el reloj funciona demasiado despacio => RESET
Monitor
Programa residente que facilita el desarrollo y la puesta a punto (carga,
break points, ...)
Floating point vs fixed point (DSPs)
SISTEMAS EMPOTRADOS 25
C POPULARES
8051 (Intel)
Arquitectura Harvard (direccionamiento separado para datos e
instrucciones)
Bus de 8 bits de datos
Puede direccionar 64K de programa (los 4K 8K bajos pueden residir
en chip) y 64K de memoria de datos externa. 128 bytes de RAM interna
+ registros especiales. E/S direccionadas en espacio propio.
Bus de direcciones de 16 bits
Gran potencia en instrucciones de bit
Timers y puertos serie (no A/D ni PWM)
8048 serie baja
80c196 de 16 bits
80186: microcontrolador con un 8086 como ncleo (PC XT)
SISTEMAS EMPOTRADOS 26
C POPULARES
68HC11 (Motorola)
Arquitectura Von Neuman (datos, programa, E/S, timers comparten el
mismo espacio de memoria)
Bus de 8 bits de datos, 16 bits de direcciones
Pueden tener: EEPROM/OTPROM, RAM, E/S digitales, timers, A/D,
PWM, acumuladores de pulsos, comunicacin serie sncrona y
asncrona
Serie baja 68HC05
683xx: microcontrolador con un 68xxx como ncleo
SISTEMAS EMPOTRADOS 27
C POPULARES
68HC08 (Motorola)
Arquitectura Von Neuman (datos, programa, E/S, timers comparten el
mismo espacio de memoria)
Bus de 8 bits de datos, 16 bits de direcciones
Pueden tener: ROM/FLASH, RAM, E/S digitales, timers, A/D, PWM,
acumuladores de pulsos, comunicacin serie sncrona y asncrona
Existen elementos de la familia con USB, IIC, CAN
Hasta 60K de Flash, hasta 2K de RAM
SISTEMAS EMPOTRADOS 28
C POPULARES
PIC (MicroChip)
Arquitectura Harvard (direccionamiento separado para datos e
instrucciones)
solapamiento de instrucciones
Primer microcontrolador RISC
16Cxx principal lnea de la casa
35 instrucciones
8 bits de datos
14 bits de instruccin (hasta 8K instrucciones)
Pueden tener: EEPROM/OTPROM, RAM, E/S digitales, timers, A/D, PWM,
acumuladores de pulsos, comunicacin serie sncrona y asncrona
SISTEMAS EMPOTRADOS 29
DSPs POPULARES
Las familias de Texas Instruments
Lowest Cost
Lowest Cost
Control Systems Control Systems
Motor Control Motor Control
Storage Storage
Digital Ctrl Systems Digital Ctrl Systems
C2000
C2000
C5000
C5000
Efficiency
Efficiency
Best MIPS per Best MIPS per
Watt / Dollar / Size Watt / Dollar / Size
Wireless phones Wireless phones
Internet audio players Internet audio players
Digital still cameras Digital still cameras
Modems Modems
Telephony Telephony
VoIP VoIP
C6000
C6000
Multi Channel and Multi Channel and
Multi Function App's Multi Function App's
Comm Comm Infrastructure Infrastructure
Wireless Base Wireless Base- -stations stations
DSL DSL
Imaging Imaging
Multi Multi- -media Servers media Servers
Video Video
Performance
Performance
&
&
Best
Best
Ease
Ease
-
-
of
of
-
-
Use
Use
SISTEMAS EMPOTRADOS 30
DSPs POPULARES
Familia 6000
(Texas Intruments)
Internal Buses Internal Buses
CPU
CPU
.D1
.D1
.M1
.M1
.L1
.L1
.S1
.S1
.D2
.D2
.M2
.M2
.L2
.L2
.S2
.S2
R
e
g
s
R
e
g
s
(
B
0
(
B
0
- -
B
1
5
)
B
1
5
)
R
e
g
s
R
e
g
s
(
A
0
(
A
0
- -
A
1
5
)
A
1
5
)
Control Control Regs Regs
EMIF EMIF
Extl
Extl
Memory
Memory
Program Program
RAM RAM
Data Ram Data Ram
D (32) D (32)
Serial Port Serial Port
Host Port Host Port
Boot Load Boot Load
Timers Timers
Pwr Pwr Down Down
DMA DMA
Addr Addr (32) (32)
SISTEMAS EMPOTRADOS 31
DSPs POPULARES
Familia 6000 (Texas Instruments)
Device Device MIPS MIPS MHz MHz Kbytes Kbytes pins pins mm mm W W $ $ Periphs Periphs
6201B 6201B 1600 1600 200 200 128 128 352 352 27 27 1.9 1.9 80 80- -110 110 D2H D2H
6202 6202 2000 2000 250 250 384 384 352 352 27 27 1.9 1.9 120 120- -150 150 D3X D3X
6211 6211 1200 1200 150 150 72 72 256 256 27 27 1.5 1.5 20 20- -40 40 E2H E2H
TMS320 TMS320 MFLOPS MFLOPS MHz MHz Kbytes Kbytes pins pins mm mm W W $ $ Periphs Periphs
6701 6701 1000 1000 167 167 128 128 352 352 35 35 1.9 1.9 170 170- -200 200 D2H D2H
6711 6711 600 600 100 100 72 72 256 256 27 27 0.9 0.9 20 20- -40 40 E2H E2H
Peripherals Legend: Peripherals Legend:
D,E: D,E: DMA,EDMA DMA,EDMA
2,3: 2,3: # of # of McBSPs McBSPs
H,X: H,X: HPI, XBUS HPI, XBUS
SISTEMAS EMPOTRADOS 32
DSPs POPULARES
Familia 2000 (Texas Instruments)
C24x
16-bit data Fixed-Point
SCI, SPI, CAN, A/D, event manager, watchdog timers, on-chip Flash
memory, 20-40 MIPS
C28x
32-bit data Fixed-Point
SCI, SPI, CAN, 12-bit A/D, McBSP, watchdog timers, on-chip Flash
memory, up to 400 MIPS
SISTEMAS EMPOTRADOS 33
DSPs POPULARES
Otros fabricantes importantes:
Analog Devices (www.analog.com/dsp)
ADSP-21xx 16 bit, fixedpoint
ADSP-21xxx 32 bit, floatingandfixedpoint
Lucent Technologies (www.lucent.com)
DSP16xxx16 bit fixedpoint
DSP32xx32 bit floatingpoint
Motorola (www.mot.com)
DSP561xx16 bit fixedpoint
DSP560xx24 bit, fixedpoint
DSP96002 32 bit, floatingpoint
SISTEMAS EMPOTRADOS 34
LENGUAJES DE PROGRAMACIN
Ensamblador
Permiten el uso eficiente de los recursos
Programacin costosa y casi imposible la modificacin
El cdigo debe ser documentado, empleo de smbolos
Programacin estructurada
Lenguajes de alto nivel
Desarrollo ms rpido, mantenimiento menos costoso
eficiencia
ocupacin en memoria
Ada --> grandes sistemas empotrados
C --> La estrella!
Permite el acceso a los recursos hardware
SISTEMAS EMPOTRADOS 35
LENGUAJES DE PROGRAMACIN
Uso de C y Ensamblador
Programacin en C
Puesta a punto de la lgica del
programa
Reescritura de algunas partes
crticas en ensamblador
Disminucin de la ocupacin de
memoria
Aumento de las prestaciones
Cargador
Microcontrolador
DSP
Objeto
Relocalizable
Fichero
Configuracin
Libreras
Fuente C
Ejecutable
No Relocalizable
Mscara
Ensamblador
Cruzado
Compilador
Cruzado
Montador de
Enlaces
Objeto
Relocalizable
Fuente
Ensamblador
SISTEMAS EMPOTRADOS 36
HERRAMIENTAS DE DESARROLLO
Simuladores
Un simulador ejecuta un programa de un microcontrolador o DSP en un
computador de propsito general (p.e. un PC)
Los contenidos de la memoria y registros pueden ser observados y
alterados
No soporta interrupciones reales ni (generalmente) hardware adicional
La velocidad de ejecucin es menor que en el procesador real
SISTEMAS EMPOTRADOS 37
HERRAMIENTAS DE DESARROLLO
Tarjetas de evaluacin con monitor residente
Elementos bsicos:
Procesador + Hardware perifrico bsico
Lnea de comunicacin
Conector para enlazar hardware propio
Programa monitor en ROM
El monitor permite:
La carga y ejecucin de programas
Visualizacin y actualizacin de memoria, breakpoints, ...
Desventajas del monitor residente:
El monitor se ejecuta en el mismo procesador que el programa del usuario.
Utiliza recursos del procesador (un puerto de comunicacin, una
interrupcin y memoria) y ralentiza la ejecucin (acceso a memoria y
registros y comunicacin)
SISTEMAS EMPOTRADOS 38
HERRAMIENTAS DE DESARROLLO
Puerto especfico en el mismo procesador
Ejemplos
IEEE Std 1149.1 (IEEE Standard Test Access Port and Boundary-Scan
Architecture)
Modo monitor en el 68HC08 (MON08)
Puerto especfico que permite:
Test del sistema en lnea
Programacin del procesador en lnea
Puesta a punto
Es un recurso especfico del procesador para estas tareas
Puerto al exterior
Circuitera
Software de carga, comunicacin, ...
SISTEMAS EMPOTRADOS 39
HERRAMIENTAS DE DESARROLLO
Emuladores
Hardware que emula al procesador y adems permite obtener
informacin y actuar sobre la aplicacin sin gastar recursos ni alterar la
evolucin temporal
Se comunica por una parte con un computador o terminal (va RS232 o
similar) y por otra con el sistema que se est desarrollando (mediante
el POD)
SISTEMAS EMPOTRADOS 40
SISTEMAS EMPOTRADOS
El 68HC08
SISTEMAS EMPOTRADOS 41
DESCRIPCIN GENERAL
Caractersticas bsicas
Arquitectura Von Neuman
8MHz frecuencia bus a 5Volt
Bus datos y aritmtica 8 bits
Bus direcciones 16 bits
multiplicacin 8x8 rpida
divisin 16/8 rpida
512 RAM, 32K FLASH
Interrupciones vectorizadas, con
prioridades
In-system programming
Conversor A/D de 8 canales y 8
bits, tiempo conversin 17S
E/S en espacio de memoria
Comunicacin serie asncrona
SCI, y sncrona SPI
Modulo de generacin de reloj
con PLL
TBI, interrupcin de tiempo real
2 mdulos temporizadores 16
bits,PWM
33 pines I/O
10 mA todas I/0, 15 mA 5 E/S
pull up programable
Watchdog COP, deteccin de
bajo voltaje
Alimentacin a 3 V 5 V
Dos estados de bajo consumo:
WAIT y STOP
SISTEMAS EMPOTRADOS 42
DESCRIPCIN GENERAL
Diagrama
bloques
HC08
SISTEMAS EMPOTRADOS 43
DESCRIPCIN GENERAL
Mapa de memoria
SISTEMAS EMPOTRADOS 44
DESCRIPCIN GENERAL
Low Power Modes
Existen dos modos de ahorro de energa: WAIT y STOP
WAIT
CPU apagada
Perifricos continan funcionando
Salida del modo: RESET o Interrupcin (externa o de los perifricos)
STOP
CPU apagada
Perifricos apagados salvo el KBI
TBM puede quedar activo
Salida del modo: RESET, IRQ, interrupcin del TBM o del KBI
SISTEMAS EMPOTRADOS 45
DESCRIPCIN GENERAL
Encapsulados
44 QFP 42 SDIP 40 PDIP
SISTEMAS EMPOTRADOS 46
DESCRIPCIN GENERAL
Familia HC08
RAM 128 bytes .. 4096 bytes
Dos tecnologas
Flash (68HC908) 4K .. 60K
Mscara ROM (68HC08) 406 bytes .. 32 K
EEPROM 0 bytes .. 1024 bytes
Comunicacin serie SPI, SCI, CAN, USB, I2C
Canales en los timers 1 .. 8
CAD 8 10 bits, 8 a 14 canales
SISTEMAS EMPOTRADOS 47
CPU08
Caractersticas bsicas
Hasta 8MHz frecuencia
Bus datos y aritmtica 8 bits
Bus direcciones 16 bits
64K de programa y datos
Multiplicacin 8x8 rpida
Divisin 16/8 rpida
16 modos de direccionamiento
Modos de bajo consumo: WAIT y STOP
Puede ejecutar cdigo para el HC05
SISTEMAS EMPOTRADOS 48
CPU08
Conjunto de registros que pueden ser manipulados por el conjunto de
instrucciones:
Acumulador A
Registro ndice H:X
Puntero de pila SP, tambin
registro ndice
Contador de programa PC
Registro de cdigos
de condicin
SISTEMAS EMPOTRADOS 49
CPU08
Inherente
TSX H:X (SP)+1
indexado la direccin del
operando se calcula sumando un
desplazamiento (offset) a un
registro ndice
indexado sin desplazamiento
LDA ,X ; A (X)
Indexado, desplazamiento 8bits
LDA $2,X; A (X+ $2)
Indexado, desplazamiento 16bits
LDA $8000,X; A (X+$8000)
indexado SP, desplazamiento 8
bits
LDA $1,SP
indexado SP, desplazamiento 16
bits
LDA $8000,SP
Modos de direccionamiento:
Inmediato, el valor del operando
LDA #01
Extendido, la direccin dato
(direcciones > $FF)
LDA $8001
Directo, la direccin del dato
(direcciones < $FF)
LDA $01
Relativo, instrucciones de salto
rango -127..127
BRA ETIQUETA (salto dentro del
rango)
cdigo reubicable
menor tamao de las instrucciones
SISTEMAS EMPOTRADOS 50
CPU08
Conjunto de instrucciones
Carga de Regi stros
LDA Load Accumulator from Memory
LDHX Load Index Register from Memory
LDX Load X (Index Register Low) from Memory
PULA Pull Accumulator from Stack
PULH Pull H (Index Register High) from Stack
PULX Pull X (Index Register Low) from Stack
Sal vado de regi stros
STA Store Accumulator in Memory
STHX Store Index Register
STX Store X (Index Register Low) in Memory
PSHA Push Accumulator onto Stack
PSHH Push H (Index Register High) onto Stack
PSHX Push X (Index Register Low) onto Stack
Transferenci a entre regi stros
TAP Transfer Accumulator to Processor Status Byte
TAX Transfer Accumulator to X (Index Register Low)
TPA Transfer Processor Status Byte to Accumulator
TSX Transfer Stack Pointer to Index Register
TXA Transfer X (Index Register Low) to Accumulator
TXS Transfer Index Register to Stack Pointer
Transferenci a memori a - memori a
MOV Move
Incremento/Decremento
INCA Increment Accumulator
INCX Increment X (Index Register Low)
INC Increment
DECA Decrement Accumulator
DECX Decrement X (Index Register Low)
DEC Decrement
Acti vado/desacti vado de bi ts
BCLR n Clear Bit n in Memory
BSET n Set Bit n in Memory
CLRA Clear Accumulator
CLRX Clear X Index Register Low
CLRH Clear H Index Register High
CLR Clear
CLC Clear Carry Bit
SEC Set Carry Bit
RSP Reset Stack Pointer
SISTEMAS EMPOTRADOS 51
CPU08
Conjunto de instrucciones
Operaci ones ari tmti cas
ADD Add without Carry
AIS Add Immediate Value (Signed) to Stack Pointer
AIX Add Immediate Value (Signed) to Index Register
ASL Arithmetic Shift Left
ASR Arithmetic Shift Right
DAA Decimal Adjust Accumulator
DIV Divide
LSL Logical Shift Left
LSR Logical Shift Right
MUL Unsigned Multiply
NEGA Negate Accumulator(Two?s Complement)
NEGX Negate X Index Register Low (Two?s Complement)
NEG Negate (Two?s Complement)
SBC Subtract with Carry
SUB Subtract
NSA Nibble Swap Accumulator
Operaci ones l gi cas
AND Logical AND
EOR Exclusive-OR Memory with Accumulator
ORA Inclusive-OR Accumulator and Memory
COMA Accumulator Complement (One's Complement)
COMX X Index Register Low Complement (One's Complement)
COM Complement (One's Complement)
Rotaci ones/Despl azami entos
ROLA Rotate Accumulator Left through Carry
ROLX Rotate X Index Register Low Left through Carry
ROL Rotate Left through Carry
RORA Rotate Accumulator Right through Carry
RORX Rotate X Index Register Low Right through Carry
ROR Rotate Right through Carry
Test datos
CMP Compare Accumulator with memory
CPHX Compare H:X with M
CPX Compare X with M
BIT Bit Test
TSTA Test Accumulator for Negative or Zero
TSTX Test X Index Register Low for Negative or Zero
TST Test for Negative or Zero
SISTEMAS EMPOTRADOS 52
CPU08
Conjunto de instrucciones
Sal to condi ci onal
BCC Branch if Carry Bit Clear
BCS Branch if Carry Bit Set
BEQ Branch if Equal
BGE Branch if Greater Than or Equal To
BGT Branch if Greater Than
BHCC Branch if Half Carry Bit Clear
BHCS Branch if Half Carry Bit Set
BHI Branch if Higher
BHS Branch if Higher or Same
BIH Branch if IRQ Pin High
BIL Branch if IRQ Pin Low
BLE Branch if Less Than or Equal To
BLO Branch if Lower
BLS Branch if Lower or Same
BLT Branch if Less Than
BMC Branch if Interrupt Mask Clear
BMI Branch if Minus
BMS Branch if Interrupt Mask Set
BNE Branch if Not Equal
BPL Branch if Plus
BRSET n Branch if Bit n in Memory Set
BRCLR n Branch if Bit n in Memory Clear
DBNZ Decrement and Branch if Not Zero
CBEQ Compare and Branch if Equal
Sal to i ncondi ci onal
JMP Jump
JSR Jump to Subroutine
BSR Branch to Subroutine
RTS Return from Subroutine
BRA Branch Always
BRN Branch Never
Vari os
NOP No Operation
Interrupci ones
RTI Return from Interrupt
SWI Software Interrupt
WAIT Enable Interrupts; Stop Processor
STOP Enable IRQ Pin, Stop Oscillator
CLI Clear Interrupt Mask Bit
SEI Set Interrupt Mask Bit
SISTEMAS EMPOTRADOS 53
Clock Generator Module CGM
Fuente de reloj para el C:
reloj externo a la frecuencia de trabajo
reloj externo a baja frecuencia + PLL interno multiplicador frecuencia
CGMXCLK
PLL
selector
fuente reloj
CGMOUT
CGMVCLK
2
2
BUS CLOCK
SISTEMAS EMPOTRADOS 54
Clock Generator Module CGM
Posibilidades del reloj externo
Sin PLL: dc .. 32.8 MHz
Con PLL: 30 KHz .. 1.5 MHz
Frecuencia de BUS
Alimentacin de 5V: mximo 8.4 MHz
Alimentacin de 3V: mximo 4.1 MHz
Ejemplo de uso de PLL
SISTEMAS EMPOTRADOS 55
Clock Generator Module CGM
Circuito externo para el CGM
Circuito de reloj
Filtro para el PLL
SISTEMAS EMPOTRADOS 56
Interrupciones
Caractersticas bsicas
16 posibles fuentes de interrupcin
SWI interrupcin software
Reset
Vectorizadas
18 vectores diferentes
Tabla de interrupciones en direccin fija: al final del espacio de
direccionamiento: $FFDC..$FFFF
Enmascarables salvo SWI y RESET
Se pueden habilitar de forma individual
SISTEMAS EMPOTRADOS 57
Interrupciones
RESET
Fuentes
Encendido (Power-ON Reset, POR)
Pin RESET externo: RST
Watchdog COP
Low Voltaje
IIegal opcode
Ilegal address
Acciones
Detiene la ejecucin de la instruccin en curso
Inicializa el valor de ciertos registros
Carga en el PC el contenido del vector de RESET ($FFFE-$FFFF)
Selecciona el reloj externo 4 como reloj de BUS
SISTEMAS EMPOTRADOS 58
Interrupciones
Fuentes de Interrupciones
Lnea IRQ externa
Internas de los perifricos
Timer, TBM, CGM
E/S: SCI, SPI, Keyboard, ADC
Interrupcin por programa SWI
Habilitacin de interrupciones
El bit I del CCR indica si la CPU atiende interrupciones
I = 1, no se atienden. SEI, pone el bit a 1
I = 0, se atienden. CLI, pone el bit a 0
enmascaradas en reset para poder fijar el puntero pila
Cada interrupcin dispone de una bandera individual que permite
enmascararla
SISTEMAS EMPOTRADOS 59
Interrupciones
Cada interrupcin tiene una bandera que indica si hay peticin
IF1-IF16 de los registros INT1, INT2, INT3
IFx=1 indica interrupcin pendiente
IFx=0 indica interrupcin no pendiente
Slo lectura
INT1
INT2
INT3
SISTEMAS EMPOTRADOS 60
Interrupciones
Secuencia en una interrupcin
espera fin instruccin curso (peor caso DIV, 7 ciclos)
Apilar registros de la CPU: PC, A, X, CCR
NO se apila H (parte alta del registro de ndice)
Enmascarar interrupciones (I = 1)
Por defecto las interrupciones no se anidan
Cargar en el PC el vector de la interrupcin pendiente ms prioritaria
Ejecucin del cdigo de la rutina de interrupcin
En el RTI se desapilan los registros de la CPU
Se retoma el I (se vuelven a habilitar las interrupciones)
Se retoma el PC (se reanuda el programa interrumpido en la siguiente
instruccin)
SISTEMAS EMPOTRADOS 61
Interrupciones
Orden de apilamiento de los registros de la CPU
SISTEMAS EMPOTRADOS 62
Interrupciones
Prioridades
Las prioridades de las interrupciones son fijas
Al acabar la instruccin actual se comprueba cuales son las
interrupciones pendientes y se ejecuta la ms prioritaria
Anidamiento de interrupciones
Debe hacerse con cuidado
El salto a interrupcin enmascara interrupciones. Normalmente no se
anidan.
Si se permite el anidamiento de interrupciones TODAS las interrupciones
habilitadas interrumpen, independientemente de su nivel de prioridad
respecto de la interrumpida
SISTEMAS EMPOTRADOS 63
Interrupciones
Tabla resumen propiedades de interrupciones
Source Flag Mask
INT Register
Flag Priority VectorAddress
Code Warrior
Int Num
Reset None None None 0 $FFFE$FFFF
SW Iinstruction None None None 0 $FFFC$FFFD 1
IRQ pin IRQF IMASK IF1 1 $FFFA$FFFB 2
CGM(PLL) PLLF PLLIE IF2 2 $FFF8$FFF9 3
TIM1 channel 0 CH0F CH0IE IF3 3 $FFF6$FFF7 4
TIM1 channel 1 CH1F CH1IE IF4 4 $FFF4$FFF5 5
TIM1 overflow TOF TOIE IF5 5 $FFF2$FFF3 6
TIM2 channel 0 CH0F CH0IE IF6 6 $FFF0$FFF1 7
TIM2 channel 1 CH1F CH1IE IF7 7 $FFEE$FFEF 8
TIM2 overflow TOF TOIE IF8 8 $FFEC$FFED 9
SPI receiver full SPRF SPRIE IF9 9 $FFEA$FFEB 10
SPI overflow OVRF ERRIE
SPI modefault MODF ERRIE
SP transmitter empty SPTE SPTIE IF10 10 $FFE8$FFE9 11
SCI receiver overrun OR ORIE IF11 11 $FFE6$FFE7 12
SCI noise fag NF NEIE
SCI raming error FE FEIE
SCI parity error PE PEIE
SCI receiver full SCRF SCRIE IF12 12 $FFE4$FFE5 13
SCI input idle IDLE ILIE
SCI transmitter empty SCTE SCTIE IF13 13 $FFE2$FFE3 14
SCI transmission complete TC TCIE
Keyboard pin KEYF IMASKK IF14 14 $FFE0$FFE1 15
ADC conversion complete COCO AIEN IF15 15 $FFDE$FFDF 16
Timebase TBIF TBIE IF16 16 $FFDC$FFDD 17
SISTEMAS EMPOTRADOS 64
Interrupciones
Interrupcin externa IRQ
Pin IRQ
Registro de control y estado
Dos modos seleccionables MODE
MODE = 1 interrupcin en flanco de bajada y en nivel bajo
MODE = 0 interrupcin en flanco de bajada
Bits de ACK, IRQF y IMASK (mscara)
Pullup interno siempre conectado
SISTEMAS EMPOTRADOS 65
Entradas/salidas paralelas
33 pines I/O todos bidireccionales
Organizados en 5 puertos
A,B,C,D,E
pines alta intensidad
Todos los pines a 1 pueden
suministrar 10mA
Hay lmite en la intensidad total
suministrada por todos los pines
de un puerto y por todos los
puertos
Los pines PTC0-PTC4 pueden
absorber 15mA
compartidos con otros perifricos
puertos A,C,D con pull-up
programable
Ejemplo PTA
SISTEMAS EMPOTRADOS 66
Entradas/salidas paralelas
puerto pines
E/S
reg
E/S
reg
direccin
reg
pull up
funcin
alternativa
A 0-7 PTA DDRA PTAPUE KBI
keyboard interrupt
module
B 0-7 PTB DDRB - ADC
conversor
analgico-digital
C 0-6 PTC DDRC PTCPUE -
D 0-7 PTD DDRD PTDPUE TIM
temporizacin
SPI
Serial Periferial
Interface
E 0-1 PTE DDRE - SCI
Lnea Serie Asncrona
SISTEMAS EMPOTRADOS 67
Entradas/salidas paralelas
Puerto A (similarmente B, C, D, E)
8 pines bidireccionales
Registro de datos PTA
Registro de direccin de los pines
(entrada o salida) DDRA
DDRAx = 1pin x configurado
como salida
DDRAx = 0 pin x configurado
como entrada
Registro de habilitacin de los
pullup PTAPUE
PTAPUEx = 1 pullup habilitado
PTAPUEx = 0 deshabilitado
SISTEMAS EMPOTRADOS 68
KBI, mdulo de interrupcin de teclado
Asociado al puerto A
Diseado para detectar pulsadores en los pines PTA0-PTA7
Sensible al nivel bajo ceros
Puede generar interrupciones
el bandern KEYF indica pulsacin pendiente
si IMASKK = 0, KEYF provoca interrupcin
Puede seleccionarse qu pines son sensibles con el registro INTKBIER
KBIEx = 1 pin PTAx configurado como entrada y con pullup
Deteccin del valor de pines
configuracin pin de entrada con DDRA
lectura de PTA
SISTEMAS EMPOTRADOS 69
KBI, mdulo de interrupcin de teclado
SISTEMAS EMPOTRADOS 70
KBI, mdulo de interrupcin de teclado
Modo sensible nicamente a flancos de bajada
MODEK=0
Detecta cualquier flanco de bajada si el resto de los pines est a 1
Un flanco de bajada cuando un pin ya est a 0 no genera un nuevo KEYF
Borrado KEYF
salto a interrupcin
escribir 1 en ACKK
Modo sensible a flancos de bajada y nivel bajo
MODEK =1
KEYF a 1 mientras un pin est a 0
Borrado KEYF
salto a interrupcin
escribir 1 en ACKK y todos los pines del PTA a 1
SISTEMAS EMPOTRADOS 71
Convertidor A/D
Caractersticas
Un solo convertidor, 8 canales multiplexados
Precisin 8 bits, aproximaciones sucesivas
Tiempo de conversin: 17 ciclos 1MHz clock, 17S
Modos
Conversin contnua
Conversin nica
Flag indica fin de conversin. Puede generar interrupciones
VREFL V VREFH $00 CONVERSION $FF
Conversin lineal
SISTEMAS EMPOTRADOS 72
Convertidor A/D
Registro de control y estado ADSCR
AIEN Habilitacin de las interrupciones
AIEN = 1 habilitadas
AIEN = 0 deshabilitadas
ADCO Conversin continua
ADCO = 1 conversin continua
ADCO = 0 una nica conversin
COCO Conversin completa
AIEN =1, interrupciones habilitadas COCO debe ser forzado a 0 para
permitir el servicio de las interrupciones
AIEN =0, interrupciones deshabilitadas COCO bit de slo lectura
Se pone a 1 al final de una conversin
Se borra escribiendo en ADSCR o leyendo ADC
SISTEMAS EMPOTRADOS 73
Convertidor A/D
Registro de control y estado ADSCR
ADCH4-ADCH0 Seleccin
canal de conversin
Comienzo de conversin
Escritura del ADSCR
Registro de datos ADC
ADCH4ADCH0 entrada
00000 PTB0/AD0
00001 PTB1/AD1
00010 PTB2/AD2
00011 PTB3/AD3
00100 PTB4/AD4
00101 PTB5/AD5
00110 PTB6/AD6
00111 PTB7/AD7
11101 Vrefh
11110 Vrefl
11111 ADC off
SISTEMAS EMPOTRADOS 74
Convertidor A/D
El ADC necesita una entrada de reloj en el intervalo [0.5,2.1] MHz.
(Aconsejado 1 MHz)
Registro de control del reloj del ADC ADCLK
ADIV2-ADIV0 definen el divisor de la frecuencia fuente de reloj
ADICKL- Selecciona la fuente de frecuencia de reloj
ADICKL = 0 Bus clock
ADICKL = 1 CGMXCLK (reloj externo)
SISTEMAS EMPOTRADOS 75
Mdulo TIMER, TIM
Caractersticas generales
Dispone de 2 timer independientes TIM1 y TIM2
Cada TIM dispone a su vez de 2 canales
Para cada timer
Basado en un contador de 16 bits
Preescalado programable del reloj de entrada
2 canales, para cada canal
input capture flanco subida, flanco bajada o cualquier cambio
output compare activar, desactivar o cambiar una patilla
generar interrupciones canal1, canal2 o desbordamiento contador
Comparte el patillaje con el PTD
SISTEMAS EMPOTRADOS 76
Mdulo TIMER, TIM
Diagrama de bloques
de un TIM
SISTEMAS EMPOTRADOS 77
Mdulo TIMER, TIM
Contador
T1CNTH, T1TCNTL parte alta y baja del TIM1, slo lectura
Lectura de T1CNTH congela el valor de T1CNTL hasta que es ledo
Admite reset (TRST en T1SC) y parada (TSTOP en T1SC)
El contador TCNT es modular y cuenta hacia arriba
Empieza en $0000
Cuando TCNT = TMOD TCNT = $0000
SISTEMAS EMPOTRADOS 78
Mdulo TIMER, TIM
Preescalado programable con PS2-PS0
para bus clock 2.4575MHz
divisor 1 2 4 8 16 32 64
resolucin
#i f ndef __DECL__68HC08GP32_H__
#def i ne __DECL__68HC08GP32_H__ ext er n
#endi f
#pr agma MESSAGE DI SABLE C1106 / * WARNI NG C1106: Non- st andar d bi t f i el d t ype */
#def i ne _I O_BASE_ADDR 0
#def i ne _I O_AT( x) @( _I O_BASE_ADDR+( x) )
#i ncl ude <st dt ypes. h>
/ *******************************************************************************************/
/ * DEFI NE PORT A */
/ *******************************************************************************************/
__DECL__68HC08GP32_H__ vol at i l e unsi gned char PTA _I O_AT( 0x00) ; / * por t A */
__DECL__68HC08GP32_H__ vol at i l e unsi gned char DDRA _I O_AT( 0x04) ; / * dat a di r ect i on por t A */
/ *****************************************************************************************/
/ * DEFI NE PORT C */
/ *****************************************************************************************/
/ ****Por t Regi st er C******/
__DECL__68HC08GP32_H__ vol at i l e uni on {
st r uct {
unsi gned char _PTC0: 1;
unsi gned char _PTC1: 1;
TBI E = 1 ;
asmcl i ; / * desenmascar ado de l as i nt er r upci ones */
r et ur n ;
}
SISTEMAS EMPOTRADOS 171
CodeWarrior
Secciones de un programa ROM
.text Cdigo del programa.
.rodata Constantes.
.rodata1 Strings.
.copy Inicializadores de
variables.
.startData Datos empleados
por la rutina startup al comienzo
del programa.
.init Punto de entrada del
programa, rutinas de inicializacin
Secciones de un programa RAM
.data variables inicializadas
.bss variables no inicializadas
.stack pila
SISTEMAS EMPOTRADOS 172
CodeWarrior
Pragmas directivas al compilador
#pragma CODE_SEG
/ * i n a header f i l e */
#pr agma CODE_SEG MY_CODE1
ext er n voi d f ( voi d) ;
#pr agma CODE_SEG MY_CODE2
ext er n voi d h( voi d) ;
#pr agma CODE_SEG DEFAULT
/ * i n t he cor r espondi ng C f i l e : */
#pr agma CODE_SEG MY_CODE1
voi d f ( voi d) {
h( ) ;
}
#pr agma CODE_SEG MY_CODE2
voi d h( voi d) {
f ( ) ;
}
#pr agma CODE_SEG DEFAULT
SISTEMAS EMPOTRADOS 173
CodeWarrior
#pragma DATA_SEG
/ * i n a header f i l e */
#pr agma DATA_SEG CUSTOM_MEMORY
ext er n i nt j _cust om;
#pr agma DATA_SEG DEFAULT
/ * i n t he cor r espondi ng C f i l e : */
#pr agma DATA_SEG CUSTOM_MEMORY
i nt j _cust om;
#pr agma DATA_SEG DEFAULT
voi d mai n( voi d) {
j _cust om= 5;
}
SISTEMAS EMPOTRADOS 174
CodeWarrior
#pragma INLINE
i nt i ;
#pr agma I NLI NE
st at i c voi d f oo( voi d) {
i = 12;
}
voi d mai n( voi d) {
f oo( ) ; / / r esul t s i nt o `i = 12; '
}
SISTEMAS EMPOTRADOS 175
CodeWarrior
Inicializacin
La aplicacin debe ser enlazada con una funcin predefinida del
entorno Startup
Se encuentra en el fichero Start08.c
Inicializa el puntero de pila
Escribe ceros en las posiciones de las variables no inicializadas (.bss)
Copia los valores correspondientes a las variables inicializadas
Llama al main
SISTEMAS EMPOTRADOS 176
CodeWarrior
Fichero de parmetros para el linker.
Describe la memoria fsica (READ_ONLY, READ_WRITE)
descompuesta en segmentos SECTIONS
Asigna secciones lgicas (.text, .data, ) a los segmentos de memoria
fsica PLACEMENT
Inicializa el vector de RESET y puede inicializar los vectores de
interrupcin VECTOR
Inicializacin de la pila
STACKSIZE
NAMES END
SECTI ONS
RAM = READ_WRI TE 0x0040 TO 0x023F;
ROM = READ_ONLY 0x8000 TO 0xFDFF;
END
PLACEMENT
. t ext I NTO ROM;
. dat a I NTO RAM;
END
STACKSI ZE 0x50
VECTOR 0 _St ar t up
SISTEMAS EMPOTRADOS 177
CodeWarrior
Fichero de parmetros para el linker.
Siempre es preciso especificar .data en el bloque PLACEMENT
Si el resto de secciones a situar en la RAM no son especificadas
Siempre es preciso especificar .text en el bloque PLACEMENT
Si el resto de secciones a situar en ROM no son especificadas
Algunos sinnimos
.data + .bss DEFAULT_RAM
.text DEFAULT_ROM
.init _PRESTART
.rodata ROM_VAR
.startData STARTUP
.copy COPY
SISTEMAS EMPOTRADOS 178
CodeWarrior
Fichero de descripcin del enlazado *.map
PROGRAM " F: \ . . . \ bi n\ GP32_ASM_C_MI X_Mon08_FLASH. abs"
*********************************************************************************************
TARGET SECTI ON
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Pr ocessor : Mot or ol a HC08
Memor y Model : SMALL
Fi l e For mat : ELF\ Dwar f 2. 0
Li nker : Smar t Li nker V- 5. 0. 19, Apr 2 2002
*********************************************************************************************
FI LE SECTI ON
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TERMI O. C. o ( ansi . l i b) Model : SMALL, Lang: ANSI - C
} _st ar t upDat a;
SISTEMAS EMPOTRADOS 179
CodeWarrior
Fichero de descripcin del enlazado *.map
*********************************************************************************************
SECTI ON- ALLOCATI ON SECTI ON
Sect i on Name Si ze Type Fr om To Segment
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
. t ext 6984 R 0x80B7 0x9BFE ROM
. r odat a 308 R 0x9BFF 0x9D32 ROM
. r odat a1 13 R 0x9D33 0x9D3F ROM
. abs_sect i on_0 1 N/ I 0x0 0x0 . absSeg0
};
i nt er r upt voi d UnusedI sr ( voi d)
{
r et ur n;
}
SISTEMAS EMPOTRADOS 189
Code Composer
El compilador permite intercalar instrucciones en ensamblador en ficheros
fuente en C
asm (assembler text) ;
voi d Reset _Cl ock ( voi d) {
asm( " set c I NTM ; Mask gl obal i nt er r upt s" ) ;
asm( " eal l ow ; Enabl e accesses t o PI E cont r ol r egi st er s" ) ;
/ * St op TI MER0 */
TI MER0TCR = 0x0010 ;
SECTI ONS
{
/ * 22- bi t pr ogr amsect i ons */
. r eset : > RESET, PAGE = 0
. ci ni t : > PROG, PAGE = 0
. t ext : > PROG, PAGE = 0
/ * 16- Bi t dat a sect i ons */
. const : > M0RAM, PAGE = 1
. bss : > M1RAM, PAGE = 1
. st ack : > M1RAM, PAGE = 1
. sysmem : > M0RAM, PAGE = 1
/ * 32- bi t dat a sect i ons */
. vect or s : > PI EVT, PAGE = 1
. ebss : > L0L1RAM, PAGE = 1
. econst : > L0L1RAM, PAGE = 1
. esysmem: > L0L1RAM, PAGE = 1
. boot > BOOT
{
- l r t s2800_ml . l i b<boot . obj > ( . t ext )
}
}
SISTEMAS EMPOTRADOS 196
Code Composer
Fichero de descripcin del enlazado *.map
******************************************************************************
TMS320C2000 COFF Li nker PC Ver si on 3. 03
******************************************************************************
>> Li nked Wed Oct 01 13: 16: 27 2003
OUTPUT FI LE NAME: <. / Debug/ Rel oj . out >
ENTRY POI NT SYMBOL: " _c_i nt 00" addr ess: 003f 8000
MEMORY CONFI GURATI ON
name or i gi n l engt h used at t r f i l l
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PAGE 0: RESET 00000000 00000002 00000002 R
BOOT 003f 8000 00000080 00000046 R
PROG 003f 8080 00001f 80 000016e1 R
PAGE 1: M0RAM 00000000 00000400 00000154 RW
M1RAM 00000400 00000400 00000400 RW
PI EVT 00000d02 000000f e 0000004e RW
L0L1RAM 00008000 00002000 00000da1 RW
SISTEMAS EMPOTRADOS 197
Code Composer
Fichero de descripcin del enlazado *.map
SECTI ON ALLOCATI ON MAP
out put at t r i but es/
sect i on page or i gi n l engt h i nput sect i ons
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
. r eset 0 00000000 00000002
00000000 00000002 r t s2800_ml . l i b : boot . obj ( . r eset )
. boot 0 003f 8000 00000046
003f 8000 00000046 r t s2800_ml . l i b : boot . obj ( . t ext )
. ci ni t 0 003f 8080 0000013c
003f 8080 0000000e r t s2800_ml . l i b : exi t . obj ( . ci ni t )
003f 808e 0000000a : _l ock. obj ( . ci ni t )
003f 8098 000000f 7 : def s. obj ( . ci ni t )
003f 818f 00000028 : l owl ev. obj ( . ci ni t )
003f 81b7 00000004 : memor y. obj ( . ci ni t )
003f 81bb 00000001 - - HOLE- - [ f i l l = 0]
. t ext 0 003f 81bc 000015a5
003f 81bc 0000004b r t s2800_ml . l i b : exi t . obj ( . t ext )
003f 8207 00000009 : _l ock. obj ( . t ext )
003f 8210 0000005f CLOCK. obj ( . t ext )
s, CGMXCLK = 4.9 MHz 1,6 3,3 6,5 13,0 26,0 416,7 1666,7 6666,7
TBR2-TBR0 111 110 101 100 011 010 001 000
/* Tick de 1.66ms, 600Hz
Se supone seleccionado el reloj externo, no el PLL (BCS = 0)
CGMXCLK = 4.9152 MHz. Divisor de 8192 */
TBR2=0; TBR1=0; TBR0=1;
/* Activacion de las interrupciones y del TBM */
TBON=1;
TBIE=1;
asm cli ;
SISTEMAS EMPOTRADOS 214
Realizacin de un reloj (68HC08)
Contador de ticks TBI a 1.66 ms
Variable global
Rango/monotona: depende del tamao
2 bytes (TBI a 1.66 ms) => 109 segundos
4 bytes (TBI a 1.66 ms) => 82 das
El incremento de una variable de 2 bytes ms rpido que 4 bytes
Por ejemplo:
static unsigned int tick_counter ;
/* 2 bytes
desbordamiento en 109 segundos
si TBI 1.66 ms */
SISTEMAS EMPOTRADOS 215
Realizacin de un reloj (68HC08)
Rutina de interrupcin
Rearme de la interrupcin
Incremento del contador
interrupt 17 vector de interrupcin del TBM
void interrupt 17 Tick (void) {
TACK = 1 ;
tick_counter ++ ;
}
SISTEMAS EMPOTRADOS 216
Realizacin de un reloj (68HC08)
Funciones de manejo y lectura
/* clock.h */
#ifndef clock_h
#define clock_h
extern void Reset_Clock (void) ;
/* inicializacion y puesta a cero del contador */
extern void Start_Clock (void) ;
/* Puesta en marcha del reloj */
/* arranque de la interrupcion periodica del TBM */
extern void Stop_Clock (void) ;
/* Parada del reloj */
/* deshabilitacion de la interrupcion */
extern unsigned int Get_Time (void) ;
/* devuelve el valor del contador (tiempo) */
#endif
SISTEMAS EMPOTRADOS 217
Realizacin de un reloj (TMS320F2812)
Estructura de uno de los TIMERs (TMER 0)
SISTEMAS EMPOTRADOS 218
Realizacin de un reloj (TMS320F2812)
Utilizacin del Timer0
SYSCLKOUT = 15 MHz
voi d Reset _Cl ock ( voi d) {
asm( " set c I NTM ; Mask gl obal i nt er r upt s" ) ;
asm( " eal l ow ; Enabl e accesses t o PI E cont r ol r egi st er s" ) ;
TI MER0TCR = 0x0010 ; / * Det ener en TI MER0 */
TI MER0TPR = 14 ; / * 14 + 1 t i cks de SYSCLKOUT */
/ * Cada t i ck del TI MER0 = 1 mi cr osegundo */
TI MER0PRD = 9999 ; / * Per i odo = 10000 t i cks = 10 ms */
PI EI ER1 = 0x40; / * Enabl e PI E i nt 1. 7 */
PI ECTRL | = 1; / * Habi l i t aci on gl obal del PI E */
t i ck_count er = 0 ;
TI MER0TCR = 0xC020 ; / * TI F = 1 bor r ado i ni ci al del f l ag */
/ * TI E = 1 habi l i t aci n de l a i nt er r upci n */
/ * TRB = 1 r ecar ga del t i mer */
/ * TSS = 0 TI MER0 en mar cha */
I ER = 0x01 ; / * Habi l i t aci on de l a I NT1 */
asm( " cl r c I NTM ; Enabl e gl obal i nt er r upt s" ) ;
asm( " edi s ; Di sabl e accesses t o PI E cont r ol r egi st er s" ) ;
r et ur n;
}
i nt er r upt voi d Ti ck ( voi d) {
t i ck_count er ++ ;
PI EACK = 0x01; / * Acknowl edge PI E gr oup 1 i nt */
r et ur n ;
}
SISTEMAS EMPOTRADOS 219
MEDIDA DE INTERVALOS
Medida basada en un reloj
En el 68HC08 o en el TMS320F2812
t1 = Get_Time () ; /* instante de inicio */
/* espera hasta que se cumpla la condicion de fin */
...
t2 = Get_Time () ; /* instante de fin */
duracion_intervalo = t2 - t1 ;
t
t1 t2
t
[ ]
Lectura
tiempo
t = t2 - t1
Lectura
tiempo
SISTEMAS EMPOTRADOS 220
MEDIDA DE INTERVALOS
Caractersticas de funcionamiento
Funciona con reloj no montono
Periodos menores que el tiempo de desbordamiento
Ejemplo
Espera pasando por desbordamiento
cuenta final t2 = $00EF
cuenta inicial t1 = $FFF0
intervalo t = t2 - t1 = $00FF
t2 = 0000 0000 1110 1111
t1 = 1111 1111 1111 0000
- t1 = 0000 0000 0001 0000
t2 + (-t1) = 0000 0000 1111 1111
SISTEMAS EMPOTRADOS 221
MEDIDA DE INTERVALOS
Medida basada en un temporizador (timer)
En el 68HC08: utilizacin de los IC de los TIM
Ejemplo: Medida de la anchura de un pulso (TIM1, CHANNEL 0)
voi d i nt er r upt 4 Pul so ( voi d) {
i f f l anco_subi da {
i nst ant e_subi da = T1CH0 ;
f l anco_subi da = 0 ;
T1SC0 &= 0x00 ; / * Bor r ado del r egi st r o, CH0F = 0 */
ELS0B_1 = 1 ; / * Sensi bl e a l a baj ada */
CH0I E_1 = 1 ; / * Act i var i nt er r upci on */
}
el se {
i nst ant e_baj ada = T1CH0 ;
T1SC0 &= 0x00 ; / * Bor r ado del r egi st r o, CH0F = 0 */
/ * I C desact i vado */
/ * I nt er r upci on desact i vada */
dur aci on = i nst ant e_baj ada - i nst ant e_subi da ;
f i n_medi da = 1 ;
}
}
voi d I ni ci a_Mi de_Pul so ( voi d) {
f i n_medi da = 0 ;
f l anco_subi da = 1 ;
T1SC0 &= 0x00 ; / * Bor r ado del r egi st r o, CH0F = 0 */
ELS0A_1 = 1 ; / * Sensi bl e a l a subi da */
CH0I E_1 = 1 ; / * Act i var i nt er r upci on */
}
voi d Mai n ( voi d) {
. . .
I ni ci a_Mi de_Pul so ( ) ;
whi l e ! ( f i n_medi da) ;
. . .
/ * uso de l a medi da */
}
SISTEMAS EMPOTRADOS 222
ACTIVACIN DE ACCIONES PERIDICAS
Ejemplo bucle de control
cmo conseguir que el bucle se ejecute peridicamente con un periodo
prefijado?
Pb: El cdigo ejecutado vara de una iteracin a otra:
interrupciones
E/S
composicin condicional
Dos posibilidades
Retrasos
Interrupcin peridica
while(1){
leer_entradas();
calcular_salidas();
emitir_salidas();
?????
}
T
SISTEMAS EMPOTRADOS 223
ACTIVACIN PERIDICA: ESPERAS
Programacin de
un bucle peridico
con un retraso:
Retraso basado en el reloj del sistema
68HC08: delay_until basado en el TBM
Duracin del periodo = nmero entero de ticks
Si tick = 1.66 ms Periodo 10 ms 9.66 ms (6 ticks) 11.62 ms (7
ticks)
TMS320F2812: delay_until basado en el TIMER0
Mayor flexibilidad en la eleccin del tick
voi d Per i odi ca ( voi d) {
unsi gned i nt per i odo = 25 ; / * per i odo expr esado en t i cks */
unsi gned i nt si gui ent e ;
Reset _Cl ock ( ) ;
St ar t _Cl ock ( ) ;
si gui ent e = Get _Ti me ( ) ;
whi l e( 1) {
Act i vi dad_Per i odi ca ( ) ;
si gui ent e += per i odo ;
del ay_unt i l ( si gui ent e) ;
}
}
SISTEMAS EMPOTRADOS 224
ACTIVACIN PERIDICA: ESPERAS
Funcin de espera en el mdulo de reloj
Reloj no montono =>
Esperas menores que el tiempo de desbordamiento
La condicin de espera es: (T != tick_counter)
La condicin se debe verificar siempre que la cuenta del reloj cambie
Reloj montono =>
La condicin de espera es: (T > tick_counter)
La condicin no es preciso verificarla en cada tick
void delay_until (unsigned int T) {
while (T != tick_counter)
asm WAIT ;
} /*68HC08*/
void delay_until (unsigned int T) {
while (T != tick_counter)
asm ("IDLE") ;
} /*TMS320F2812*/
SISTEMAS EMPOTRADOS 225
ACTIVACIN PERIDICA: ESPERAS
68HC08
Se detiene la CPU para disminuir
el consumo: WAIT
WAIT = espera a la llegada de
una interrupcin
Desenmascara las
interrupciones
Cuando llega una interrupcin se
activa la CPU
Se pasa a ejecutar la rutina
de interrupcin
Al acabar la rutina de interrupcin
contina la ejecucin de la
aplicacin
TMS320F2812
Se detiene la CPU para disminuir
el consumo: IDLE
IDLE = espera a la llegada de una
interrupcin
Cuando llega una interrupcin se
activa la CPU
INTM=0 Se pasa a
ejecutar la rutina de
interrupcin
INTM=1 Se ejecuta el
programa en la siguiente
instruccin del IDLE
WAIT
tick
SISTEMAS EMPOTRADOS 226
ACTIVACIN PERIDICA: ESPERAS
Problemas con el tiempo no montono
Por qu no se hace una comparacin de >?
Ejemplo: Contador de 1 byte
siguiente += periodo => siguiente = 1
La condicin de espera es: (siguiente > tick_counter)
253 254 255 0
t
siguiente
1 2 3
Tick_counter = 253 > siguiente = 1
la aplicacin se activa inmediatamente
SISTEMAS EMPOTRADOS 227
ACTIVACIN PERIDICA: ESPERAS
Problemas con el tiempo no montono: comparacin de igualdad
Ejemplo: Contador de 1 byte
siguiente += periodo => siguiente = 252
Dos casos
Funcionamiento normal
La actividad peridica no ha concluido antes de la siguiente activacin
248 249 250 251
t
Tick_counter = 253 > siguiente
tick_counter = 252 dentro de 254 ticks
siguiente
252 253 254
SISTEMAS EMPOTRADOS 228
ACTIVACIN PERIDICA: INTERRUPCIONES
Activacin basada en los OCs
HC08 y frecuencia de bus = 2.4575
MHz
periodo = 2s => IMPOSIBLE!!
El periodo no puede ser mayor
que 1706.7 ms (tiempo mximo
de desbordamiento del timer pral.)
periodo = 10 ms
tick del timer = 407 ns
periodo < 26.7 ms OK
10 ms 24.570 ticks (9.9999 ms)
#i ncl ude t i mer _OCs. h
voi d Per i odi ca ( voi d) {
unsi gned i nt per i odo = 24570 ;
I ni t _OC( per i odo) ;
whi l e( 1) {
act i vi dad ( ) ;
comi enzo = 0 ;
whi l e ( comi enzo == 0)
; / * esper a i nt er r upci on */
}
}
SISTEMAS EMPOTRADOS 229
ACTIVACIN PERIDICA: INTERRUPCIONES
La rutina de interrupcin
#i ncl ude t i mer _OCs. h
st at i c unsi gned i nt Per i odo ;
voi d I ni t _OC( unsi gned i nt N_Ti cks)
{
Per i odo = N_Ti cks ;
MS0B_1 = 0 ; MS0A_1 = 1 ;
TSTOP_1 = 0 ; / * Ar r anca el TI M1 */
T1CH0 = T1CNT + Per i odo ;
comienzo = 0 ;
CH0I E_1 = 1 ; / * Habi l i t aci on de l a i nt er r upci on */
}
voi d i nt er r upt 4 Out put Compar e_Handl er ( voi d)
{
T1CH0 += Per i odo ;
aux = T1SC0 ; / * Lect ur a T1SC0 */
CH0F_1 = 0 ; / * Bor r ar el f l ag CH0F */
comienzo = 1 ;
}
/ * t i mer _OCs. h */
vol at i l e unsi gned char comi enzo ;
voi d I ni t _OC( unsi gned i nt N_Ti cks) ;
SISTEMAS EMPOTRADOS 230
ACTIVACIN PERIDICA: INTERRUPCIONES
Posibilidad de detectar desbordamientos de periodo
voi d i nt er r upt 4 Out put Compar e_Handl er ( voi d)
{
T1CH0 += Per i odo ;
aux = T1SC0 ;
CH0F_1 = 0 ; / * Bor r ar el f l ag CH0F */
i f ( comienzo)
desbordamiento_de_periodo() ;
el se
comienzo = 1 ;
}
SISTEMAS EMPOTRADOS 231
ACTIVACIN ESPORDICA
Generacin de un evento espordico basado en:
Un temporizador basado en un reloj
Un temporizador dedicado
t Instante
actual
Instante de
activacin
t
Activacin del
temporizador
Expiracin del
temporizador
SISTEMAS EMPOTRADOS 232
ACTIVACIN ESPORDICA
Mediante un temporizador basado en un reloj
El delay_until no puede utilizarse porque se detiene la aplicacin
Programacin de un temporizador
Permite la ejecucin de cdigo mientras se espera
La gestin se realiza dentro de la rutina de interrupcin del reloj
La aplicacin no se preocupa del temporizador
Comunicacin con la aplicacin mediante un bandern
Expiracin del temporizador
SISTEMAS EMPOTRADOS 233
ACTIVACIN ESPORDICA
Gestin mediante tres variables
Timer: instante temporal en que debe expirar el temporizador
Active_timer: bandern que indica si se ha activado el temporizador
TO: bandern que indica si ha expirado el timer
static char Active_Timer ;
static unsigned int Timer ;
static char TO ;
SISTEMAS EMPOTRADOS 234
ACTIVACIN ESPORDICA
La nueva rutina de interrupcin
#pragma interrupt_handler Tick
void Tick (void) {
TACK = 1 ;
tick_counter ++ ;
if (Active_Timer) /* gestion del temporizador */
if (Timer == tick_counter){
TO = 1 ;
Active_Timer = 0 ;
}
}
SISTEMAS EMPOTRADOS 235
ACTIVACIN ESPORDICA
Manejo del temporizador desde la aplicacin
Programacin de la
espera no bloqueante
Consulta del bandern
Eliminacin de la espera
void Set_Timer (unsigned int Ticks) {
Timer = tick_counter + Ticks ;
TO = 0 ;
Active_Timer = 1 ;
}
char Time_Out (void) {
return TO ;
}
void Remove_Timer (void) {
Active_Timer = 0 ;
TO = 0 ;
}
SISTEMAS EMPOTRADOS 236
ACTIVACIN ESPORDICA
Mediante un temporizador dedicado
Utilizacin de los OCs
Ejemplo: Realizacin de un PWM
Se ver en prcticas
SISTEMAS EMPOTRADOS 237
SISTEMAS EMPOTRADOS
SISTEMAS DISCRETOS
SECUENCIALES
SISTEMAS EMPOTRADOS 238
INTRODUCCIN
Sistema discreto secuencial: sistema dinmico cuyo estado slo puede
adquirir un conjunto discreto de valores
Sistemas
Continuos
o Analgicos
T
I
E
M
P
O
Sistemas Discretos
Secuenciales
Asncronos
Sistemas de
Tiempo Discreto
o Muestreados
Sistemas Discretos
Secuenciales
Sncronos
CONTINUO DISCRETO
C
O
N
T
I
N
U
O
D
I
S
C
R
E
T
O
ESTADO
SISTEMAS EMPOTRADOS 239
INTRODUCCIN
Tiempo continuo (sistemas asncronos) El estado del sistema puede
cambiar en cualquier instante en funcin de las entradas.
Tiempo discreto (sistemas sncronos) El estado del sistema slo
cambia ante la llegada de un evento de sincronizacin
Seal de reloj cada T segundos se leen las entradas y se evoluciona en
funcin de stas y del estado.
Evento de sincronizacin validacin, interrupcin perifrico, ...
Herramientas formales:
Autmatas de estados finitos
Redes de Petri
Eventos discretos
Evento discreto: ocurrencia de una caracterstica
en la evolucin de una seal (flanco de subida,
paso por un cierto nivel, pulso, llegada de un dato, ).
SISTEMAS EMPOTRADOS 240
CONCEPTO DE AUTMATA. MODELOS
Modelo de MEALY
Mquina de MEALY: Una mquina secuencial de tipo
MEALY es una 5-tupla M=(Q,I,O,,) donde:
Q es un conjunto finito de estados
I es un conjunto finito de entradas (simbolos de )
O es un conjunto finito de salidas (simbolos de )
: QxI Q es la funcin de transicin de estado
: QxI O es la funcin de salida
I O
Q
y
x
1
2
x
1
1 1
1 1
0
1
0
1
0
1
0
1 0
1
+
SISTEMAS EMPOTRADOS 243
CONCEPTO DE AUTMATA. MODELOS
Modelo MOORE
Q = {q00,q01,q10,q11} donde
q00 estado de no acarreo con salida y=0
q01 estado de no acarreo con salida y=1
q10 estado de acarreo con salida y=0
q11 estado de acarreo con salida y=1
Funcin de transicin de estado:
(q00/q01 ,00) = q00 (q00/q01 ,11) = q10
(q10/q11 ,00) = q01 (q10/q11 ,11) = q11
(q00/q01 ,01/10) = q01 (q10/q11,01/10) = q10
Funcin de salida:
(q00/q10) = 0 (q01/q11) = 1
SISTEMAS EMPOTRADOS 244
AUTMATAS. REPRESENTACIN Y MODELADO
Tabla de transicin
Representacin tabular de las funciones de transicin de estado y
salida
Ejemplo: Sumador binario serie de 1 bit
Modelo MEALY >> Modelo MOORE
00 01 11 10 00 01 11 10 O
q0 q0,0 q0,1 q1,0 q0,1 q00 q00 q01 q10 q01 0
q1 q0,1 q1,0 q1,1 q1,0 q01 q00 q01 q10 q01 1
q10 q01 q10 q11 q10 0
q11 q01 q10 q11 q10 1
SISTEMAS EMPOTRADOS 245
AUTMATAS. REPRESENTACIN Y MODELADO
Diagrama de transicin
Grafo cuyos nodos representan estados y los arcos cambios de estado.
Ejemplo: Sumador binario
serie de 1 bit
Modelo MEALY
Modelo MOORE
q
0
q
1
00/0 11/1
11/0
00/1
01,10/0 01,10/1
00
11
10,01
0
0
0
1
,
1
01
1
0
0
1
1
0
1
,
1
0
00
11
01,10
q
00
/0
q
10
/0
q
11
/1
q
01
/1
SISTEMAS EMPOTRADOS 246
REDUCCIN DE AUTOMATAS
Autmatas completamente especificados
Una vez construido un modelo:
Es posible reducir el nmero de estados?
coste de una realizacin
manejabilidad del modelo
Dos estados equivalentes son INDISTINGUIBLES
El comportamiento del autmata a partir de cualquiera de los dos
estados es el mismo.
Estados equivalentes: Dado un autmata de estados
finitos A=(Q,I,O,,), dos estados qi, qj Q se dicen
equivalentes (qi,e) = (qj,e) e I y (qi) =(qj).
(MEALY (qi,e) = (qj,e) e I)
SISTEMAS EMPOTRADOS 247
REDUCCIN DE AUTMATAS
Ejemplo: Reconocedor de cadenas 101
I: x={0,1}
O: y={0,1} donde
0 cadena
no reconocida
1 cadena reconocida
Rec.(101)
x y
...111011011 ...001001000
NADA 1 10 101
0/0 1/0
1/0
1/0 0/0 1/1
0/0
0/0
Estados: NADA nada reconocido
1 subcadena 1 reconocida
10 subcadena 10 reconocida
101 cadena 101 reconocida
SISTEMAS EMPOTRADOS 248
REDUCCIN DE AUTMATAS
0 1 0 1
NADA NADA 1 0 0
1 10 1 0 0
10 NADA 101 0 1
101 NADA 1 0 0
1
10
101
NADA
1 10
NADA
10
EQ.
NADA
10
101 --> NADA
SISTEMAS EMPOTRADOS 249
REDUCCIN DE AUTMATAS
0 1 0 1
NADA NADA 1 0 0
1 10 1 0 0
10 NADA NADA 0 1
NADA 1 10
0/0 1/0
1/0 0/0
1/1
0/0
SISTEMAS EMPOTRADOS 250
REDUCCIN DE AUTMATAS
Autmatas incompletamente especificados
Ejemplo: Detector de coches en sentido contrario
Especificar un sistema que permita detectar vehculos que circulan en
direccin contraria por una autova. Dicho sistema tendr dos entradas e1 y
e2 que sern las seales de dos clulas fotoelctricas situadas a una
distancia menor que que la longitud del vehculo y la separacin entre
vehculos.
e1
e2
q1 q2 q3 q4
q5 q6 q7
SISTEMAS EMPOTRADOS 251
REDUCCIN DE AUTMATAS
00 01 11 10 S
q1 q1 q5 - q2 1
q2 - - q3 q2 1
q3 - q4 q3 - 1
q4 q1 q4 - - 1
q5 - q5 q6 - 0
q6 - - q6 q7 0
q7 q1 - - q7 0
Estados compatibles: Dado un autmata de
estados finitos A=(Q,I,O,,) incompletamente
especificado, se dice que dos estados
qi, qj Q son compatibles qi ~ qj
(1) e I tal que (qi,e) y (qj,e) estn
especificadas (qi,e) = (qj,e)
(qi,e) ~ (qj,e)
(2) (qi) = (qj) si ambas estn
especificadas
SISTEMAS EMPOTRADOS 252
REDUCCIN DE AUTMATAS
Relacin de compatibilidad
Reflexiva, simtrica
NO transitiva
Clase de compatibilidad
Elementos que cumplen la propiedad transitiva
Los estados de una clase de compatibilidad pueden llegar a ser
equivalentes
Reduccin
Bsqueda de clases de compatibilidad
Especificacin estados = problema de cobertura
SISTEMAS EMPOTRADOS 253
REDUCCIN DE AUTMATAS
Obtencin de compatibles mximos
Construccin de la tabla de parejas compatibles
Algoritmo
(1) Crear una lista de compatibles (L) con los pares de elementos compatibles definidos por
la columna k (la que est ms a la derecha con al menos un par compatible)
(2) Para i:= k - 1 hasta i = 1
Si C
i
entonces
2.1 Realizar la interseccin entre C
i
y los elementos de L
2.2 Aadir a L los compatibles formados por el resultado de las intersecciones
no nulas ms el elemento i, as como los pares de compatibles definidos
por la columna i-sima
2.3 Suprimir de L los conjuntos contenidos en otros
(3) Aadir a L todos los elementos del conjunto de partida que no estn contenidos en
ningn elemento de L
SISTEMAS EMPOTRADOS 254
REDUCCIN DE AUTMATAS
C1 C2 C3
q1 x
q2 x x
q3 x
q4 x
q5 x
q6 x
q7 x
6 (q6 q7)
5 (q6 q7) (q5 q6) (q5 q7) (q5 q6 q7)
4 (q5 q6 q7)
3 (q5 q6 q7) (q3 q4)
2 (q5 q6 q7) (q3 q4) (q2 q4) (q2 q3) (q5 q6 q7) (q2 q3 q4)
1 (q5 q6 q7) (q2 q3 q4) (q1 q2)
q1 q2 q3
q4
q5 q6
q2
q3
q4
q5
q6
q7
SISTEMAS EMPOTRADOS 255
REDUCCIN DE AUTMATAS
q1 C1 (sistema en reposo)
q2,q3,q4 C2 (coche en sentido permitido)
q5,q6,q7 C3 (coche en sentido contrario)
00 01 11 10 S
C1 C1 C3 - C2 1
C2 C1 C2 C2 C2 1
C3 C1 C3 C3 C3 0
C1/1 C3/0 C2/1
00,11 01,11,10
10
01
00
00
01,11,10
SISTEMAS EMPOTRADOS 256
AUTMATAS. IMPLEMENTACIN
Entradas
Eventos de sincronizacin espera a su llegada para que evolucione
el sistema
Reloj Autmata implementado como actividad peridica
Sincronizacin Interrupcin
Entradas de nivel
Lectura asncrona
Las entradas se leen conforme se vayan necesitando en el tratamiento
PB: aleatoriedades
Lectura sncrona
Se leen todas las entradas a la vez
Memoria Imagen
SISTEMAS EMPOTRADOS 257
AUTMATAS. IMPLEMENTACIN
Ejemplo aletoriedad
e1
e2
0 1
0 1
01!?
i f ( e1) {
i f ( e2) {. . . }
el se {. . . }}
el se {
i f ( e2) {. . . }
el se {. . . }}
SISTEMAS EMPOTRADOS 258
AUTMATAS. IMPLEMENTACIN
Salidas
Impulsionales o acciones
Asociadas a cambios de estados / Modelo MEALY
De nivel o mantenidas
Asociadas a estados / Modelo MOORE
Generacin
En el instante en que se calculan (asncrona)
Todas al final del tratamiento (sncrona)
er
es
em
en
er/set(oj)
es/set(oj)
en/clear(oj)
em/clear(oj)
qi/oj qi
SISTEMAS EMPOTRADOS 259
AUTMATAS. IMPLEMENTACIN
Ej.: Detector sentido contrario
Moore
Asncrono
Pb. cdigo no estructurado => difcil de poner a punto y mantener
CICLO DE TRATAMIENTO
voi d mai n ( voi d) {
C1:
Gener a ( NO_ALARMA) ;
Ent r ada = Leer _Ent r ada ( ) ;
i f ( Ent r ada == I 01) got o C3 ;
i f ( Ent r ada == I 10) got o C2 ;
got o C1 ;
C2:
Gener a ( NO_ALARMA) ;
Ent r ada = Leer _Ent r ada ( ) ;
i f ( Ent r ada == I 00) got o C1 ;
got o C2 ;
C3:
Gener a ( ALARMA) ;
Ent r ada = Leer _Ent r ada ( ) ;
i f ( Ent r ada == I 00) got o C1 ;
got o C3 ;
r et ur n ;
}
C1/1 C3/0 C2/1
00,11 01,11,10
10
01
00
00
01,11,10
SISTEMAS EMPOTRADOS 260
AUTMATAS. IMPLEMENTACIN
Ciclo de tratamiento
Ej.: Deteccin
sentido contrario
MOORE
Entradas nivel
muestreadas
(sncronas)
Salidas
asncronas
voi d mai n ( voi d)
{
whi l e ( TRUE)
{
Ent r ada = Leer _Ent r ada ( ) ;
swi t ch ( Est ado)
{
case C1 : Gener a ( NO_ALARMA) ;
swi t ch ( Ent r ada) {
case I 01 : Est ado = C3 ; br eak ;
case I 10 : Est ado = C2 ; br eak ;
def aul t : }
br eak ;
case C2 : Gener a ( NO_ALARMA) ;
i f ( Ent r ada == I 00) Est ado = C3 ;
br eak ;
case C3 : Gener a ( ALARMA) ;
i f ( Ent r ada == I 00) Est ado = C1 ;
br eak ;
}
}
r et ur n ;
}
SISTEMAS EMPOTRADOS 261
AUTMATAS. IMPLEMENTACIN
Ej: reconocedor de cadenas: MEALY, Evento de sincronizacin, Salidas
sncronas
voi d mai n ( voi d)
{
whi l e ( TRUE)
{
Esper a_Si ncr oni smo ( ) ;
Ent r ada = Leer _Bi t ( ) ;
swi t ch ( Est ado)
{
case NADA : i f ( Ent r ada==0) {Sal i da=0; Est ado=NADA; }
el se i f ( Ent r ada==1) {Sal i da=0; Est ado=E1; }
br eak ;
case E1 : i f ( Ent r ada==0) {Sal i da=0; Est ado=E10; }
el se i f ( Ent r ada==1) {Sal i da=0; Est ado=E1; }
br eak ;
case E10 : i f ( Ent r ada==0) {Sal i da=0; Est ado=NADA; }
el se i f ( Ent r ada==1) {Sal i da=1; Est ado=E101; }
br eak ;
case E101 : i f ( Ent r ada==0) {Sal i da=0; Est ado=NADA; }
el se i f ( Ent r ada==1) {Sal i da=0; Est ado=E1; }
}
Gener a ( Sal i da) ;
}
r et ur n ;
}
NADA 1 10
0/0 1/0
1/0 0/0
1/1
0/0
SISTEMAS EMPOTRADOS 262
AUTMATAS. IMPLEMENTACIN
Reconocedor de cadenas con entrada de validacin
Implementacin en el HC08
voi d Esper a_Si ncr oni smo ( voi d)
{
char si nc = 0 ;
whi l e ( ! si nc) asmWAI T ;
}
voi d i nt er r upt 2 Manej ador _I RQ ( voi d)
{
si nc = 1 ;
}
char Leer _Bi t ( voi d)
{
r et ur n ( char ) PTC0 ;
}
0/1
Salida
PTC0
I RQ
SISTEMAS EMPOTRADOS 263
AUTMATAS. IMPLEMENTACIN
Autmata sncrono peridico
P.e. basado en el TBM
voi d mai n ( voi d)
{
I ni ci al i zaci on ( ) ;
Reset _Cl ock ( ) ;
St ar t _Cl ock ( ) ;
Si gui ent e = Get _Ti me ( ) ;
whi l e ( TRUE)
{
/ * Esper a_Si ncr oni smo */
Si gui ent e = Si gui ent e + T ;
del ay_unt i l ( Si gui ent e) ;
Ent r ada = . . . ;
swi t ch ( Est ado)
{
case . . . : . . .
. . .
}
Gener a ( Sal i da) ;
}
r et ur n ;
}
SISTEMAS EMPOTRADOS 264
AUTMATAS. IMPLEMENTACIN
Time-out: TOi
Implementacin
ESPERA
TIME-OUT
e
i
ESPERA
e
i
/Remove_Timer() Set_Timer(Toi)
Time_Out()
SISTEMAS EMPOTRADOS 265
RdP. INTRODUCCIN
Ejemplo: Carros que van y vienen
sincronizados
Al pulsar M ambos carros se
desplazan a la derecha. El regreso lo
hacen simultneamente cuando
ambos carros se encuentren en el
extremo derecho.
Autmata:
C
M
A
B
D
l r
1 1
l
r
2 2
T
T
1
2
1
2
3 4
5
MAC
B
6 7
l
1
l
2
r
2
r
1
l
1
l
2
,
r
1
r
2
,
D
A
C
D
B
A C
SISTEMAS EMPOTRADOS 266
RdP. INTRODUCCIN
A C E
13
14 15
C E A E
A C
r
1
r
2
r
3
l
1
l
2
l
3
A C E
10 11 12
9
1
2
B F D
3 4 5
D
F F D B
B
6 7 8
F
D
B
MACE
l
2
, l
3
l
1
, l
3
l
1
, l
2
l
1
, l
2
, l
3
r
2
, r
3
r
1
, r
3
r
1
, r
2
r
1
, r
2
, r
3
Tres carros
SISTEMAS EMPOTRADOS 267
RdP. INTRODUCCIN
Para N carros 2
N+1
- 1 estados
Problemas del modelado con autmatas de estados finitos de sistemas
con evoluciones paralelas (sistemas concurrentes):
conduce a descripciones complejas (gran nmero de estados)
no permite modificaciones locales del comportamiento del sistema
poca flexibilidad (Ej.: uno de los carros vuelve sin sincronizarse)
SISTEMAS EMPOTRADOS 268
RdP. INTRODUCCIN
Una red de Petri (RdP) es un grafo orientado con dos clases de nodos:
lugares (circunferencias) y transiciones (barras). Los arcos unen un lugar
con una transicin o viceversa.
Un lugar pude contener un nmero positivo o nulo de marcas. Distribucin
de marcas en los lugares, marcado estado de la RdP.
Se asocian entradas y salidas a lugares y transiciones (p.e.: salida lugar
marcado; entrada transicin)
p
3
p
2
t
2
t
3
t
4
p
5
p
4
t
1
p
1
SISTEMAS EMPOTRADOS 269
RdP. INTRODUCCIN
Evolucin de una RdP:
Una transicin est sensibilizada si todos sus lugares de entrada estn
marcados
Transicin sensibilizada => puede disparar
Disparo => evolucin del estado: Retirada de una marca de cada lugar
de entrada, depsito de una marca en cada lugar de salida
t
3
t
2
t
1
t
1
t
2
t
3
SISTEMAS EMPOTRADOS 270
RdP. INTRODUCCIN
Ejemplo: Carros que van y vienen sincronizados
B
r
1
D
r
2
A
l
1
C
l
2
M
2 carros
SISTEMAS EMPOTRADOS 271
RdP. INTRODUCCIN
r
B
1
D
r
2
A
l
1
C
l
2
F
r
3
E
l
3
M
3 carros
SISTEMAS EMPOTRADOS 272
RdP. FORMALIZACIN Y CLASIFICACIN
Red de Petri (RdP): es una cudrupla R = {P, T, , } tal que
P es un conjunto finito y no vaco de lugares
T es un conjunto finito y no vaco de transiciones
P T =
:P x T N es la funcin de incidencia previa
:T x P N es la funcin de incidencia posterior
RdP marcada: es un par {R, M
o
}, donde R es una RdP y M
o
es un
marcado inicial.
SISTEMAS EMPOTRADOS 273
RdP. FORMALIZACIN Y CLASIFICACIN
Representacin grfica
Arco de p
i
a t
j
(p
i
,t
j
) 0
Arco de t
k
a p
i
(t
k
,p
i
) 0
Arcos etiquetados con un peso = (p
i
,t
j
) (t
k
,p
i
)
Representacin matricial
Matriz de incidencia previa: C
-
= [c
ij
-
] donde c
ij
-
= (p
i
,t
j
)
Matriz de incidencia posterior: C
+
= [c
ij
+
] donde c
ij
+
= (t
j
,p
i
)
Matriz de incidencia: C = C
+
- C
-
p
3
p
2 t
2
t
3
p
4
t
1
p
1
2
2
=
2 1 0
0 1 2
1 0 1
1 0 1
4
3
2
1
p
p
p
p
C
SISTEMAS EMPOTRADOS 274
RdP. FORMALIZACIN Y CLASIFICACIN
Clases de RdP
RdP ordinaria: sus funciones de incidencia slo pueden tomar los
valores 0 y 1: (p,t) {0,1}, (t,p) {0,1}
RdP binaria: M(p) 1 pP
RdP generalizada (RdPG): las funciones de incidencia pueden tomar
valores en todos los nmeros naturales => arcos con peso
RdP con arcos inhibidores:
SISTEMAS EMPOTRADOS 275
RdP. INTERPRETACIN
Entradas (eventos discretos,
condiciones lgicas externas), salidas
(eventos discretos, salidas a nivel),
cdigo asociado a las transiciones.
Acc. impulsionales asociadas a
transiciones => disparo
instantneo
Cdigo/actividades en
transiciones => disparo no
instantneo
a
b
c
evento
s
seal
set(s)
a b c
a
b
c
a b c
----
----
---- w
----
----
SISTEMAS EMPOTRADOS 276
RdP. EJEMPLOS DE MODELADO
Ejemplo: Carros con
va comn
Dos carros A y B transportan cierto material desde los puntos de carga L
A
y
L
B
, respectivamente, hasta el punto de descarga D. Los diferentes
movimientos son controlados mediante las seales l
A
, l
B
, r
A
, r
B
. Si A est en
L
A
y el pulsador M
A
est oprimido, comienza un ciclo L
A
-U-L
A
:
espera eventual en W
A
hasta que la zona comn a los dos carros est
libre, con el fin de evitar colisiones;
espera obligatoria en U hasta M
U
(pulsador de fin de descarga).
El carro B tiene un funcionamiento similar pero, en caso de demanda
simultnea de la va comn, B es prioritario. El recorrido W
A
-U o W
B
-U se
establece por un cambio de agujas controlado por la accin G.
B
M
L
L
W
A
G
U
A
B
A
A
A
l
r
W
B
B
B
r
B
l
M
A
M
U
SISTEMAS EMPOTRADOS 277
RdP. EJEMPLOS DE MODELADO
Transiciones -> entradas de
sensores
Lugares -> seales de salida
M
A
M
B
M
U
U
G, l
A
W
A
r
A
G, r
A
G
l
A
L
A
W
A
W
B
r
B
W
B
r
B
U
M
U
l
B
W
B
l
B
L
B
SISTEMAS EMPOTRADOS 278
RdP. EJEMPLOS DE MODELADO
Ejemplo: Productor-consumidor
Se desea disear un sistema de transmisin de datos con las siguientes
caractersticas:
El sistema recibe datos (8 bits) de un puerto paralelo (p.e. PTB del
68HC08), pulso de validacin con un IC.
Cada dato es procesado e introducido en un buffer con capacidad para
8 datos
Los datos son sacados del buffer con poltica FIFO y enviados por lnea
serie (SCI) mediante un sencillo protocolo con reenvo
IC
PTB
SCI
T
ACK/NACK
DATO
SISTEMAS EMPOTRADOS 279
RdP. EJEMPLOS MODELADO
P1
P2
P3
P4
C1
C2
C3
C4
C5
MUTEX
H
O
TP1
TP2
TP3
TP4
TC1
TC2
TC3
TC4
TC51
TC52
leer()
procesar()
meter()
sacar()
enviar()
llegada_dato
llegada_caracter
ACK
NACK
SISTEMAS EMPOTRADOS 280
RdP. IMPLEMENTACIN
Implementacin programada de una RdP: Es un programa o algoritmo
que simula el disparo de transiciones de la RdP, respetando la reglas de
evolucin del modelo terico.
Entradas
Eventos -> espera a su llegada para que evolucione el sistema
Muestreo / Interrupcin
Entradas de nivel
Lectura asncrona
Las entradas se leen conforme se vayan necesitando en el tratamiento
PB: aleatoriedades
Lectura sncrona
Se leen todas las entradas a la vez
Memoria Imagen
SISTEMAS EMPOTRADOS 281
RdP. IMPLEMENTACIN
Salidas
Impulsionales o acciones
Asociadas al disparo
de transiciones
De nivel o mantenidas
Asociadas a lugares
marcados
Generacin
En el instante en que
se calculan (asncrona)
Todas al final del
tratamiento (sncrona)
T1
T2
T3
s1,s2
s1
T1/activar(s1,s2)
T2/desactivar(s2)
T3/desactivar(s1)
SISTEMAS EMPOTRADOS 282
RdP. IMPLEMENTACIN
Cdigo
Asociado al disparo de transiciones
Disparo no instantneo
DI SPARO TRANSI CI N T:
Ret i r ar _Mar cas( Lugar es_de_ent r ada_de_T) ;
Cdi go_asoci ado ( T) ;
Poner _Mar cas( Lugar es_de_sal i da_de_T) ; }
SISTEMAS EMPOTRADOS 283
RdP. IMPLEMENTACIN
INTERPRETADA
CONCURRENTE
COMPILADA
SECUENCIAL
SISTEMAS EMPOTRADOS 284
VERIFICACIN EXHAUSTIVA
Ejemplo: Carros con va comn
1 aproximacin
NOTA: los arrays en C comienzan
siempre en
el ndice 0
t ypedef unsi gned char MARCADO[ NUMLUG] ;
MARCADO M ;
MARCADO Si g_M = {1, 1, 1, 0, . . . } ; . . .
voi d mai n ( voi d) {
I ni ci al i zaci on ( ) ;
whi l e ( TRUE) {
memcpy ( &M, &Si g_M, si zeof ( M) ) ;
Gener aci on_Sal i das ( M) ;
Lect ur a_Ent r adas ( &MA, &MB, . . . ) ;
/ * T0 */
i f ( M[ 0] >= 1) {
i f ( MA) {
Si g_M[ 0] - = 1 ; Si g_M[ 13] += 1 ;
}
}
/ * T1 */ . . .
/ * T2 */
i f ( ( M[ 2] >= 1) && ( M[ 3] >= 1) ) {
i f ( ~WB) {
Si g_M[ 3] - = 1 ; Si g_M[ 2] - = 1 ;
M[ 2] - = 1 ; / * conf l i ct o? */
Si g_M[ 5] += 1 ;
}
}
/ * T3 */ . . .
}
}
SISTEMAS EMPOTRADOS 285
VERIFICACIN EXHAUSTIVA
Caractersticas de la primera aproximacin:
Compilada
Se genera un programa cuyo flujo de control reproduce el comportamiento
de la RdP
Secuencial
Un solo proceso
Problemas
En cada ciclo de tratamiento se verifican todas las transiciones
Slo unas pocas estn sensibilizadas
Mucho cdigo
Cambio en la red => cambio en el cdigo
SISTEMAS EMPOTRADOS 286
VERIFICACIN EXHAUSTIVA
#def i ne NUMLUG 15
#def i ne NUMTRANS 14 . . .
unsi gned char M[ NUMLUG] = {1, 1, 1, 0, . . . } ;
unsi gned char Si g_M[ NUMLUG] = {1, 1, 1, 0, . . . } ;
/ *Est r uct ur a de dat os que codi f i ca l a RdP */
. . .
voi d mai n ( voi d) {
I ni ci al i zaci on ( ) ;
whi l e ( TRUE)
{
memcpy ( M, Si g_M, si zeof ( M) ) ;
Gener aci on_Sal i das ( M) ;
Lect ur a_Ent r adas ( &MA, &MB, . . . ) ;
f or ( T=0; T <= ( NUMTRANS- 1) ; T++) {
i f ( Sensi bi l i zada ( T) ) {
i f ( Condi ci on( T) ) {
Ret i r ar _Mar cas ( Si g_M, T) ;
Ret i r ar _Mar cas ( M, T) ;
Acci on ( T) ;
Poner _Mar cas ( Si g_M, T) ;
}
}
}
}
}
Ejemplo: Carros
con va comn
Implementacin
interpretada
SISTEMAS EMPOTRADOS 287
VERIFICACIN EXHAUSTIVA
Caractersticas:
Interpretada
Secuencial
El ciclo de tratamiento es independiente de:
la estructura de datos que codifique la red
la red concreta que se implemente => cdigo genrico
La ocupacin en memoria y prestaciones dependern en gran medida
de la estructura de datos utilizada para codificar la RdP
SISTEMAS EMPOTRADOS 288
VERIFICACIN EXHAUSTIVA
Estructura de datos de la red
Representacin basada en listas
Disminucin del tiempo de ejecucin
Incidencia previa para la sensibilizacin
Incidencia previa y posterior para la actualizacin del marcado
Manejo de listas
Memoria dinmica: basada en punteros
rutinas de librera de manejo de memoria dinmica (malloc, free)
difcil de poner a punto
Memoria esttica: basada en vectores
mayores prestaciones
ms compacto
SISTEMAS EMPOTRADOS 289
VERIFICACIN EXHAUSTIVA
Un ejemplo de estructura de
datos basada en listas
implementadas en memoria
esttica
#def i ne f i n 0xFF ;
voi d Acci on0 ( voi d) ;
char Condi cci on0( char ent r ada[ ] ) ; . . .
CONST ARCO T0_I n[ ] ={{0, 1}, {f i n, 0}} ;
CONST ARCO T0_Out [ ] ={{1, 1}, {2, 2}, {f i n, 0}} ;
CONST ARCO T1_I n[ ] ={{2, 1}, {f i n, 0}};
CONST ARCO T1_Out [ ] ={{3, 1}, {f i n, 0}} ;
CONST ARCO T2_I n[ ] ={{1, 1}, {3, 2}, {f i n, 0}};
CONST ARCO T2_Out [ ] ={{0, 1}, {f i n, 0}} ;
/ * 0 1 2 3 */
st at i c unsi gned char M[ NLUGARES] ={1, 0, 0, 0};
st at i c unsi gned char Si g_M[ NLUGARES] ={1, 0, 0, 0};
CONST T_TRAN TRAN[ NUMTRANS] =
{{T0_I n, T0_Out , Acci on0, Condi cci on0}
{. . . }
. . . } ;
p
2
p
1
t
1
t
2
p
3
t
0
p
0
2
2
t ypedef st r uct {
unsi gned char Lugar ;
unsi gned char Peso ;
} ARCO ;
t ypedef st r uct {
CONST ARCO *Lugar es_Ent r ada ;
CONST ARCO *Lugar es_Sal i da ;
voi d ( *Acci on) ( voi d) ;
char ( *Condi ci on) ( char ent r ada[ ] ) ;
} T_TRAN ;
SISTEMAS EMPOTRADOS 290
VERIFICACIN EXHAUSTIVA
El algoritmo de interpretacin
voi d mai n ( voi d) {
I ni ci al i zaci on ( ) ;
whi l e ( TRUE)
{
memcpy ( M, Si g_M, si zeof ( M) ) ;
Gener aci on_Sal i das ( M) ;
( *Lect ur a_Ent r adas) ( &ent r ada) ;
f or ( t =0; t <= ( NUMTRANS- 1) ; t ++) {
i f ( Sensi bi l i zada( Tr ans[ t ] , M) && ( *Tr ans[ t ] . Condi ci on) ( ent r ada) ) {
Ret i r ar _Mar cas( Tr ans[ t ] , Si g_M) ;
/ * Ret i r ar _Mar cas( Tr ans[ t ] , M) ; Si exi st en conf l i ct os ef ect i vos */
( *Tr ans[ t ] . Acci on) ( ) ;
Poner _Mar cas( Tr ans[ t ] , Si g_M) ; }
}/ * f i n i f di spar o de una t r ansi ci on*/
}/ * f i n f or que r ecor r e l as t r ansi ci ones
}/ *f i n bucl e i nt er pr et aci n de l a r ed
}
SISTEMAS EMPOTRADOS 291
VERIFICACIN EXHAUSTIVA
Manejo estructura
char Sensi bi l i zada( T_TRAN Tr an, const unsi gned char M[ ] ) {
i nt p;
char Sensi b = 1;
p=0;
whi l e( ( Tr an. Lugar es_Ent r ada[ p] . Lugar ! = f i n) && Sensi b==1) {
i f ( M[ Tr an. Lugar es_Ent r ada[ p] . Lugar ] < Tr an. Lugar es_Ent r ada[ p] . Peso)
Sensi b = 0;
p++;
}
r et ur n Sensi b ;
}
voi d Ret i r ar _Mar cas( T_TRAN Tr an, unsi gned char M[ ] ) {
i nt p;
p=0;
whi l e( ( Tr an. Lugar es_Ent r ada[ p] . Lugar ! = f i n) ) {
M[ Tr an. Lugar es_Ent r ada[ p] . Lugar ] - =
Tr an. Lugar es_Ent r ada[ p] . Peso;
p++;
}
}
voi d Poner _Mar cas( T_TRAN Tr an, unsi gned char M[ ] ) {
. . .
M[ Tr an. Lugar es_Sal i da[ p] . Lugar ] +=
Tr an. Lugar es_Sal i da[ p] . Peso;
. . .
}
SISTEMAS EMPOTRADOS 292
VERIFICACIN EXHAUSTIVA
t ypedef st r uct {
CONST char *Lugar es_Ent r ada ;
CONST char *Lugar es_Sal i da ;
voi d ( *Acci on) ( voi d) ;
char ( *Condi ci on) ( char ent r ada[ ] ) ;
} T_TRAN ;
Redes con arcos unitarios
(RdP ordinarias)
voi d Acci on0 ( voi d) ;
char Condi cci on0( char ent r ada[ ] ) ; . . .
CONST char T0_I n[ ] ={0, f i n} ;
CONST char T0_Out [ ] ={1, 2, f i n} ;
CONST char T1_I n[ ] ={2, f i n};
CONST char T1_Out [ ] ={3, f i n} ;
CONST char T2_I n[ ] ={1, 3, f i n};
CONST char T2_Out [ ] ={0, f i n} ;
/ * 0 1 2 3 */
st at i c unsi gned char M[ NLUGARES] ={1, 0, 0, 0};
st at i c unsi gned char Si g_M[ NLUGARES] ={1, 0, 0, 0};
CONST T_TRAN TRAN[ NUMTRANS] =
{{T0_I n, T0_Out , Acci on0, Condi cci on0}
{. . . }
. . . } ;
p
2
p
1 t
1
t
2
p
3
t
0
p
0
SISTEMAS EMPOTRADOS 293
VERIFICACIN EXHAUSTIVA
Manejo estructura
char Sensi bi l i zada( T_TRAN Tr an, const unsi gned char M[ ] ) {
i nt p;
char Sensi b = 1;
p=0;
whi l e( ( Tr an. Lugar es_Ent r ada[ p] ! =f i n) && Sensi b==1) {
i f ( M[ Tr an. Lugar es_Ent r ada[ p] ] < 1)
Sensi b = 0;
p++;
}
r et ur n Sensi b ;
}
voi d Ret i r ar _Mar cas( T_TRAN Tr an, unsi gned char M[ ] ) {
i nt p;
p=0;
whi l e( ( Tr an. Lugar es_Ent r ada[ p] ! =f i n) ) {
M[ Tr an. Lugar es_Ent r ada[ p] ] - - ;
p++;
}
}
voi d Poner _Mar cas( T_TRAN Tr an, unsi gned char M[ ] ) {
. . .
M[ Tr an. Lugar es_Sal i da[ p] ] ++ ;
. . .
}
SISTEMAS EMPOTRADOS 294
IMP. DIRIGIDA POR EL MARCADO
Resolucin del problema de la verificacin exhaustiva de la sensibilizacin
de transiciones
VERIFICACION SELECTIVA
Slo son tratadas aquellas transiciones con posibilidad de estar
sensibilizadas
IMPLEMENTACION DIRIGIDA POR EL MARCADO
Mtodo de los lugares representantes marcados
Cada transicin es representada por uno de sus lugares de entrada
Slo aquellas transiciones cuyo lugar representante est marcado se
consideran candidatas al disparo
Un lugar de entrada a una transicin y que no sea su representante se
denomina lugar de sincronizacin
Fase previa: obtencin del conjunto de lugares representantes y de
sincronizacin
SISTEMAS EMPOTRADOS 295
IMP. DIRIGIDA POR EL MARCADO
Eleccin de lugares representantes
Representantes esenciales
Particin representantes/sincronizacin?
t
1
t
4
3
p
t
2
t
5
4
p
t
3
t
6
5
p
2
p
1
p
B
r
1
D
r
2
A
l
1
C
l
2
M
SISTEMAS EMPOTRADOS 296
IMP. DIRIGIDA POR EL MARCADO
Un ejemplo
voi d Acci on1 ( voi d) ;
char Condi cci on1( char ent r ada[ ] ) ; . . .
CONST ARCO T0_Lugar es_Si nc[ ] ={3, f i n};
CONST ARCO T0_Lugar es_Sal i da[ ] ={1, f i n};
CONST ARCO T1_Lugar es_Si nc[ ] ={4, f i n};
CONST ARCO T1_Lugar es_Sal i da[ ] ={2, f i n};
CONST T_TRAN LR0[ 3] =
{{0, T0_Lugar es_Si nc, T0_Lugar es_Sal i da,
Acci on1, Condi cci on1},
{1, T1_Lugar es_Si nc, T1_Lugar es_Sal i da,
Acci on2, Condi cci on2},
{f i n, . . . }};
. . .
CONST T_TRAN LR1[ 2] = . . . ;
. . .
CONST T_TRAN LR2[ 2] = . . . ;
CONST T_REPRESENTANTE Lug[ NREPRESENTANTES] =
{LR0, LR1, LR2} ;
p
1
p
3
t
2
p
0
p
2
p
4
t
3
t
0
t
1
t ypedef unsi gned char ARCO;
t ypedef st r uct {
CONST unsi gned char Tr ans ;
CONST ARCO *Lugar es_Si ncr oni zaci on ;
CONST ARCO *Lugar es_Sal i da;
voi d ( *Acci on) ( voi d) ;
char ( *Condi cci on) ( char ent r ada[ ] ) ;
}T_TRAN;
t ypedef T_TRAN *T_REPRESENTANTE ;
SISTEMAS EMPOTRADOS 297
IMP. DIRIGIDA POR EL MARCADO
p
1
p
3
t
2
p
0
p
2
p
4
t
3
t
0
t
1
. . .
whi l e( 1) {
memcpy ( M_Si nc, Si g_M_Si nc, nLugar esSi nc+1) ;
( *Leer _Ent r ada) ( ent r ada) ;
whi l e ( Hay_Repr ent ant e( P_Tr at ami ent o) ) {
P = Desapi l a ( P_Tr at ami ent o) ;
i = 0 ; T = Lug[ p] [ i ] ;
whi l e ( T. Tr ans ! = f i n) {
i f ( Sensi bi l i zada( T, M_Si nc) &&
( *T. Condi cci on) ( ent r ada) ) {
Ret i r ar _Mar cas( T, Si g_M_Si nc) ;
Ret i r ar _Mar cas( T, M_Si nc) ;
( *T. Acci on) ( ) ;
Poner _Mar cas( . . . ) ;
}
el se
Api l ar ( P_For maci on, P) ;
i ++ ; T = Lug[ p] [ i ] ;
}
}
I nt er cambi a ( P_Tr at ami ent o, P_For maci on) ;
}
true
true
p
3
p
4
(M_Sinc) (P_Tratamiento)
0
RdP binaria
SISTEMAS EMPOTRADOS 298
SISTEMAS EMPOTRADOS
SISTEMAS
MUESTREADOS
SISTEMAS EMPOTRADOS 299
COMPUTADOR Y MUNDO ANALGICO
Tratamiento digital de la seal
Esquema simplificado
T
Muestreador Codificador
x(t)
x(kT)
Conversor A/D
seal
analgica
seal
muestreada
seal
digital
codificada
seal
contnua
cuantificada
y(t)
Decodificador
Bloqueador
y(kT)
Conversor D/A
seal
digital
codificada
seal
discreta
cuantificada
0
0
1
1
0
1
1
0
0
1
1
1
0
1
1
0
0
1
1
1
0
1
1
0
Algoritmo
T
Muestreador
Algoritmo Bloqueador
x(t) x(k) y(k) y(t)
Bo
SISTEMAS EMPOTRADOS 300
COMPUTADOR Y MUNDO ANALGICO
Aplicaciones
Telefona y radio digital
Registradores de seales
Monitorizacin de pacientes
Alta fidelidad
Control
...
T
Muestreador
Algoritmo
de control
Bloqueador
e(k) u(k) u(t)
Bo
Proceso
y(t)
Sensor
y(t) y(k)
yd(k)
+
-
COMPUTADOR
SISTEMAS EMPOTRADOS 301
COMPUTADOR Y MUNDO ANALGICO
Seales discretas y muestreadas
Seales discretas: p.e. generadas por un computador
Seales muestreadas: una seal continua al ser muestreada da lugar a
una seal discreta
Seal discreta --> representada por una secuencia {x
k
}
p.e. {x
k
} = {0, 1.5, 1.66, 2, 2.77,}
Algoritmo del computador: ecuaciones en diferencias :
x(k+1) = a x(k) + b x(k-1) + c x(k-2) + d u(k)
Ecuaciones en diferencias = transformador de secuencias
Anlisis y diseo
Transformada en Z
MUESTREADOR
perodo T
al computador
T
SISTEMAS EMPOTRADOS 302
MUESTREO Y RECONSTRUCCIN
Muestreo-conversin analgica-digital (CAD)
voi d mai n( voi d)
{
I ni t ( ) ;
Si gui ent e = Get _Ti me ( ) ;
whi l e( 1) {
ADSCR=0x00; / *I ni ci o de l a conver si on AD*/
whi l e( ! COCO) ; / *Esper a f i n conver si on*/
Val or = ADC ; / *Lect ur a dat o y bor r ado COCO */
Resul t ado = Pr ocesado ( Val or ) ;
. . . .
Si gui ent e = Si gui ent e + T ;
del ay_unt i l ( Si gui ent e) ;
}
}
T
Muestreador
Codificador
bloqueador
x(t)
x(kT)
COMPUTADOR
seal
analgica
seal
muestreada
0
1
1
0
0
1
1
1
0
1
1
0
seal
codificada
cuantificada
Ejemplo en HC08:
Conversin nica
No interrupciones
Inicio por software
SISTEMAS EMPOTRADOS 303
MUESTREO Y RECONSTRUCCIN
Posibilidades muestreo
Arranque de la conversin
A peticin de la aplicacin
Seal externa de sincronizacin
Iniciativa del mdulo
Conversin continua
Conversin peridica necesidad de una base de tiempos (p.e. EV
en el 2812)
Fin de conversin y transferencia del dato
Aplicacin lectura del flag de fin de conversin y lectura del dato
convertido
Interrupcin la lectura la hace la rutina de interrupcin
DMA el propio perifrico deja los datos convertidos en memoria
SISTEMAS EMPOTRADOS 304
MUESTREO Y RECONSTRUCCIN
Teorema de muestreo (Shannon)
Una seal continua x(t) cuya transformada de Fourier X() sea de
banda limitada (
s
), estar completamente determinada por la
secuencia {x
k
} obtenida por el muestreo de la misma si:
Si
m
> 2
s
: reconstruccin perfecta por filtrado paso bajo (amplitud: T)
Si
m
< 2
s
: no se puede reconstruir
En la prctica existen seales de las que no se puede decir que sean de
banda limitada: se hablar de muestreo aceptablemente rpido (10 a 100
veces la ms significativa)
m
2
s
T
s
SISTEMAS EMPOTRADOS 305
MUESTREO Y RECONSTRUCCIN
Ejemplo:
Sistema con
d
= 0.25 Hz
Muestreo con
m
= 10 Hz y con
m
= 0.33 Hz
0
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0.18
0 1 2 3 4 5 6 7 8 9
Muestreo con T=0.1 y con T=3
t
SISTEMAS EMPOTRADOS 306
MUESTREO Y RECONSTRUCCIN
RECONSTRUCCIN
Transformacin de una secuencia (seal discreta) en una seal
continua aceptable por el sistema receptor de la seal.
Conversin digital-analgica (CDA) - bloqueador
x(t)
seal
continua
cuantificada
Decodificador
Bloqueador
x*(kT)
COMPUTADOR
seal
digital
codificada
seal
discreta
cuantificada
0
1
1
0
0
1
1
1
0
1
1
0
SISTEMAS EMPOTRADOS 307
MUESTREO Y RECONSTRUCCIN
Interpoladores:
interpolacin lineal reconstruccin
Para generar la recta hay que conocer el valor de x*((k+1)T) en el
instante k
En la prctica se utilizan retrasando uno o varios perodos de muestreo
la reconstruccin
kT (k+1)T
seal interpolada
SISTEMAS EMPOTRADOS 308
MUESTREO Y RECONSTRUCCIN
Bloqueadores: extrapoladores
Realizan la reconstruccin en un instante con informacin anterior a l:
realizable
Planteamiento: conocidos x(kT), x((k-1)T), , hay que construir una
funcin continua que aproxime lo ms posible la seal hasta el nuevo
valor x((k+1)T)
Bloqueador de orden 0:
kT (k+1)T
Bloqueador de orden 0
SISTEMAS EMPOTRADOS 309
MUESTREO Y RECONSTRUCCION
PWM
Modulacin en anchura de pulso
Reconstruccin
Filtro paso bajo
Se cambia la anchura de pulso en cada periodo de muestreo
PWM
COMPUTADOR
seal
digital
codificada
seal
codificada
en anchura de
pulso
0
1
1
0
0
1
1
1
0
1
1
0
y(t)
Filtro paso bajo
SISTEMAS EMPOTRADOS 310
MUESTREO Y RECONSTRUCCION
Generacin de ondas PWM con un HC08
Se utiliza uno de los TIM
Se implementa con un OUTPUT COMPARE y el contaje modular del
TCNT actuando sobre las patillas T1CHx
Tpwm se programa con el overflow de contador, haciendo conmutar T1CHx
Ton se programa mediante output compare forzando el cero en T1CHx al
expirar la cuenta del output compare
Ton
Toff
Vmx
Vmin
Tpwm
clear on output compare toggle on overflow
SISTEMAS EMPOTRADOS 311
MUESTREO Y RECONSTRUCCION
Diagrama
de bloques
de un TIM
SISTEMAS EMPOTRADOS 312
MUESTREO Y RECONSTRUCCION
Dos posibilidades
Unbuffered (MSOB:MSOA = 01)
Cambio de Ton en cualquier instante Pb. Puede fallar durante dos ciclos
Buffered (MSOB:MSOA = 10)
El Ton se cambia en el overflow
Escritura del valor alternativamente en T1CH1 y T1CH0
Canal 1 deshabilitado
voi d I ni t _PWM( voi d) {
TSTOP_1 =1; TRST_1 =1; / / St op y r eset del TI M
PS2_1 = 0; PS1_1 = 0; PS0_1 = 0; / / Pr eescal ado x/ 1, t i ck = 0. 407 us
T1MODH= 0x00 ; T1MODL= 0xFF ; / / Car ga del val or del per i odo del PWM
/ / PWM de 8 bi t s, T = 104. 192 us, f =9. 597 KHz
T1CH0H=0x00; T1CH0L=0x50; / / Val or i ni ci al del Ton
MS0B_1 = 1; MS0A_1 = 0; / / Buf f er ed PWM
TOV0_1 = 1; / / Cambi ar l a sal i da cuando se al cance el per i odo
ELS0B_1=1; ELS0A_1=0; / / Poner a cer o l a sal i da en l a compar aci on
TSTOP_1=0; / / Ar r anque del cont ador
}
voi d Set _Val ue_Char ( unsi gned char V) {
par = ! par ;
i f ( par ) T1CH0L = V ; el se T1CH1L = V ;
}
SISTEMAS EMPOTRADOS 313
MUESTREO Y RECONSTRUCCION
Generacin de ondas PWM con un 2812
Se utilizan los Event Managers
Se implementa con un OUTPUT COMPARE y el contaje modular del
TCNT
Patillas: T1PWM, T2PWM, PWM1:6
Tpwm se programa con el overflow de contador (GP Timer 1, GP Timer 2),
haciendo conmutar la patilla deseada
Ton se programa mediante output compare (Timer 1 compare, Timer 2
compare, Full compare 1:3) forzando un cero o un uno en la patilla al
expirar la cuenta del output compare
La actualizacin del Ton es siempre buffered
SISTEMAS EMPOTRADOS 314
Event Manager,
EV-A y EV-B
Estructura
interna
SISTEMAS EMPOTRADOS 315
MUESTREO Y RECONSTRUCCION
voi d I ni t _PWM ( voi d) {
asm( " eal l ow ; Enabl e accesses t o cont r ol r egi st er s" ) ;
/ * Act i var el r el oj del EV- A */
HI SPCP = 0x0000 ; / * Rel oj EVA = SYSCLOKOUT/ 1 */
PCLKCR = 0x0001 ; / * Act i vaci n del r el oj del EVA */
/ * Pr eescal ado y per i odo del T1 */
T1CON = 0x0000 ;
T1CON | = 0x1000 ; / * 0001_0000_0000_0000 */
/ * TMODE( 1, 0) = 10 Cont i nous up */
/ * TPS ( 2, 1, 0) = 000 x/ 1 pr eescal er */
/ * TCLKS ( 1, 0) = 00 SYSCLKOUT */
/ * SYSCLKOUT( 15 MHz) / 1 => t i ck de T1 = 66. 6 ns */
T1PR = 0xFFF ; / * 12 bi t s */
T1CMPR = 0xFF ; / * Ton = 256*t i ck */
/ * Act i vaci on de l as sal i das */
GPTCONA = 0x0051 ; / * 0000_0000_0101_0001 */
/ * TCMPOE = 1, T1CMPOE = 1 compar e out put enabl e */
/ * T1PI N( 1, 0) = 01 act i ve l ow */
GPAMUX = 0x0040 ; / * T1PWM_T1CMP = 1 Per i pher al */
/ * Act i vaci on del T1 */
T1CON | = 0x004A ; / * 0000_0000_0100_1010 */
/ * TCLD( 1, 0) = 10 Car ga i nmedi at a del r eg de compar aci on */
/ * TENABLE = 1 habi l i t aci n del T1 */
/ * TECMPR = 1 T1 compar e enabl e */
asm( " edi s ; Di sabl e accesses t o PI E cont r ol r egi st er s" ) ;
}
voi d Set _Val ue ( unsi gned i nt V) { T1CMPR = 0x0FFF&V ; }
SISTEMAS EMPOTRADOS 316
DISEO
Diseo de sistemas en relacin con el mundo analgico (filtros,
controladores):
Tratamiento digital de la seal
Automtica
...
Resultados del diseo
Funcin de transferencia en s (transformada de Laplace) u
(transformada de Fourier)
Funcin de transferencia en z (transformada en z)
Ecuaciones en diferencias
que cumplen las especificaciones de partida (frecuenciales o temporales)
SISTEMAS EMPOTRADOS 317
DISEO
Ejemplo
Integracin numrica
I k ( ) = I k 1 ( ) + f k 1 ( )T
I z ( ) = I z ( )z
1
+ f z ( )z
1
T
I z ( )
f z ( )
=
z
1
T
1 z
1
kT
t
f(t)
f(t) Integral(f(t))
Sistema
SISTEMAS EMPOTRADOS 318
IMPLEMENTACIN
G(s) --> Ecuacin en diferencias
Ejemplo
G s
( )
=
Y s ( )
X s ( )
s
d
dt
X(s) Y(s)
G(s)
( )
( )
( ) ( ) ( ) ( )
( )
( )
( )
( )
( )
( ) ( ) ( )
( )
( ) ( ) ( )
( ) ( ) ( )
( ) ( )
+ +
+
=
+ =
+
+ = +
+ = +
+
+
=
T
k x k x
Kb k Kx k y
T
T
k y
T
T k x kT x
Kb kT Kx
T
T k y kT y
kT y
dt
t dx
Kb t Kx
dt
t dy
t y
s KbsX s KX s sY s Y
s
bs
K
s X
s Y
1
1
1
1
1 1
1
1
k ay k Kbx k Kx k y
k Kbx k Kx k ay k y
z X Kbz z KX z Y az z Y
az
bz
K
z X
z Y
SISTEMAS EMPOTRADOS 320
IMPLEMENTACIN
Todo tratamiento de seal para cualquier aplicacin (control,
comunicaciones, ) responde a las siguientes ecuaciones en diferencias:
Los DSPs tienen instrucciones y modos de direccionamiento
especiales para calcular estas expresiones de forma eficiente
Bibliotecas de funciones cdigo optimizado para la CPU
( ) ( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( )
N
j
N
N
n
kn
N
K
k
M
m
K
k
e W W n x k X FFT
k i x k b i y FIR
m i y m a k i x k b i y IIR
2
1
0
0
1 0
;
=
=
= =
=
=
SISTEMAS EMPOTRADOS 321
IMPLEMENTACIN
Ecuacin en diferencias
Algoritmo
Ejecucin peridica
y k ( ) = Kx k ( )+ Kbx k 1 ( ) ay k 1 ( )
voi d mai n( voi d)
{
. . .
x_ant = 0 ;
Si gui ent e = Cont ador ;
whi l e( 1) {
x = Lect ur a_Ent r ada ( ) ;
y = K*( x + b*x_ant ) - a*y ;
Gener ar ( y) ;
x_ant = x ;
Si gui ent e = Si gui ent e + T ;
del ay_unt i l ( Si gui ent e) ;
}
}
SISTEMAS EMPOTRADOS 322
EJEMPLO 1
Control de velocidad de un motor
Especificaciones:
SO = 0
tr 2 sg
ep = 0
Modelo del sistema
A
Kp
Ke
Ks
U
Y
3
1 + s
U
Y
SISTEMAS EMPOTRADOS 323
EJEMPLO 1
Esquema de
control
Perodo de muestreo
Suficiente frecuencia de muestreo para la dinmica deseada
t
r
2s => T
m
t
r
/10= 0.2 ---> T
m
= 0.1 s
Si tick = 1.6667 ms T = 60
Diseo del controlador R(z)
R(z)
Bo
Yd
3
1 + s
U
Y
COMPUTADOR
+
-
E
R z ( ) =
U z ( )
E z ( )
= 0.5
1 0.9048z
1
1 z
1
SISTEMAS EMPOTRADOS 324
EJEMPLO 1
Ecuacin en
diferencias
Lectura de entradas
Conversin analgico-digital
0..255 (conversor 8bits) <--> 0..5 V
R z ( ) =
U z ( )
E z ( )
= 0.5
10.9048z
1
1 z
1
U z ( ) z
1
U z ( ) = 0.5E z ( ) 0.4524z
1
E z ( )
U k ( ) U k 1 ( ) = 0.5E k ( ) 0.4524z
1
E k 1 ( )
U k ( ) = 0.5E k ( ) 0.4524E k 1 ( ) +U k 1 ( )
f l oat Lect ur a_Ent r ada( voi d)
{
ADSCR=0x00; / *I ni ci o de l a conver si on AD*/
whi l e( ! COCO) ; / *Esper a f i n conver si on*/
r et ur n ( ( f l oat ) ADC*5. 0) / 255. 0 ;
}
SISTEMAS EMPOTRADOS 325
EJEMPLO 1
Generacin de salidas: p.e. PWM
voi d Gener ar ( f l oat Val or )
{
i f ( Val or >= 5. 0)
Set _Val ue ( 255) ;
el se
Set _Val ue ( ( unsi gned char ) ( Val or *255. 0/ 5. 0) ) ;
}
SISTEMAS EMPOTRADOS 326
EJEMPLO 1
Programa de control
voi d mai n( voi d)
{
unsi gned i nt Si gui ent e ;
unsi gned i nt T = 60 ;
f l oat E, E_ant , U ;
f l oat Yd, Y ;
E_ant = 0. 0 ;
U = 0. 0 ;
Si gui ent e = Cont ador ;
whi l e( 1) {
Y = Lect ur a_Ent r ada ( ) ;
Yd = Lect ur a_Consi gna ( ) ;
E = Yd - Y ;
U = 0. 5*E - 0. 4524*E_ant + U ;
Gener ar ( U) ;
E_ant = E ;
Si gui ent e = Si gui ent e + T ;
del ay_unt i l ( Si gui ent e) ;
}
}
SISTEMAS EMPOTRADOS 327
EJEMPLO 2
Obtener la funcin de transferencia del controlador que implementa el
siguiente programa
voi d mai n( voi d)
{
. . .
er r or _k_1 = 0. 0 ;
acci on_k_1 = 0. 0 ;
acci on_k_2 = 0. 0 ;
Si gui ent e = Cont ador ;
whi l e( 1) {
er r or = l eer _er r or ( ) ;
acci on = ( 1- b) *acci on_k_1 + b*acci on_k_2 +
K*( er r or - a*er r or _k_1) ;
gener ar ( acci on) ;
er r or _k_1 = er r or ;
acci on_k_2 = acci on_k_1 ;
acci on_k_1 = acci on ;
Si gui ent e = Si gui ent e + T ;
del ay_unt i l ( Si gui ent e) ;
}
}
SISTEMAS EMPOTRADOS 328
EJEMPLO 2
Funcin de transferencia
( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) ( ) ( )
( )
( ) ( ) ( )( )
1 1
1
2 1
1
1 2 1
1
2 1
1 1
1
1 1
1
1 1 1
1
1
2 1 1
1
2 1 1
+
=
+
=
= +
= +
= +
+ + =
bz z
az
K
bz z b
az
K
z error
z accion
z error az K bz z b z accion
z z error a z error K
z z accion b z z accion b z accion
k error a k error K
k accion b k accion b k accion
k error a k error K
k accion b k accion b k accion
SISTEMAS EMPOTRADOS 329
EJEMPLO 2
Y de este programa?
voi d mai n( voi d)
{
. . .
er r or _k_1 = 0. 0 ;
acci on_k_1 = 0. 0 ;
acci on_k_2 = 0. 0 ;
Si gui ent e = Cont ador ;
whi l e( 1) {
gener ar ( acci on) ;
er r or = l eer _er r or ( ) ;
acci on = ( 1- b) *acci on_k_1 + b*acci on_k_2 +
K*( er r or - a*er r or _k_1) ;
er r or _k_1 = er r or ;
acci on_k_2 = acci on_k_1 ;
acci on_k_1 = acci on ;
Si gui ent e = Si gui ent e + T ;
del ay_unt i l ( Si gui ent e) ;
}
}
accion' z ( ) = z
1
accion z ( )
accion' z ( ) = z
1
K
1 az
1
1 z
1
( )
1+ bz
1
( )
error z ( )
accion' z ( )
error z
( )
= K
1 az
1
( )
z
1
1 z
1
( )
1+ bz
1
( )
SISTEMAS EMPOTRADOS 330
IMPLEMENTACIN EN COMA FIJA
Coma fija v.s. coma flotante
Rango para el mismo nmero de bits de representacin interna
Coma flotante mucho mayor rango de representacin
Precisin en la representacin
Coma flotante la precisin depende del nmero representado
Coma fija igual precisin en todo el rango
Consumo y precio
CPUs de coma flotante
Alto precio y elevado consumo
Utilizado en estaciones base
CPUs de coma fija
Menor precio y consumo
Utilizados en sistemas mviles
SISTEMAS EMPOTRADOS 331
IMPLEMENTACIN EN COMA FIJA
Representacin en coma flotante IEEE Format (754)
SISTEMAS EMPOTRADOS 332
IMPLEMENTACIN EN COMA FIJA
Representacin en coma fija
Generalizando:
coma
210
.
5
0
.
2
5
0
.
1
2
5
0
.
0
6
2
5
sesgo B
F
escala F S
entero Q
B Q S V V
E
2 1
2
~
<
=
+ =
Q
B
S
V
Q lo nico de se representa
E posicin de la coma
F escala fraccional o ponderacin de bit
SISTEMAS EMPOTRADOS 333
IMPLEMENTACIN EN COMA FIJA
Ejemplo Conversor AD 8 bits, 0..5 V
0..5 V (entrada al conversor) 0..255 (salida de 8 bits)
0
255 . 1 2 3276 . 0 lg
6
6724 . 5
255
5
lg lg lg
2
3276 . 0
2
2 2 2
=
= = =
=
= = + =
=
B
F F
E
E F S
F S
E
y Q S
y x
y x
voltios
= =
=
255
5
255
5
0 255
0
0 5
0
Q x V
voltios
= =
6
2 255 . 1
El resultado de la conversin = representacin interna (C)
SISTEMAS EMPOTRADOS 334
IMPLEMENTACIN EN COMA FIJA
Formato Q15
Formato estndar en DSPs
B=0
F=1
E=-15
1 0
2
15
<
=
V
Q V
s
0 15
coma
SISTEMAS EMPOTRADOS 335
IMPLEMENTACIN EN COMA FIJA
Aritmtica SUMA
B
i
= 0 ; F
a
=F
b
=F
c
E
a
=E
b
=E
c
Aritmtica ACUMULACIN
B
b
=0 y F
i
=1
( ) ( )
c b
E
a
a c b
c
E E
a
c
b
E E
a
b
a
c c
E
c b b
E
b a a
E
a
c b a
Q Q
F
B B B
Q
F
F
Q
F
F
Q
B Q F B Q F B Q F
V V V
a a c a b
c b a
+
+
+ + =
+ + + = +
+ =
2 2 2
2 2 2
( ) ( )
c
E E
b
E E
a
Q Q Q
a c a b
+ = 2 2
c b a
Q Q Q + =
( )
b
E E
a a
b a a
Q Q Q
V V V
a b
+ =
+ =
2
SISTEMAS EMPOTRADOS 336
IMPLEMENTACIN EN COMA FIJA
Aritmtica MULTIPLICACIN
F
i
=1, B
i
=0
Atencin!! Q
a
,Q
c
16bits Q
a
xQ
c
32 bits
( ) ( )
( ) ( ) ( )
a a c a b a c b
c b a
E
a
a c b
c
E E
a
b c
b
E E
a
c b
c b
E E E
a
c b
a
c c
E
c b b
E
b a a
E
a
c b a
F
B B B
Q
F
B F
Q
F
B F
Q Q
F
F F
Q
B Q F B Q F B Q F
V V V
+
+ + + =
+ + = +
=
2 2 2 2
2 2 2
( )
c b
E E E
a
Q Q Q
a c b
+
= 2
SISTEMAS EMPOTRADOS 337
IMPLEMENTACIN EN COMA FIJA
Ejemplo 1
Representacin de los operandos
Yd(k), Y(k) ledos por el conversor AD de 8 bits
Q
Yd
, Q
Y
unsigned char
( ) ( ) ( ) ( ) 1 1 4524 . 0 5 . 0 + = k U k E k E k U
( )
( )
[ ] bits Q Q
Q k Y
Q k Y
d
d
Y Y
Y d
Y
8 255 , 0 ,
2 255 . 1
2 255 . 1
6
6
=
=
R(z)
Bo
Yd
3
1 + s
U
Y
COMPUTADOR
+
-
E
SISTEMAS EMPOTRADOS 338
IMPLEMENTACIN EN COMA FIJA
Q
E
signed int
U(k) salida generada por un PWM de 8 bits
Idntica transformacin que la entrada (0..5V 0..255)
Q
U
unsigned char
[ ] bits Q Q Q Q
Q Q Q
k Y k Y k E
E Y Y E
Y Y E
d
d
d
9 255 , 255
2 225 . 1 2 225 . 1 2 225 . 1
) ( ) ( ) (
6 6 6
=
=
=
( )
[ ] bits Q
Q k U
U
U
8 255 , 0
2 255 . 1
6
=
SISTEMAS EMPOTRADOS 339
IMPLEMENTACIN EN COMA FIJA
Representacin de los parmetros: a=0.5, b=0.4524
Representacin de 8 bits Q7
Representacin no exacta error de cuantificacin
Expresin
58 9 . 57 2 4524 . 0 2 4524 . 0
64 2 5 . 0 2 5 . 0
7 7
7 7
= = =
= = =
b b b
a a
Q Q Q
Q Q
ant U ant E E U
ant U
ant E E U
Q Q Q Q
Q
Q Q Q
_ _
7 7
_
6
_
6 7 6 7 6
58 2 64 2
2 225 . 1
2 225 . 1 58 2 2 225 . 1 64 2 2 225 . 1
+ =
+
=
SISTEMAS EMPOTRADOS 340
IMPLEMENTACIN EN COMA FIJA
Programa
i nt QE, QE_ant ;
i nt ACC ;
unsi gned char QU, QU_ant ;
. . .
ACC = QU_ant ;
ACC += 64*QE >> 7 ;
ACC - = 58*QE_ant >> 7 ;
i f ( ACC > 255) QU = 255 ;
el se i f ( ACC < =) QU = 0 ;
el se QU = ( unsi gned char ) ACC ;
. . .
SISTEMAS EMPOTRADOS 341
IMPLEMENTACIN FIR
Un filtro FIR de orden N es descrito por la siguiente ecuacin en
diferencias:
N+1 coeficientes del filtro h(0)..h(N)
N+1 muestras x(i), x(i-1), , x(i-N)
Multiplicacin, suma
( ) ( ) ( )
) ( ) ( ... ) 1 ( ) 1 ( ) ( ) 0 (
0
N i x N h i x h i x h
k i x k h i y
N
k
+ + +
= =
=
SISTEMAS EMPOTRADOS 342
IMPLEMENTACIN FIR
Implementacin basada en la instruccin DMAC
16-Bit Dual Multiply and Accumulate
DMAC ACC:P,loc32,*XAR7++
XT = [ l oc32] ;
Temp = Pr og[ *XAR7 or *XAR7++] ;
ACC = ACC + ( XT. MSW* Temp. MSW) << PM;
P = P + ( XT. LSW* Temp. LSW) << PM;
SISTEMAS EMPOTRADOS 343
IMPLEMENTACIN FIR
Implementacin basada en direccionamiento indirecto circular
Loc32 *XAR6%++
Lo apuntado por XAR6, post-incremento
% direccionamiento circular
@ alineada
nx256
i f ( XAR6( 7: 0) == XAR1( 7: 0) ) {
XAR6( 7: 0) = 0x00
XAR6( 15: 8) = unchanged }
el se {
i f ( 16- bi t dat a) , XAR6( 15: 0) =+ 1
i f ( 32- bi t dat a) , XAR6( 15: 0) =+ 2
}
XAR6( 31: 16) = unchanged
Longi t ud buf f er = 256
@buf f er = XAR6( 15: 0) &0xFF00
@buf f er dent r o 64K pr i mer os
XAR6
XAR1
SISTEMAS EMPOTRADOS 344
IMPLEMENTACIN FIR
Funcin en ensamblador pero que se puede llamar desde C
voi d FI R16_i ni t ( FI R16_handl e) ;
voi d FI R16_cal c( FI R16_handl e) ;
t ypedef st r uct {
i nt *coef f _pt r ; / * Poi nt er t o Fi l t er co- ef f i ci ent ar r ay */
i nt *dbuf f er _pt r ; / * Del ay buf f er poi nt er */
i nt cbi ndex; / * Ci r cul ar Buf f er I ndex */
i nt or der ; / * Or der of t he f i l t er */
i nt i nput ; / * I nput dat a */
i nt out put ; / * Out put dat a */
voi d ( *i ni t ) ( voi d *) / * Poi nt er t o i ni t f unct i on */
voi d ( *cal c) ( voi d *) ; / * Poi nt er t o t he cal cul at i on f unct i on */
}FI R16_handl e;
SISTEMAS EMPOTRADOS 345
IMPLEMENTACIN FIR
Preparacin
SETC SXM, OVM ; Si gn ext ensi on enabl ed ( 16 bi t s val ues)
; over f l ow mode ON
SPM - 6 ; Cr eat e guar d band of >> 6 ( i n pr oduct oper at i ons)
; XAR4=FI R16_handl e- >coef f _pt r
; XAR4 poi t s t o t he par amet er i n t he st ack
MOVL XAR7, *XAR4 ; XAR7 = coef f _pt r ( f i l t er coef i ci ent s)
MOVZ AR1, *+XAR4[ 4] ; AR1 = cbi ndex ( Ci r cul ar Buf f er I ndex) / *( XAR4 + 4)
MOVL XAR6, *+XAR4[ 2] ; XAR6 = dbuf f er _pt r ( sampl es)
MOVL ACC, *XAR6 ; ACC = - : X
MOV AH, @AL ; ACC = X: X
MOV AL, *+XAR4[ 6] ; ACC = X: I nput ( I npunt = new sampl e)
MOVL *XAR6%++, ACC ; St or e i n dat a ar r ay and i nc ci r c addr ess
MOVL *+XAR4[ 2] , XAR6 ; updat e t he dbuf f er poi nt er
MOV ACC, *+XAR4[ 5] <<15; AR0 = cbi ndex
MOVZ AR0, AH ; AR0 = or der / 2
ZAPA ; Zer o t he ACC, P r egi st er s and OVC count er
SISTEMAS EMPOTRADOS 346
IMPLEMENTACIN FIR
Implementacin en coma fija
Formato Q15
( ) ( ) ( )
( )
( )
( )
( )
9
) ( ) (
6
) 1 ( ) 1 (
6
) ( ) 0 (
6
) ( ) (
15
) 1 ( ) 1 (
15
) ( ) 0 (
15
) (
15
) (
15
) 1 (
15
) 1 (
15
) (
15
) 0 (
15 15
0
2 2 2 2
2 2 2
2 2 2 2 2 2 2
) ( ) ( ... ) 1 ( ) 1 ( ) ( ) 0 (
=
+ + + =
+ + + =
+ + + =
+ + + =
=
N i x N h i x h i x h i y
N i x N h i x h i x h i y
N i x N h i x h i x h i y
N
k
Q Q Q Q Q Q Q
Q Q Q Q Q Q Q
Q Q Q Q Q Q Q
N i x N h i x h i x h k i x k h i y
K
K
K
SISTEMAS EMPOTRADOS 347
IMPLEMENTACIN FIR
El bucle fundamental
La saturacin
RPT AR0
| | DMACACC: P, *XAR6%++, *XAR7++
ADDL ACC, P ; Add t he t wo sums wi t h shi f t
MOVW DP, #PosSat Val
MI NL ACC, @PosSat Val ; Sat ur at e r esul t
MOVW DP, #NegSat Val
MAXL ACC, @NegSat Val
MOVH *+XAR4[ 7] , ACC<<7; St or e sat ur at ed r esul t ( Q15)
SISTEMAS EMPOTRADOS 348
IMPLEMENTACIN FIR
Movimiento en el buffer
SISTEMAS EMPOTRADOS 349
IMPLEMENTACIN FIR
Movimiento en el buffer
SISTEMAS EMPOTRADOS 350
IMPLEMENTACIN FIR
#def i ne FI R_ORDER 50 / * Fi l t er Or der */
#pr agma DATA_SECTI ON( f i r , " f i r f i l t " ) ;
FI R16 f i r = FI R16_DEFAULTS;
#pr agma DATA_SECTI ON( dbuf f er , " f i r l db" ) ;
l ong dbuf f er [ ( FI R_ORDER+2) / 2] ;
const l ong coef f [ ( FI R_ORDER+2) / 2] = FI R16_LPF50;
mai n( )
{
l pf . dbuf f er _pt r =dbuf f er ;
l pf . coef f _pt r =( l ong *) coef f ;
l pf . or der =FI R_ORDER;
l pf . i ni t ( &l pf ) ;
}
voi d i nt er r upt i sr 20khz( )
{
l pf . i nput =xn;
l pf . cal c( &l pf ) ;
yn=l pf . out put ;
}
Uso de las funciones
SISTEMAS EMPOTRADOS 351
BLOQUEO DE CONTINUA
Eliminacin de la continua de una seal.
+
+
Z
-1
K
a
0
a
1
b
1
C
R
s
s
s
T RC
T RC
b
a
a
T RC
RC
K
+
=
=
=
+
=
2
2
1
1
2
2
1
1
0
RC
f
c
2
1
=
SISTEMAS EMPOTRADOS 352
BLOQUEO DE CONTINUA
Cdigo en C
Q15
The DSP handbook. Bateman&Paterson. Prentice Hall
shor t f i l t er ( shor t sampl e, f l oat t f c, f l oat t f s, shor t del ay, shor t *newdel ay)
{
f l oat t s=1/ t f s;
f l oat r c = 1/ ( t pi *t f c) ;
f l oat t r c = ( 2*r c) +t s;
f l oat f K = ( 2*r c) / t r c;
f l oat f b1 = ( ( 2*r c) - t s) / t r c;
shor t K=f K*32767;
shor t b1=f b1*32767;
shor t a0=32767;
shor t a1=- 32767;
shor t t emp1 = ( K*sampl e) >>15 + ( del ay*b1) >>15 ;
shor t f i l t er ed = ( del ay, a1) >>15 + ( t emp1, a0) >>15 ;
*newdel ay=t emp1;
r et ur n f i l t er ed;
}
SISTEMAS EMPOTRADOS 353
SISTEMAS EMPOTRADOS
PROCESOS
CONCURRENTES
SISTEMAS EMPOTRADOS 354
PROCESOS CONCURRENTES
Procesos concurrentes: Se dice que dos o ms procesos son
concurrentes si pueden ejecutarse en paralelo, de forma que alguno de
ellos comience a ejecutarse antes que termine algn otro.
Programa concurrente: Es un programa que especifica dos o ms
procesos concurrentes o, de forma equivalente, un programa cuya
ejecucin se realiza segn varios flujos de control que avanzan en
paralelo.
Paralelismo virtual
Monoprocesador: Un nico procesador va alternando la ejecucin de
los diversos procesos (entrelazado)
Paralelismo real
Multiprocesador: Cada proceso se ejecuta en un procesador diferente.
Zona de memoria comn (datos comunes).
Sistema distribuido: Multiprocesador sin memoria compartida.
SISTEMAS EMPOTRADOS 355
ENTRELAZADO
Entrelazado y operaciones atmicas
Posibles ejecuciones:
(P1; P2; Q1; Q2)
(P1; Q1; P2; Q2)
(Q1; P1; P2; Q2)
...
Pr oceso P ;
x, y: ent er o ;
P1: x: =1 ;
P2: y: =x+2 ;
f i n P ;
Pr oceso Q ;
z, u: ent er o ;
Q1: z: =3 ;
Q2: u: =z+1 ;
f i n Q ;
SISTEMAS EMPOTRADOS 356
ENTRELAZADO
Cada instruccin de alto nivel: varias instrucciones cdigo mquina.
Por ejemplo: x := y + z ;
copiar y, r1
copiar z, r2
sumar r1, r2
copiar r2, x
Operaciones atmicas.
SISTEMAS EMPOTRADOS 357
COMUNICACIN Y SINCRONIZACIN
La dificultad de la programacin concurrente estriba en las interacciones
de los procesos:
Cooperacin para un fin comn
Competencia por el uso de recursos
Son necesarias operaciones de comunicacin y sincronizacin entre
procesos:
Sincronizacin: cumplir restricciones sobre el orden en el que se
ejecutan sus acciones
Comunicacin: paso de informacin de un proceso a otro
SISTEMAS EMPOTRADOS 358
EXCLUSIN MUTUA
Dos procesos compiten cuando comparten:
un recurso
una variable (comunicacin)
El acceso al recurso o a la variable debe ser en exclusin mutua.
Seccin crtica: secuencia de instrucciones que debe ejecutarse en
exclusin mutua
Mecanismos de sincronizacin
Espera ocupada (busy waiting)
Semforos
Monitores
SISTEMAS EMPOTRADOS 359
COMPARTICIN DE UNA VARIABLE
Ejemplo: dos procesos (contador y escritor) comparten una variable n.
VARI ABLE COMPARTI DA
n : ent er o : = 0;
pr oceso escr i t or ;
pr i nci pi o
r epet i r
esper ar 1 hor a;
escr i bi r n;
n: =0;
f i n r epet i r ;
f i n;
pr oceso cont ador ;
pr i nci pi o
r epet i r
esper ar pul so;
n: =n+1;
f i n r epet i r ;
f i n;
ERROR: el resultado depende del orden
en que se intercalen las instrucciones
SISTEMAS EMPOTRADOS 360
COMPARTICIN DE UNA VARIABLE
Posibles trazas:
(escribir n; n:=0; n:=n+1)
(escribir n; n:=n+1; n:=0) --> Prdida de pulso
(n:=n+1; escribir n; n:=0)
n := n + 1 ;
copiar n, r1
sumar r1, 1 / (escritor) n:=0;
copiar r1, n => Prdida de la puesta a cero de n
Problema: entrelazado de las instrucciones en el acceso a la variable
comn.
Solucin: garantizar la exclusin mutua en el acceso al elemento
compartido.
SISTEMAS EMPOTRADOS 361
COMPARTICIN DE UNA VARIABLE
Seccin crtica: Se garantiza que dos procesos no estarn ejecutando a la
vez una misma regin crtica
Monitores, mutex, Test_and_set
Ejemplo: dos procesos (contador y escritor) comparten una variable n.
n : compar t i da ent er o : = 0;
pr oceso acumul ador ;
pr i nci pi o
r epet i r
esper ar i mpul so;
r egi on n hacer
n: =n+1;
f i n;
f i n r epet i r ;
f i n;
pr oceso escr i t or ;
pr i nci pi o
r epet i r
esper ar 1 hor a;
r egi on n hacer
escr i bi r n;
n: =0;
f i n;
f i n r epet i r ;
f i n;
SISTEMAS EMPOTRADOS 362
EXCL. MUTUA E INTERRUPCIONES
Las rutinas de servicio de interrupciones (ISR) se ejecutan en concurrencia
con el resto de procesos.
Exclusin mutua => inhibir interrupciones
st at i c i nt n = 0 ;
voi d r ut i na_i nt er r upci on( voi d) {
n: =n+1;
}
voi d escr i be_bor r a( voi d) {
i nhi bi r _i nt er r upci ones( ) ;
escr i bi r ( n) ;
n: =0;
act i var _i nt er r upci ones( ) ;
}
SISTEMAS EMPOTRADOS 363
COMPARTICIN DE UNA VARIABLE
En algunos casos excepcionales, puede compartirse una variable sin
exclusin mutua, si se cumple:
Un proceso la escribe y uno la lee
La escritura y lectura se realizan en memoria
el compilador no debe utilizar copias locales en registros para optimizar el
uso de la variable
La escritura y lectura de la variable son atmicas
debe ser leda con una nica instruccin del procesador
Ejemplo en C
volatile unsi gned i nt t i ck_count er ;
#pragma interrupt_handler Tick
void Tick (void) {
TFLG2 = RTIF ;
tick_counter ++ ;
}
unsigned int Get_Time (void) {
return tick_counter ;
}
SISTEMAS EMPOTRADOS 364
COMUNICACIN
Segn el tipo de sincronizacin emisor-receptor:
Comunicacin asncrona (buzn, semforo)
El emisor enva el mensaje y contina
Comunicacin sncrona (cita y cita extendida)
El emisor espera a que el receptor reciba el mensaje
SISTEMAS EMPOTRADOS 365
ACTIVACIN DE TAREAS
Un sistema empotrado puede ser un sistema concurrente, compuesto por
procesos. Desde el punto de vista del tiempo, varios tipos de procesos:
Procesos peridicos: son aquellos que se activan regularmente en
instantes de tiempo separados por un perodo de tiempo determinado.
Procesos espordicos: son aquellos que se activan de forma
irregular, cada vez que se producen ciertos eventos externos.
Procesos de fondo
pr oceso P;
cada T r epet i r
act i vi dad;
f i n r epet i r ;
f i n P;
pr oceso E;
r epet i r
esper ar Event o ;
act i vi dad;
f i n r epet i r ;
f i n E;
SISTEMAS EMPOTRADOS 366
ESPECIFICACIONES TEMPORALES
Marco temporal de una tarea: es el conjunto de atributos temporales
asociados.
T Periodo de ejecucin (P), o separacin mnima entre eventos (S)
C Tiempo de cmputo mximo
R Tiempo de respuesta
D Plazo de respuesta (deadline)
latencia
R
D
T
activacin
k
activacin
k+1
comienzo fin
a
t (k)
f
t (k)
t (k+1)
a
c
1
c =c
1
c
2
c
3
+ +
c
2
c
3
SISTEMAS EMPOTRADOS 367
ESPECIFICACIONES TEMPORALES
Correccin temporal de un proceso => en cada ejecucin
comenzar despus de su activacin
terminar antes de su plazo de respuesta
Plazo de
respuesta Activacin
Ejecucin vlida
SISTEMAS EMPOTRADOS 368
SISTEMAS EMPOTRADOS
EJECUTIVOS
CCLICOS
SISTEMAS EMPOTRADOS 369
MODELO DE TAREAS
Consideraremos inicialmente un modelo de tareas simple:
Conjunto de tareas esttico
Todas las tareas son peridicas
Las tareas son independientes entre s
Se conoce el tiempo de ejecucin mximo de cada tarea C
i
Cada tarea tiene un plazo de respuesta D
i
T
i
Despus veremos como incorporar tareas espordicas
SISTEMAS EMPOTRADOS 370
PLAN PRINCIPAL
Ejecutivo cclico: estructura de control o programa cclico que entrelaza
de forma explcita la ejecucin de diversos procesos peridicos en un
nico procesador.
El entrelazado es fijo y est definido en el denominado plan principal
que es construido antes de poner en marcha el sistema
Plan principal: especificacin del entrelazado de varios procesos
peridicos durante un perodo de tiempo (ciclo principal) de tal forma que
su ejecucin cclica garantiza el cumplimiento de los plazos de los
procesos
La duracin del ciclo principal es igual al mnimo comn mltiplo de los
perodos de los procesos
M = mcm (T
i
)
se supone tiempo entero (p.e. Nmero de ticks)
el comportamiento temporal del sistema se repite cada ciclo principal
SISTEMAS EMPOTRADOS 371
PLANES SECUNDARIOS
Cada plan principal es dividido en uno o ms planes secundarios o
marcos (frames) que se ejecutarn de forma secuencial.
Cada comienzo/fin de un marco en el ejecutivo cclico se sincroniza con el
reloj. Son puntos donde se fuerza la correccin del tiempo real.
Por simplicidad, en la prctica, la duracin de todos los marcos es la
misma. A esta duracin se le denomina ciclo secundario.
Si las acciones definidas en un marco acaban antes de que concluya el
ciclo secundario el ejecutivo cclico espera (p.e. en un WAI)
Si las acciones definidas en un marco no han acabado al terminar el
ciclo secundario, se produce un error: desbordamiento de marco.
Si la duracin de una accin es superior al ciclo secundario debe ser
descompuesta en subacciones
SISTEMAS EMPOTRADOS 372
EJEMPLO
Tarea T C
A 25 10
B 25 8
C 50 5
D 50 4
E 100 2
D
25
25
50
50
100
Ciclo principal: 100 ticks
Ciclo secundario: 25 ticks
E D B C A A B D A B B C A
M = 100 ticks
m = 25 ticks
0
25
50 75
100
SISTEMAS EMPOTRADOS 373
EJEMPLO
Ejecutivo cclico:
voi d Ej ecut i vo_Ci cl i co( voi d) {
unsi gned i nt m= 25 ;
unsi gned i nt si gui ent e ;
i nt mar co = 0, num_mar cos = 4 ;
si gui ent e = Get _Ti me ( ) ;
whi l e( 1) {
mar co = ( mar co %num_mar cos) +1 ;
swi t ch ( mar co) {
case 1: A; B; C; br eak ;
case 2: A; B; D; E; br eak ;
case 3: A; B; C; br eak ;
case 4: A; B; D; br eak ;
}
si gui ent e += m;
del ay_unt i l ( si gui ent e) ;
}
}
SISTEMAS EMPOTRADOS 374
PROPIEDADES
No hay concurrencia en la ejecucin
Cada ciclo secundario es una secuencia de llamadas a procedimientos
No se necesita un ncleo de ejecucin multitarea
Los procedimientos pueden compartir datos
No se necesitan mecanismos de exclusin mutua como los semforos o
monitores
SISTEMAS EMPOTRADOS 375
DETERMINACION DE LOS CICLOS
Sea un conjunto de procesos peridicos {P
i
/ i = 1..n}, con requisitos
temporales representados por ternas (C
i
, T
i
, D
i
).
Ciclo principal:
M = mcm (T
i
)
Ciclo secundario
m min(D
i
)
m max(C
i
)
k: M = km
i: m+ (m - mcd(m,T
i
)) D
i
garantiza que entre el instante de activacin de cada proceso y su
plazo lmite exista un marco o ciclo secundario completo
m - mcd(m,T
i
) es el retraso mximo entre la activacin de un proceso y
el comienzo del siguiente marco
esta condicin incluye a la primera
SISTEMAS EMPOTRADOS 376
EJEMPLO
Considrese tres procesos
P C T D
E 1 14 14
F 2 20 20
G 3 22 22
Ciclo principal
M = mcm(14,20,22) = 1540
Ciclo secundario
m min(14,20,22) => m = 1..14
m max(1,2,3) => m = 3..14
k: 1540 = km => m = 4,5,7,10,11,14
m+ (m - mcd(m,T
i
)) D
i
=> m = 4,5,7
SISTEMAS EMPOTRADOS 377
EJEMPLO
para m = 4
i Ti mcd(m,Ti) retraso m+retraso Di
1 14 2 2 6 < 14
2 20 4 0 4 < 20
3 22 2 2 6 < 22
E
F
G
m = 4
6
14
6
22
4
20
SISTEMAS EMPOTRADOS 378
EJEMPLO
para m = 10
i Ti mcd(m,Ti) retraso m+retraso Di
1 14 2 8 18 > 14 NO
E
F
G
m = 10
14
18
14
28 42 56
0
SISTEMAS EMPOTRADOS 379
INCLUSIN DE PROCESOS PERODICOS
En cada ciclo principal se tienen n
cs
= M/m ciclos secundarios
En cada plan principal se tienen n
ei
= M/T
i
ejecuciones de cada proceso
P
i
Hay que definir la secuencia de procesos de cada marco:
x
:{P
ik
,P
jl
,..,P
rs
}
La ejecucin k-sima de un proceso P
i
caracterizado por ternas (C
i
, T
i
, D
i
)
podr ser incluida en los marcos j-simos que comienzan despus de la
activacin de P
ik
y terminan antes del deadline de P
ik
:
Para que la ejecucin k-sima de P
i
pueda ser incluida en la secuencia de
procesos
x
del marco x, debe quedar suficiente tiempo libre en el marco:
(k 1)T
i
(j 1)m
jm (k 1)T
i
+ D
i
C
i
m C
l
l ,P
l
x
(k 1)T
i
(j 1)m
jm (k 1)T
i
+ D
i
SISTEMAS EMPOTRADOS 388
EJEMPLO: PARTICIN DE PROCESOS
Conjunto de procesos a planificar:
Proceso C T D
P1 2 6 6
P2 2 8 8
P3 8 24 20
Ciclo principal
M = mcm(6,8,24) = 24
Ciclo secundario
m min(6,8,20) => m = 1..6
m max(2,2,8) => no hay ningn m que lo cumpla
Es preciso partir el proceso P3 en varios subprocesos con tiempo de
cmputo menor que 6 unidades de tiempo
Particin en P31 P32 con igual tiempo de cmputo, 4 unidades
SISTEMAS EMPOTRADOS 389
EJEMPLO: PARTICIN DE PROCESOS
Conjunto de procesos a planificar:
Proceso C T D
P1 2 6 6
P2 2 8 8
P31 4 24 20
P32 4 24 20
Ciclo principal
M = mcm(6,8,24) = 24
Nmero de ejecuciones a planificar
n
e1
= M/6 = 4
n
e2
= M/8 = 3
n
e31
= M/24 = 1
n
e32
= M/24 = 1
SISTEMAS EMPOTRADOS 390
EJEMPLO: PARTICION DE PROCESOS
Ciclo secundario
m min(6,8,20) => m = 1..6
m max(2,2,4) => m = 4..6
k: 24 = km => m = 4,6
m+ (m - mcd(m,T
i
)) D
i
=> m = 4
Unica posibilidad de planificacin m=4
Ordenacin de procesos: primero el ms urgente manteniendo
relaciones de precedencia
Misma tabla anterior P1 P2 P31 P32
Un planificacin consta de 6 marcos consecutivos: M = 6m
SISTEMAS EMPOTRADOS 391
EJEMPLO: PARTICIN DE PROCESOS
1
1
1
1
1
1
1
1
2
2
2
1
1
1
1
2
2
2
31
1
1
1
1
2
2
2
1
1
1
1
2
2
2
31
1
1
1
1
2
2
2
31
32
SISTEMAS EMPOTRADOS 392
PARTICIN CON SECCIONES CRTICAS
Si es preciso partir algn proceso en subprocesos, no deben partirse las
secciones crticas con objeto de preservar la exclusin mutua
Ejemplo:
Planificar la ejecucin de los siguientes procesos:
P C T D
P1 20 100 100
P2 25 150 150
P3 90 300 300
Dichos procesos acceden a una seccin crtica comn tal y como
muestra el siguiente esquema:
15 15
15
15 5
10
20
40
P1
P2
P3
SISTEMAS EMPOTRADOS 393
PARTICIN CON SECCIONES CRTICAS
Ciclo principal
M = mcm(100,150,300) = 300
Nmero de ejecuciones a planificar
n
e1
= M/100 = 3 ; n
e2
= M/150 = 2 ; n
e3
= M/300 = 1
Ciclo secundario
m min(100,150,300) => m = 1..100
m max(20,25,90) => m = 90..100
k: 300 = km => m = 100
m+ (m - mcd(m,T
i
)) D
i
=> m = 100
Posibles valores de m = {100}
Ordenacin procesos: primero el ms urgente
Misma ordenacin que en el enunciado
Un planificacin consta de 3 marcos consecutivos
SISTEMAS EMPOTRADOS 394
PARTICIN CON SECCIONES CRTICAS
No existe planificacin porque no
queda ningn marco donde quepa el
proceso P3
Particin de P3
Tiempo sobrante en los marcos:
55, 80, 55 ms
P31: primera seccin crtica +
segundo segmento cdigo
P32: segunda seccin crtica +
cuarto segmento cdigo
1
1
1
1
1
1
1
1
2
2
SISTEMAS EMPOTRADOS 395
PARTICIN CON SECCIONES CRTICAS
Nueva especificacin de procesos:
P C T D
P1 20 100 100
P2 25 150 150
P31 35 300 300
P32 55 300 300
Ciclo principal
M = mcm(100,150,300) = 300
Nmero de ejecuciones a planificar
n
e1
= M/100 = 3
n
e2
= M/150 = 2
n
e31
= M/300 = 1
n
e32
= M/300 = 1
SISTEMAS EMPOTRADOS 396
PARTICIN CON SECCIONES CRTICAS
Ciclo secundario
m min(100,150,300) => m = 1..100
m max(20,25,35,55) => m = 55..100
k: 300 = km => m = 60,75,100
m+ (m - mcd(m,T
i
)) D
i
=> m = 60,100
Posibles valores de m = {60,100}
Para m=100:
1
1
1
1
1
1
1
1
2
2
1
1
1
1
2
2
31
32
SISTEMAS EMPOTRADOS 397
PROCESOS ESPORDICOS
Proceso espordico E: atencin a eventos externos aperidicos
S
E
: separacin mnima entre eventos
D
E
: plazo lmite ( normalmente D
E
S
E
)
C
E
: tiempo de cmputo mximo
En un ejecutivo cclico los procesos espordicos pueden programarse de
dos formas:
Por muestreo peridico del evento
Por interrupcin
SISTEMAS EMPOTRADOS 398
ESPORDICOS POR MUESTREO
Se programa el proceso espordico como un proceso peridico que
consulta si ha llegado un evento, y en tal caso, lo procesa.
Transformamos el proceso espordico en peridico con D = T D
E
/ 2,
y lo planificamos de la forma convencional
Si el proceso peridico cumple sus plazos, cualquier evento se atiende en
su plazo D
E
T
D
E
Se consulta, y no hay evento
Hay evento, y se procesa C
E
evento
Proceso peridico
SISTEMAS EMPOTRADOS 399
EJEMPLO 1
Conjunto de procesos a planificar:
Proceso C T D S
E 1 8 20
P1 3 6 6
P2 2 12 12
Proceso peridico equivalente: D = T= 4 D
E
/ 2
Proceso C T D
P
E
1 4 4
P1 3 6 6
P2 2 12 12
Ciclo principal
M = mcm(4,6,12) = 12
Ejecuciones a planificar: n
E
= M/4 = 3 ; n
1
= M/6 = 2 ; n
2
= M/24 = 1
SISTEMAS EMPOTRADOS 400
EJEMPLO 1
Ciclo secundario
m min(4,6,12) => m = 1..4
m max(1,2,3) => m = 3..4
k: 12 = km => m = 3,4
m+ (m - mcd(m,T
i
)) D
i
=> m = 4
Plan de 3 marcos de duracin m=4
E
E
E
E
E
E
1
1
E
E
E
1
1
2
SISTEMAS EMPOTRADOS 401
ESPORDICOS POR INTERRUPCIN
La llegada del evento produce una interrupcin, y el evento se trata
inmediatamente
Basta con reservar tiempo en cada marco para atender el mximo nmero
de eventos que pueden llegar en un marco:
E
E
res
C
S
m
C
=
SISTEMAS EMPOTRADOS 402
EJEMPLO 2
Conjunto de procesos a planificar (primero el ms urgente):
Proceso C T D S
E 1 7 10
P2 3 8 8
P3 2 8 8
P4 2 12 12
Calculamos los ciclos con los peridicos
Ciclo principal
M = mcm(8,12) = 24
Nmero de ejecuciones a planificar
n
e2
= M/8 = 3
n
e3
= M/8 = 3
n
e4
= M/12 = 2
SISTEMAS EMPOTRADOS 403
EJEMPLO 2
Ciclo secundario
m min(8,12) => m = 1..8
m max(2,3) => m = 3..8
k: 24 = km => m = 3,4,6,8
m+ (m - mcd(m,T
i
)) D
i
=> m = 3,4,8
Probamos con 3 marcos de duracin m=8
En cada uno reservamos tiempo para atender un evento
C
res
=
m
S
E
C
E
SISTEMAS EMPOTRADOS 404
EJEMPLO 2
E
E
E
E
E
E
P2
P2
P2
E
E
E
P2
P2
P2
P3
P3
P3
E
E
E
P2
P2
P2
P3
P3
P3
P4
P4
SISTEMAS EMPOTRADOS 405
PROGRAMACIN DEL EJECUTIVO
Mediante un ejemplo:
Cuatro procesos (plazo = periodo) (C,T,D):
A=(1,10,10), B=(3,10,10), C=(2,20,20), D=(8,20,20)
Proceso C T D
A 1 10 10
B 3 10 10
C 2 20 20
D1 2 20 20
D2 6 20 20
Planificacin:
M = 20, m=10
A B C D1 A B D2
0 6 10 14 20
SISTEMAS EMPOTRADOS 406
PROGRAMACIN DEL EJECUTIVO
Ejemplo de implementacin en el 68HC08.
Tamao de marco = nmero entero de ticks
Ejecutivo cclico = actividad peridica
delay basado en el TBM
Activacin basada en los TIM
SISTEMAS EMPOTRADOS 407
PROGRAMACIN DEL EJECUTIVO
Basado en la TBM y CGMXCKK = 4.9152
Supongamos unidades de tiempo = milisegundos
m = 10 ms
voi d Ej ecut i vo_Ci cl i co_1( voi d) {
unsi gned i nt m= 6 ;
unsi gned i nt si gui ent e ;
unsi gned i nt mar co = 0, num_mar cos = 2 ;
I ni t _Cl ock( ) ;
si gui ent e = Cl ock( ) ;
whi l e( 1) {
mar co = ( mar co %num_mar cos) +1 ;
swi t ch ( mar co) {
case 1: A; B; C; D1; br eak ;
case 2: A; B; D2; br eak ;
}
si gui ent e += m;
del ay_unt i l ( si gui ent e) ;
}
}
Divisor s N ticks
8 1,627604167 6144,000
16 3,255208333 3072,000
32 6,510416667 1536,000
64 13,02083333 768,000
128 26,04166667 384,000
2048 416,6666667 24,000
8192 1666,666667 6,000
32768 6666,666667 1,500
SISTEMAS EMPOTRADOS 408
PROGRAMACIN DEL EJECUTIVO
Basado en los TIMER (bus clock = 2.4575)
u.t. = ms
m = 10 ms
#i ncl ude t i mer . h
voi d Ej ecut i vo_Ci cl i co_3( voi d) {
unsi gned i nt m= 24576 ;
unsi gned i nt mar co = 0, num_mar cos = 2 ;
I ni t _OC( m) ;
whi l e( 1) {
mar co = ( mar co %num_mar cos) +1 ;
swi t ch ( mar co) {
case 1: A; B; C; D1; br eak ;
case 2: A; B; D2; br eak ;
}
mar co_act i vo = 0 ;
whi l e ( mar co_act i vo == 0)
asmwai ; / * esper a i nt er r upci on */
}
}
Divisor tick N ticks
1 0,406901042 24576,000
2 0,813802083 12288,000
4 1,627604167 6144,000
8 3,255208333 3072,000
16 6,510416667 1536,000
32 13,02083333 768,000
64 26,04166667 384,000
SISTEMAS EMPOTRADOS 409
PROGRAMACIN DEL EJECUTIVO
Basado en los OCs
Posibilidad de detectar desbordamientos de marco
#i ncl ude t i mer . h
voi d I ni t _TI M( unsi gned i nt N_Ti cks)
{
T1MODH = N_Ti cks/ 256 ;
T1MODL = N_Ti cks%256 ;
T1SC &= 0x7F ; / / Bor r ar TOF
TOI E_1 = 1 ; / / Habi l i t ar i nt er r upci n
TSTOP_1 = 0 ; / / Act i var t i mer
}
voi d i nt er r upt 6 Over f l ow_Handl er ( voi d)
{
T1SC &= 0x7F ; / * Bor r ar TOF */
i f ( marco_activo)
desbordamiento_de_marco() ;
el se
marco_activo = 1 ;
}
/ * t i mer . h */
vol at i l e unsi gned char mar co_act i vo ;
voi d I ni t _TI M ( unsi gned i nt N_Ti cks) ;
SISTEMAS EMPOTRADOS 410
SISTEMAS EMPOTRADOS
PRIORIDADES E
INTERRUPCIONES
SISTEMAS EMPOTRADOS 411
PLANIFICACION
Mtodos:
Planificacin esttica off-line
Planificacin cclica
Planificacin basada en prioridades
Prioridades estticas
Prioridad al ms frecuente (Rate monotonic)
Prioridad al ms urgente (Deadline monotonic)
Prioridades dinmicas
Proximidad del plazo de respuesta (Earliest deadline first)
Prioridad al de menor holgura (Least Laxity First)
SISTEMAS EMPOTRADOS 412
PRIORIDADES
La prioridad es un atributo de las tareas normalmente ligado a su
importancia relativa en el conjunto de tareas.
Planificacin por prioridades: en cada momento se ejecuta la tarea ms
prioritaria de entre todas las ejecutables (preparadas).
Planificacin expulsiva: se abandona inmediatamente la ejecucin de la
tarea en ejecucin cuando otra ms prioritaria pasa al estado preparada
para ejecucin.
La prioridad de una tarea puede ser:
Esttica: la prioridad permanece
constante a lo largo de la existencia
de la tarea.
Dinmica: la prioridad puede variar
en funcin del estado o modo de
funcionamiento del sistema.
nuevo
activo
ejecucin
preparado
terminado
espera
SISTEMAS EMPOTRADOS 413
PRIORIDADES
Ejemplo:
T1 = (5,20,20)
T2 = (10,40,40)
T3 = (40,80,80)
Prio(T1) > Prio(T2) > Prio(T3)
T1
T2
T3
0 10 20 30 40 50 60 70 80
fin T3
SISTEMAS EMPOTRADOS 414
PRIORIDADES
Factor de utilizacin
Es una medida de la carga del procesador.
El factor de utilizacin de una tarea T
i
es:
El factor de utilizacin total del sistema es
Con un solo procesador, el factor de utilizacin est limitado a
U 1
i
i
i
P
C
U =
= =
= =
n
i
i
i
n
i
i
P
C
U U
1 1
SISTEMAS EMPOTRADOS 415
PRIORIDADES
Planificacin basada en prioridades
Prioridades estticas y planificacin expulsiva.
Frecuentemente se asignan prioridades a las tareas segn su
"importancia".
De esta forma no se puede calcular si se pueden garantizar los plazos
o no. Puede fallar incluso con factores de utilizacin muy bajos.
Ejemplo:
T C P U
T1 10 50 0.20
T2 2 10 0.20
0.40
Si hacemos prio(T1) > prio(T2), T2 falla.
T2
T1
a
a
a a a
fallo
0
10
20 30
fin
SISTEMAS EMPOTRADOS 416
PRIORIDADES
Prioridad al ms frecuente (RMS)
Si (plazo de respuesta = periodo) & (tareas peridicas) entonces la
asignacin de prioridades ms altas a las tareas ms frecuentes
(perodo ms corto) es ptima (Liu & Layland, 1973).
Por ptima se entiende que no hay ninguna otra planificacin mejor. Si
de esta forma no se obtiene un plan admisible, no se puede obtener
con ningn otro mtodo basado en prioridades estticas.
Ejemplo:
T C P U
T1 10 50 0.20
T2 2 10 0.20
0.40
Hacemos ahora prio(T2) > prio(T1), ya que P2 < P1 las dos tareas
terminan a tiempo
T2
T1
a
a
a a a
0
10
20 30
=
...
743 . 0 ) 5 (
757 . 0 ) 4 (
779 . 0 ) 3 (
828 . 0 ) 2 (
000 . 1 ) 1 (
0
0
0
0
0
=
=
=
=
=
U
U
U
U
U
2 ln 693 . 0 ) (
0 lim
= =
n U
n
SISTEMAS EMPOTRADOS 418
PRIORIDADES
Prioridad al ms urgente (DMS)
Si (plazo de respuesta periodo) entonces la asignacin de
prioridades ms altas a las tareas ms urgentes (plazo de respuesta
ms corto) es ptima (Leung & Whitehead, 1982).
Ejemplo:
T C D P
T1 6 15 15
T2 6 10 20
DMS => Prio(T1) < Prio(T2)
T1
T2
0 5 10 15 20 25 30 35 40
SISTEMAS EMPOTRADOS 419
PRIORIDADES. GARANTIA DE PLAZOS
Test 1: En un sistema de n tareas peridicas independientes con
prioridades asignadas en orden de urgencia, se cumplen todos los plazos
de respuesta, para cualquier desfase inicial de las tareas, si:
donde
I
i
se denomina tiempo de interferencia de la tarea T
i
Las tareas espordicas se consideran como si fueran peridicas con
periodo = al tiempo de separacin mnimo
1 , 1 , +
i
i
i
i
D
I
D
C
n i i
j
i
j
j
i
i
C
P
D
I
=
1
1
SISTEMAS EMPOTRADOS 420
IMPLEMENTACIN PRIORIDADES
Posibilidades
Ncleo
Sin ncleo, basado en interrupciones
Una interrupcin peridica por proceso peridico
Una interrupcin externa/interna por proceso espordico
Cdigo de las tareas rutina de interrupcin
Planificacin expulsiva interrupciones encajadas
Prioridades gestin de quin puede interrumpir a quien
SISTEMAS EMPOTRADOS 421
MODELO DE INTERRUPCIONES 68HC08
Secuencia en una interrupcin
espera fin instruccin curso (peor caso DIV, 7 ciclos)
Apilar registros de la CPU: PC, A, X, CCR
NO se apila H (parte alta del registro de ndice)
Enmascarar interrupciones (I = 1)
Por defecto las interrupciones no se anidan
Cargar en el PC el vector de la interrupcin pendiente ms prioritaria
Ejecucin del cdigo de la rutina de interrupcin
En el RTI se desapilan los registros de la CPU
Se retoma el I (se vuelven a habilitar las interrupciones)
Se retoma el PC (se reanuda el programa interrumpido en la siguiente
instruccin)
SISTEMAS EMPOTRADOS 422
MODELO DE INTERRUPCIONES 68HC08
Tabla de interrupciones
Source Flag Mask
INT Register
Flag Priority VectorAddress
Code Warrior
Int Num
Reset None None None 0 $FFFE$FFFF
SW Iinstruction None None None 0 $FFFC$FFFD 1
IRQ pin IRQF IMASK IF1 1 $FFFA$FFFB 2
CGM(PLL) PLLF PLLIE IF2 2 $FFF8$FFF9 3
TIM1 channel 0 CH0F CH0IE IF3 3 $FFF6$FFF7 4
TIM1 channel 1 CH1F CH1IE IF4 4 $FFF4$FFF5 5
TIM1 overflow TOF TOIE IF5 5 $FFF2$FFF3 6
TIM2 channel 0 CH0F CH0IE IF6 6 $FFF0$FFF1 7
TIM2 channel 1 CH1F CH1IE IF7 7 $FFEE$FFEF 8
TIM2 overflow TOF TOIE IF8 8 $FFEC$FFED 9
SPI receiver full SPRF SPRIE IF9 9 $FFEA$FFEB 10
SPI overflow OVRF ERRIE
SPI modefault MODF ERRIE
SP transmitter empty SPTE SPTIE IF10 10 $FFE8$FFE9 11
SCI receiver overrun OR ORIE IF11 11 $FFE6$FFE7 12
SCI noise fag NF NEIE
SCI raming error FE FEIE
SCI parity error PE PEIE
SCI receiver full SCRF SCRIE IF12 12 $FFE4$FFE5 13
SCI input idle IDLE ILIE
SCI transmitter empty SCTE SCTIE IF13 13 $FFE2$FFE3 14
SCI transmission complete TC TCIE
Keyboard pin KEYF IMASKK IF14 14 $FFE0$FFE1 15
ADC conversion complete COCO AIEN IF15 15 $FFDE$FFDF 16
Timebase TBIF TBIE IF16 16 $FFDC$FFDD 17
SISTEMAS EMPOTRADOS 423
RECURSOS EN EL 68HC08
Activacin de procesos:
Peridicos
OCs
TIM1 overflow, TIM1 channel 0, TIM1 channel 1
TIM2 overflow, TIM2 channel 0, TIM2 channel 1
Espordicos
ICs
TIM1 channel 0, TIM1 channel 1
TIM2 channel 0, TIM2 channel 1
IRQ, KBI
SCI, SPI
SISTEMAS EMPOTRADOS 424
RECURSOS EN EL 68HC08
Caractersticas generales de mdulo TIMER
Dispone de 2 timer independientes TIM1 y TIM2
Cada TIM dispone a su vez de 2 canales
Para cada timer
Basado en un contador de 16 bits
Preescalado programable del reloj de entrada
2 canales, para cada canal
input capture flanco subida, flanco bajada o cualquier cambio
output compare activar, desactivar o cambiar una patilla
generar interrupciones canal0, canal1 o desbordamiento contador
Comparte el patillaje con el PTD
SISTEMAS EMPOTRADOS 425
RECURSOS EN EL 68HC08
Diagrama de bloques
de un TIM
SISTEMAS EMPOTRADOS 426
RECURSOS EN EL 68HC08
Registro de estado y control TSC
TOF indica que se ha producido overflow.
Borrado, leer TSC cuando TOF=1 y despus escribir 0 en TOF
TOIE habilitacin de interrupciones
TOIE=1 interrupciones habilitadas
TOIE=0 interrupciones deshabilitadas
TSTOP parada del contador del TIM
TRST reset del TIM (contador y preescalado)
SISTEMAS EMPOTRADOS 427
RECURSOS EN EL 68HC08
Funcin INPUT CAPTURE
CHxF, Chanel x Flag
CHxF = 1 ha ocurrido un flanco
activo
Borrado: lectura de TSCx con
CHxF activo y despus escritura
de un 0
CHxIE, habilitacin de
interrupciones
CHxIE = 1 habilitadas
CHxIE = 0 deshabilitadas
Configuracin como input capture
y seleccin del tipo de flanco
MSxB:MSxA ELSxB:ELSxA Configuracin CHx
00 01 Input capture slo flanco subida
00 10 Input capture slo flanco bajada
00 11 Input capture cualquier flanco
SISTEMAS EMPOTRADOS 428
RECURSOS EN EL 68HC08
Funcin OUTPUT COMPARE
CHxF, Chanel x Flag
CHxF = 1 se ha producido la
igualdad TCNT = TCHx
borrado: lectura de TSCx con
CHxF activo y despus escritura
de un 0
CHxIE, habilitacin de
interrupciones
CHxIE = 1 habilitadas
CHxIE = 0 deshabilitadas
Configuracin como ouput
compare y seleccin del tipo de
flanco
MSxB:MSxA ELSxB:ELSxA Configuracin CHx
01 00 OC sin actuar sobre pin
01 01 Conmutar salida cuando expira
01 10 Salida a "0" cuando expira
01 11 Salida a "1" cuando expira
SISTEMAS EMPOTRADOS 429
EJEMPLO DE IMPLEMENTACIN
Sistema con cuatro tareas
3 tareas peridicas: P1, P2, P3
1 tarea espordica: E
Los datos de los procesos en ms:
Proceso C T D S
E 0.05 0.5 50
P1 1 5 2
P2 2 10 5
P3 1 15 15
Asignacin de prioridades: primero el ms urgente
Prio(E) > Prio(P1) > Prio(P2) > Prio(P3)
SISTEMAS EMPOTRADOS 430
EJEMPLO DE IMPLEMENTACIN
Verificacin de los plazos de respuesta:
15 05 . 8 05 . 0
50
15
2
10
15
1
5
15
1
5 05 . 3 05 . 0
50
2
1
5
2
2
2 05 . 0 1
5 . 0 0 05 . 0
3
3
2
2
3
1
1
3
3
2
2
1
1
2
2
1
1
1
= =
+ =
+
= =
+ =
+
= + =
+
= + = +
D C
P
D
C
P
D
C
P
D
C
D C
P
D
C
P
D
C
D C
P
D
C
D I C
E
E
E
E
E
E
E E E
SISTEMAS EMPOTRADOS 431
EJEMPLO DE IMPLEMENTACIN
Por cada TIMER en un HC08, se dispone de 3 interrupciones peridicas:
Prio(CH0F) > Prio(CH1F) > Prio(TOF)
TIMER1 channel0 P1
TIMER1 channel1 P2
TIMER1 overflow P3
Adems se debe cumplir
Periodo T1CNT > Periodos OCs
Source Flag Mask
INT Register
Flag Priority VectorAddress
Code Warrior
Int Num
TIM1 channel 0 CH0F CH0IE IF3 3 $FFF6$FFF7 4
TIM1 channel 1 CH1F CH1IE IF4 4 $FFF4$FFF5 5
TIM1 overflow TOF TOIE IF5 5 $FFF2$FFF3 6
SISTEMAS EMPOTRADOS 432
EJEMPLO DE IMPLEMENTACIN
Tareas peridicas
P1
voi d i nt er r upt 4 P1_Handl er ( voi d) {
unsi gned char ol d_CH1I E_1, ol d_TOI E_1 ;
/ * Reconoci mi ent o de l a i nt er r upci on */
i f ( CH0F_1) CH0F_1=0;
/ * Sal var est ado de i nt er r upci ones cor r espondi ent es a t ar eas menos pr i or i t ar i as */
ol d_CH1I E_1=CH1I E_1; ol d_T0I E_1=TOI E_1;
/ * Se enmascar an l as i nt er r upci ones per t eneci ent es a t ar eas menos
pr i or i t ar i as par a evi t ar que l e qui t en el pr ocesador a l a t ar ea act ual */
CH1I E_1=0; TOI E_1=0;
/ * Se per mi t en i nt er r upci ones encaj adas par a que puedan ent r ar en ej ecuci on de
f or ma i nmedi at a ( expul si on) aquel l as t ar eas de mas pr i or i dad que l a pr esent e */
asmcl i ;
/ * Codi go de l a t ar ea */
acci on_P1 ( ) ;
/ * Pr ogr amaci on nueva i nt er r upci on*/
T1CH0 = ( T1CH0 + T1) %modul oT1 ;
/ * Se r est aur a l a habi l i t aci n de l as i nt er r upci ones de t ar eas de menor pr i or i dad
que est uvi esen habi l i t adas al pr oduci r se pr esent e i nt er r upci on */
asmsei ;
CH1I E_1 =ol d_CH1I E_1 ; TOI E_1= ol d_T0I E_1 ;
}
SISTEMAS EMPOTRADOS 433
EJEMPLO DE IMPLEMENTACIN
P2 y P3
voi d i nt er r upt 5 P2_Handl er ( voi d) {
unsi gned char ol d_TOI E_1 ;
i f ( CH1F_1) CH1F_1=0;
ol d_T0I E_1=TOI E_1;
TOI E_1=0;
asmcl i ;
acci on_P2 ( ) ;
T1CH1 = ( T1CH1 + T2) %modul oT1 ;
asmsei ;
TOI E_1= ol d_T0I E_1 ;
}
voi d i nt er r upt 6 P3_Handl er ( voi d) {
i f ( TOF_1) TOF_1=0;
asmcl i ;
acci on_P3 ( ) ;
asmsei ;
}
SISTEMAS EMPOTRADOS 434
EJEMPLO DE IMPLEMENTACIN
E
voi d i nt er r upt 15 E_Handl er ( voi d) {
unsi gned char ol d_CH0I E_1, ol d_CH1I E_1, ol d_TOI E_1 ;
/ * Reconoci mi ent o de l a i nt er r upci on */
ACKK = 1 ;
/ * Sal var est ado de i nt er r upci ones cor r espondi ent es a t ar eas menos pr i or i t ar i as */
ol d_CH0I E_1=CH0I E_1; ol d_CH1I E_1=CH1I E_1; ol d_T0I E_1=TOI E_1;
/ * Se enmascar an l as i nt er r upci ones per t eneci ent es a t ar eas menos
pr i or i t ar i as par a evi t ar que l e qui t en el pr ocesador a l a t ar ea act ual */
CH0I E_1=0; CH1I E_1=0; TOI E_1=0;
/ * Se per mi t en i nt er r upci ones encaj adas par a que puedan ent r ar en ej ecuci on de
f or ma i nmedi at a ( expul si on) aquel l as t ar eas de mas pr i or i dad que l a pr esent e */
asmcl i ;
/ * Codi go de l a t ar ea */
acci on_E ( ) ;
/ * Se r est aur a l a habi l i t aci n de l as i nt er r upci ones de t ar eas de menor pr i or i dad
que est uvi esen habi l i t adas al pr oduci r se pr esent e i nt er r upci on */
asmsei ;
CH0I E_1 =ol d_CH0I E ; CH1I E_1 =ol d_CH1I E ; TOI E_1= ol d_T0I E_1 ;
}
SISTEMAS EMPOTRADOS 435
EJEMPLO DE IMPLEMENTACIN
Inicializacin
/ * Bor r ar posi bl es bander i nes act i vados*/
i f ( CH0F_1) CH0F_1=0;
i f ( CH1F_1) CH1F_1=0;
i f ( TOF_1) TOF_1=0;
ACKK = 1 ;
/ * Habi l i t ar i nt er r upci ones*/
CH0I E_1=1;
CH1I E_1=1;
TOI E_1=1;
I NTKBI ER | = 0x02 ; / / PTA1 ent r ada i nt er r upci on
/ * Per i odos de l as t ar eas */
T1 = 5 * mi l i segundo ;
T2 = 10 * mi l i segundo ;
T3 = 15 * mi l i segundo ;
/ * Fi j ar l as pr xi mas i nt er r upci ones */
T1CH0 = T1 ;
T1CH1 = T2 ;
T1MODH= ( unsi gned char ) ( T3 >> 8) ;
T1MODL= ( unsi gned char ) ( T3 & 0xFF) ;
/ * Rel oj en mar cha*/
TSTOP_1=0;
asmcl i ;
}
unsi gned i nt T1, T2, T3 ;
voi d I ni t _Syst em( voi d)
{
unsi gned i nt mi l i segundo ;
/ * Par ar el r el oj y poner l o a 0*/
TSTOP_1=1;
TRST_1=1;
/ * Aj ust e pr eescal ado*/
/ * PS2. . 0 = 000 => t i ck = 0. 407 us */
PS2_1=0; PS1_1=0; PS0_1=0;
mi l i segundo = 2457 ; / / t i cks
/ * Desconcet ar OC de Pi nes*/
ELS0B_1=0; ELS0A_1=0;
ELS1B_1=0; ELS1A_1=0;
/ * Out put Compar e*/
MS0B_1=0; MS0A_1=1;
MS1A_1=1;
/ * KBI , t ar ea espor adi ca E */
MODEK = 0 ; / / Sol o f l anco de baj ada
PTAPUE | = 0x02 ; / / PTA1 con pul l up
DDRA &= 0xFD ; / / PTA1 ent r ada
voi d mai n ( voi d) {
I ni t _Syst em( ) ;
whi l e ( 1) ;
}
SISTEMAS EMPOTRADOS 436
PROGRAMACIN DE UN EJECUTIVO
Basado en un timer + Posibilidad de tarea de fondo
voi d i nt er r upt 6 Over f l ow_Handl er ( voi d)
{
r ear me_i nt er r upci on( ) ;
i f ( marco_activo)
desbordamiento_de_marco() ;
el se {
marco_activo = 1 ;
asmcl i ; / * I nt er r upci ones encaj adas */
Ej ecut a_un_mar co( ) ;
mar co_act i vo = 0 ;
}
}
voi d Ej ecut a_un_mar co( voi d) {
st at i c i nt mar co = 0 ;
i nt num_mar cos = 2 ;
mar co = ( mar co %num_mar cos) +1 ;
swi t ch ( mar co) {
case 1: A; B; C; D1; br eak ;
case 2: A; B; D2; br eak ;
}
}
voi d mai n( voi d) {
unsi gned i nt m= ;
I ni t _OC ( m) ;
whi l e( 1)
pr ocesos_acr i t i cos( ) ;
}
SISTEMAS EMPOTRADOS 437
SISTEMAS EMPOTRADOS
NUCLEOS
MULTITAREA
SISTEMAS EMPOTRADOS 438
APLICACION MULTITAREA CON NCLEO
Una aplicacin multitarea est
compuesta por:
Un conjunto de tareas
Un ncleo
Las tareas compiten por
Tiempo de ejecucin (CPU)
Memoria
Otros recursos (timers, E/S, ...)
El ncleo gestiona todos estos
recursos y ofrece servicios a las
tareas
Reparto del tiempo de procesador
Creacin y destruccin de tareas
Primitivas de comunicacin y
sincronizacin entre tareas
Reloj y funciones basadas en el
tiempo (delays, time outs)
Captura todas las interrupciones y
da servicio a algunas
Gestin de memoria
SISTEMAS EMPOTRADOS 439
APLICACION MULTITAREA CON NCLEO
Ncleo = tarea de ms prioridad
El ncleo mantiene un conjunto de
listas de tareas en diferentes estados
El ncleo entra en la CPU
Interrupciones
Finales de ejecucin
Comunicaciones, servicios
nuevo
activo
ejecucin
preparado
terminado
espera
SISTEMAS EMPOTRADOS 440
APLICACION MULTITAREA
Una tarea est compuesta por:
Un cdigo
Una pila propia
Variables globales
El ncleo mantiene una estructura de
datos por cada tarea: el TCB (task
control block)
Identificacin de la tarea
Punto de entrada
Base de la pila
Prioridad
Contador de programa
Puntero de pila
Contexto
Registros de la CPU
Otras variables
SISTEMAS EMPOTRADOS 441
Ejemplo: control de temperatura y nivel
T H
V
C
T: temperatura
H: nivel de lquido
C: ajuste del calefactor
V: ajuste de la vlvula
Periodo de muestreo deseado:
Temperatura: 5 s
Nivel: 1 s
SISTEMAS EMPOTRADOS 442
Ejemplo: control de temperatura y nivel
voi d CONTROL_TEMP( voi d) {
. . .
Time Si gui ent e ;
Time Per i odo = 5000 ;
Si gui ent e = Clock () ;
whi l e( 1) {
MEDI R( &T) ;
CALCULAR_ACCI ON( T, &C) ;
GENERAR( C) ;
Si gui ent e += Per i odo ;
delay_until ( Si gui ent e) ;
}
}
voi d CONTROL_NI VEL( voi d) {
. . .
Ti me Si gui ent e ;
Ti me Per i odo = 5000 ;
Si gui ent e = Clock () ;
whi l e( 1) {
MEDI R( &H) ;
CALCULAR_ACCI ON( H, &V) ;
GENERAR( V) ;
Si gui ent e += Per i odo ;
delay_until ( Si gui ent e) ;
}
}
voi d mai n( ) {
/ * cr ear l as t ar eas */
at t r _i ni t _T( &at r i but os) ;
t ask_cr eat e( &t hr ead_T, &at r i but os,
( voi d *) CONTROL_TEMP, voi d) ;
at t r _i ni t _H( &at r i but os) ;
t ask_cr eat e( &t hr ead_H, &at r i but os,
( voi d *) CONTROL_NI VEL, voi d) ;
}
SISTEMAS EMPOTRADOS 443
NCLEOS Y PLANIFICACIN
Los ncleos de sistemas empotrados utilizan siempre la planificacin
basada en prioridades:
Planificacin expulsiva / no expulsiva
Esttica
SISTEMAS EMPOTRADOS 444
COMUNICACIN Y SINCRONIZACIN
La dificultad de la programacin concurrente estriba en las
interacciones de los procesos:
Cooperacin para un fin comn
Competencia por el uso de recursos
Son necesarias operaciones de comunicacin y sincronizacin entre
procesos:
Sincronizacin: cumplir restricciones en el orden en el que se ejecutan sus
acciones
Comunicacin: paso de informacin de un proceso a otro
Hay dos formas de realizarlo:
Datos compartidos
Paso de mensajes
SISTEMAS EMPOTRADOS 445
EXCLUSIN MUTUA
Dos procesos compiten cuando comparten:
un recurso
una variable
El acceso al recurso o a la variable debe ser en exclusin mutua.
Seccin crtica: secuencia de instrucciones que debe ejecutarse en
exclusin mutua
Mecanismos de sincronizacin ofrecidos por un ncleo
Prioridades
Semforos
Monitores
SISTEMAS EMPOTRADOS 446
SECCIN CRTICA NO EXPULSABLE
Evitar expulsiones cuando se ejecuta una seccin crtica
Enmascarar interrupciones
No entra el ncleo, ni el reloj, ...
Elevar al mximo la prioridad del cdigo
Posibilidad de cambiar en tiempo de ejecucin la prioridad de un tarea
voi d Ser vi ci o ( . . . ) {
Mask_al l _I nt er r upt s ( ) ;
Ser vi ce_Code( ) ; / * secci on cr i t i ca */
Unmask_al l _I nt er r upt s ( ) ;
r et ur n ;
} voi d Ser vi ci o ( . . . ) {
Nomi nal = Get _Pr i or i t y ( ) ;
Set _Pr i or i t y ( HI GH) ;
Ser vi ce_Code( ) ; / * secci on cr i t i ca */
Set _Pr i or i t y ( Nomi nal ) ;
r et ur n ;
}
SISTEMAS EMPOTRADOS 447
SEMFORO
Es una variable que toma valores enteros no negativos
(counting semaphore)
Las operaciones signal y wait son atmicas.
Los semforos tienen asociada una cola de procesos suspendidos en
espera.
Los semforos son gestionados por el ncleo de ejecucin
S : semaphor e : = val or _i ni ci al ;
wai t ( S) :
si S > 0, S : = S - 1
si no, suspender el pr oceso
si gnal ( S) :
si hay pr ocesos esper ando,
pasar uno de el l os a pr epar ado
si no, S : = S + 1
SISTEMAS EMPOTRADOS 448
SINCRONIZACIN CONDICIONAL
Sincronizacin condicional: una accin de un proceso slo se puede
ejecutar si otro proceso est en un cierto estado o si ha ejecutado ciertas
acciones.
Un semforo binario inicializado a cero sirve para comunicar que se
cumple la condicin
La parte 1b no se ejecuta hasta que P2 avisa que se cumple la condicin
necesaria
condi ci on: semaphor e : = 0 ;
pr oceso P1; - - esper a
pr i nci pi o
r epet i r
<par t e 1a>
Wai t ( condi ci on) ;
<par t e 1b>
f i n r epet i r ;
f i n P1 ;
pr oceso P2; - - avi sa
pr i nci pi o
r epet i r
<par t e 2a>
Si gnal ( condi ci on)
<par t e 2b>
f i n r epet i r ;
f i n P2 ;
SISTEMAS EMPOTRADOS 449
SEMFORO
El problema de
hacer cuadernillos:
pr ogr ama GRAPAR_HOJ AS ;
S: semaphor e : = 0;
pr oceso AMONTONAR;
pr i nci pi o
r epet i r
coger una hoj a de cada mont n ;
dej ar el gr upo en l a mesa ;
si gnal ( S) ;
hast a que se acaben l as hoj as;
f i n ;
pr oceso GRAPAR ;
pr i nci pi o
r epet i r
wai t ( S) ;
t omar un gr upo de l a mesa ;
gr apar l o ;
hast a que se acaben l os gr upos;
f i n ;
f i n GRAPAR_HOJ AS;
SISTEMAS EMPOTRADOS 450
SEMFORO: EXCLUSIN MUTUA
La exclusin mutua puede asegurarse con un semforo binario, inicializado
a uno
mutex (MUTual EXclusion)
mut ex: semaphor e : = 1 ;
pr oceso P1;
pr i nci pi o
r epet i r
Wai t ( mut ex) ;
<secci n cr t i ca>
Si gnal ( mut ex)
<secci n no cr t i ca>
f i n r epet i r ;
f i n P1 ;
pr oceso P2;
pr i nci pi o
r epet i r
Wai t ( mut ex) ;
<secci n cr t i ca>
Si gnal ( mut ex)
<secci n no cr t i ca>
f i n r epet i r ;
f i n P2 ;
CUIDADO: si un proceso olvida liberar
el mutex, el recurso queda bloqueado
SISTEMAS EMPOTRADOS 451
MONITOR
Es un mdulo que encapsula las secciones crticas asociadas a una
variable o un dispositivo fsico en forma de procedimientos que son
llamados por los procesos
Slo se puede acceder al
elemento compartido a
travs de los procedimientos
del monitor
Las llamadas a los
procedimientos del monitor
se ejecutan en exclusin
mutua.
Moni t or Cont ador ;
n: ent er o : = 0 ;
pr ocedi mi ent o i ncr ement a;
pr i nci pi o
n: =n+1;
f i n;
pr ocedi mi ent o escr i be_bor r a;
pr i nci pi o
escr i bi r n;
n: =0;
f i n;
f i n Cont ador ;
SISTEMAS EMPOTRADOS 452
MONITOR
Hay lenguajes que soportan monitores
ej: protected de Ada 95
Pueden programarse
mediante semforos
/ * f i cher o cont ador . c */
#i ncl ude cont ador . h
#i ncl ude <semaphor e. h>
/ * var i abl es pr i vadas del moni t or */
st at i c semaphor e mut ex_cont ador ;
st at i c i nt n = 0 ;
voi d i ncr ement a( voi d) {
wai t ( mut ex_cont ador ) ;
n: =n+1;
si gnal ( mut ex_cont ador ) ;
}
voi d escr i be_bor r a( voi d) {
wai t ( mut ex_cont ador ) ;
escr i bi r ( n) ;
n: =0;
si gnal ( mut ex_cont ador ) ;
}
/ * f i cher o cont ador . h */
voi d i ncr ement a( voi d) ;
voi d escr i be_bor r a( voi d) ;
SISTEMAS EMPOTRADOS 453
EXCL. MUTUA E INTERRUPCIONES
Las rutinas de servicio de interrupciones (ISR) se ejecutan en concurrencia
con el resto de procesos.
Exclusin mutua => inhibir interrupciones
st at i c i nt n = 0 ;
voi d r ut i na_i nt er r upci on( voi d) {
n: =n+1;
}
voi d escr i be_bor r a( voi d) {
i nhi bi r _i nt er r upci on( ) ;
escr i bi r ( n) ;
n: =0;
act i var _i nt er r upci on( ) ;
}
SISTEMAS EMPOTRADOS 454
BUZN
Comunicacin asncrona o por mensajes
Un proceso P produce y enva una secuencia de datos a otro proceso C
que los recibe y consume. Los datos son transmitidos en porciones
discretas denominadas mensajes.
Es posible que P produzca un mensaje cuando C no est en disposicin
de recibirlo. Para evitar que P espere se introduce un rea de
almacenamiento de mensajes donde P puede colocar sus mensajes hasta
que C los lea: BUZON o COLA DE MENSAJES
Es posible que un buzn tenga varios procesos emisores y varios
receptores.
P
C
B
SISTEMAS EMPOTRADOS 455
Manejo de buzones:
La poltica de manejo de un buzn puede ser:
Si al enviar un mensaje el buzn est lleno:
el emisor espera hasta que haya espacio
el emisor espera, con un tiempo mximo
el mensaje se descarta
se descarta otro mensaje (p.ej. el ms antiguo)
Si al solicitar un mensaje el buzn est vaco:
el receptor espera hasta que haya mensaje
el receptor espera, con un tiempo mximo
se le indica que no hay mensaje y puede continuar
BUZN
B : buf f er max of T
send( M, B) r ecei ve( M, B)
SISTEMAS EMPOTRADOS 456
NCLEOS PARA C y DSPs
TMS320F2812
DSP/BIOS OS (Texas Instruments)
68HC08
CMX-Tiny+ (CMX Systems)
Compatible con CodeWarrior
ProOSEK (OSE Systems)