Está en la página 1de 458

SISTEMAS EMPOTRADOS

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

s 0,407 0,814 1,628 3,255 6,510 13,021 26,042


desbordamineto ms 26,7 53,3 106,7 213,3 426,7 853,3 1706,7
PS2-PS0 000 001 010 011 100 101 110
SISTEMAS EMPOTRADOS 79
Mdulo TIMER, TIM
Registro de mdulo
T1MODH, T1MODTL parte alta y baja del valor de overflow
SISTEMAS EMPOTRADOS 80
Mdulo TIMER, TIM
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 81
Mdulo TIMER, TIM
Cada canal del TIM channel0 y channel1 puede ser configurado como input
capture y output compare
x puede indicar canal 0 1
output compare cuando
T1CNTH:T1CNTL coincide con el
valor almacenado en T1CHxH:
T1CHxL :
se activa un bandern CHxF
podra provocarse una
interrupcin
puede cambiarse la tensin de
salida de un pin
aplicaciones
generacin de ondas peridicas
generacin de pulsos
Generacin de interrupciones
dependientes del tiempo
input capture El cambio de
nivel de tensin de un pin
congela el valor del T1CNT en 2
registros T1CHxH: T1CHxL
activa un banderin CHxF
podra provocar una interrupcin
aplicaciones
medida precisa instante evento
medida de intervalos
medida de frecuencia
interrupcin externa adicional
SISTEMAS EMPOTRADOS 82
Mdulo TIMER, TIM
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 83
Mdulo TIMER, TIM
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 84
Mdulo TIMER, TIM
Generacin de ondas PWM
La conversin D/A se realiza mediante PWM
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
Vmin
Vmx
Toff
Ton
Tpwm
( )
T
T
V V V V
on
min mx min
+ =
clear on output compare toggle on overflow
SISTEMAS EMPOTRADOS 85
Mdulo TIMER, TIM
Generacin de ondas PWM
TOVx (registro TSCx) habilitan el cambio del estado lgico de las
patillas TCHx ante un overflow del TCNT
Cuando el canal est inicializado como OUTPUT COMPARE TOVx = 1
fuerza el cambio del valor del pin asociado en un overflow
En otro caso no tiene efecto
CHxMAX (registro TSCx)
CHxMAX = 1 el tiempo de ON del PWM es el 100% del periodo
SISTEMAS EMPOTRADOS 86
Lnea serie sncrona, SPI
SPI = Synchronous Serial Peripheral Interface
Comparte patillas con el puerto D
Sncrona => envo del reloj
Seales
MOSI: Master Output Slave Input
MISO: Master Input Slave Output
SPSCK: Reloj del SPI
SS = 0 (slave)
SS = 1 (master)
SISTEMAS EMPOTRADOS 87
Lnea serie sncrona, SPI
Control
SPCR: registro de control
SPE = 1 (SPI activada)
SPMSTR = 0 (slave) / = 1 (master)
CPOL, CPHA: configuracin del reloj
SPRIE habilitacin interrupcin de recepcin
SPTIE habilitacin de la interrupcin de transmisin completa
SISTEMAS EMPOTRADOS 88
Lnea serie sncrona, SPI
Estado y control
SPSCR: registro de estado y control
SPR0, SPR1: velocidad de transferencia (bits/s)
Baud rate = CGMOUT / (2 x BD)
SPRF bit que indica que el receptor est lleno
Si SPRIE = 1 interrupcin
SPTE bit que indica que el transmisor est vaco
Si SPTIE = 1 interrupcin
OVRF, ERRIE, MODF, MODFEN estado y control de errores
SISTEMAS EMPOTRADOS 89
Lnea serie sncrona, SPI
Registro de datos
SPDR: Dos registros ocupan la misma posicin de memoria ($0012)
Lectura: buffer con el ltimo byte recibido
Escritura: buffer registro de desplazamiento
SISTEMAS EMPOTRADOS 90
Lnea serie asncrona, SCI
SCI = Asynchronous Serial Communications Interface
Comparte patillas con el PTE
Full duplex, Baud rate programable
Control de errores
SCDR: registro de datos
Dos registros separados en la misma posicin de memoria ($0018)
Escritura => transmisin, Lectura => recepcin
Registro con buffer
Recepcin - SCDR
Transmisin - SCDR
TXD
RXD
PTE1
PTE0
68HC08
PERIFERICO
SISTEMAS EMPOTRADOS 91
Lnea serie asncrona, SCI
Seleccin del Baud Rate
Registro SCBR
SCP0, SCP1 bits de seleccin del preescalado
SCR0..2 bit de seleccin del divisor
SISTEMAS EMPOTRADOS 92
Lnea serie asncrona, SCI
Inicializacin
SCC1: registro de control
ENSCI = 1 SCI habilitada
SCC2: registro de control
TE = 1 habilitacin de la transmisin
RE = 1 habilitacin de la recepcin
SISTEMAS EMPOTRADOS 93
Lnea serie asncrona, SCI
Interrupciones
Reg. De control SCC2
Reg. De estado SCS1
Interrupcin Flag Habilit. Borrado flag
Transmisor vaco SCTE SCTIE Leer SCS1 (con SCTE=1), escribir en SCDR
Transmisin
completa
TC TCIE Automticamente cuando hay un nuevo dato a
enviar
Receptor lleno SCRF SCRIE Leer SCS1 (con SCRF=1), leer SCDR
Receptor vaco IDLE ILIE Leer SCS1 (con IDLE=1), leer SCDR
SISTEMAS EMPOTRADOS 94
Lnea serie asncrona, SCI
Formato de transmisin
Reg. SCC1
M long. de carcter
M=0 8 bits
M=1 9 bits
PEN habilitacin de
paridad
PTY tipo de paridad
Reg. SCC3
R8 bit adicional en
recepcin
T8 bit adicional en
transmisin
SISTEMAS EMPOTRADOS 95
Mdulo base de tiempo, TBM
TBM Time Base Module
Generacin de interrupciones peridicas
Frecuencia configurable
SISTEMAS EMPOTRADOS 96
Mdulo base de tiempo, TBM
Activacin y control registro TBCR
TBIF Time base interrupt flag
TBIF = 1 interrupcin pendiente
TACK Time base ACKnowledge
Escritura de un 1 borrado del flag
TBIE Habilitacin de la interrupcin
TBON Habilitacin del mdulo
SISTEMAS EMPOTRADOS 97
Mdulo base de tiempo, TBM
Seleccin de la frecuencia registro TBCR
Bits TBR0..TBR2
Ejemplo de seleccin con un reloj externo de 32 kHz
SISTEMAS EMPOTRADOS 98
Otros mdulos
Computer Operating Properly (COP)
Si no se reinicializa antes de un
cierto tiempo provoca un RESET
Mecanismo de seguridad
Low-Voltage Inhibit (LVI)
Provoca un RESET si la
alimentacin desciende por
debajo de un cierto umbral
System Integration Module (SIM)
Controla todas las actividades del
C
Mdulo de integracin
Monitor ROM (MON)
Permite la puesta a punto de un
programa en el tarjet
Programa residente en ROM
Comunicaciones mediante lnea
serie (PTA0)
Break Module (BRK)
Permite el uso de un breakpoint
hardware (puesta a punto)
Genera una SWI
Registro de configuracin
Habilitacin de: COP, LVI,
instruccin de STOP
Configuracin de: frecuencia del
COP, LVI, fuente del reloj para la
SCI
SISTEMAS EMPOTRADOS 99
Resumen Interrupciones
Flags y su borrado
Source Flag Mask Enable Acknowledge bit Borrado flag
IRQ pin IRQF IMASK ACK Vector fetch/ACK=1
TIM1 channel 0 CH0F CH0IE Read T1SC0 & CH0F=0
TIM1 channel 1 CH1F CH1IE Read T1SC1 & CH1F=0
TIM1 overflow TOF TOIE Read T1SC & TOF=0
TIM2 channel 0 CH0F CH0IE Read T2SC0 & CH0F=0
TIM2 channel 1 CH1F CH1IE Read T2SC1 & CH1F=0
TIM2 overflow TOF TOIE Read T2SC & TOF=0
SPI receiver full SPRF SPRIE Read SPSCR & read SPDR
SPI transmitter empty SPTE SPTIE Write SPDR
SCI receiver full SCRF SCRIE Read SCS1 & read SCDR
SCI input idle IDLE ILIE Read SCS1 & read SCDR
SCI transmitter empty SCTE SCTIE Read SCS1 & write SCDR
SCI transmission complete TC TCIE Write SCDR
Keyboard pin KEYF IMASKK ACKK Vector fetch/ACKK=1
ADC conversion complete COCO AIEN
Timebase TBIF TBIE TACK TACK = 1
SISTEMAS EMPOTRADOS 100
SISTEMAS EMPOTRADOS
El TMS320F2812
SISTEMAS EMPOTRADOS 101
DESCRIPCIN GENERAL
Comunicacin serie: SPI, SCI,
CAN y McBSP
Conversor AD con 16 canales y
12 bits
Dos event managers
Generacin PWM
Lectura encoders
Input capture, output compare
Tres estados de bajo consumo:
IDLE, STANBY y HALT
Instruccin MAC
CPU segmentada
Tres Timers de 32 bits
56 pines de entrada/salida digital
Caractersticas bsicas:
Frecuencia de bus mx. 150
MHz
Alimentacin 3.3 V
CPU 1.8 V
Memoria interna: 128K flash, 1K
OTP ROM, 16K RAM
Arquitectura harvard
3 buses (1 programa + 2 datos)
Bus datos 32 bits
Bus direcciones:
32 bits (datos)
22 bits (programa)
Mdulo de generacin de reloj
con PLL
Interrupciones vectorizadas con
prioridades
SISTEMAS EMPOTRADOS 102
DESCRIPCIN
GENERAL
Diagrama
de bloques
SISTEMAS EMPOTRADOS 103
DESCRIPCIN
GENERAL
Mapa de memoria
SISTEMAS EMPOTRADOS 104
DESCRIPCIN GENERAL
Low Power Modes (modos de bajo consumo)
IDLE
CPU queda en bajo consumo
Se puede seleccionar los perifricos que continan funcionando
Salida del modo: RESET o interrupcin (externa o perifrico)
STANDBY
CPU y perifricos apagados (sin reloj)
El oscilador, el wachdog y el PLL siguen funcionando
Salida del modo: RESET, wachdog, seales externas seleccionables e
interrupcin externa no enmascarable
HALT
CPU y perifricos apagados (sin reloj)
Oscilador y PLL apagados
Salida del modo: RESET e interrupcin externa no enmascarable
Modo de menor consumo todo el DSP inactivo
SISTEMAS EMPOTRADOS 105
DESCRIPCIN GENERAL
Encapsulados
179-Ball GHH (12x12 mm) 176-Pin PGF LQFP (24x24 mm)
SISTEMAS EMPOTRADOS 106
DESCRIPCIN GENERAL
Familia 2000
Parametric C28x Fixed-Point DSPs C24x Fixed-Point DSPs
MHz 150 20 - 40
MIPS 150 20 - 40
Special
Instructions/Capabilities
C/C++ Efficient, Code
Compatible with C24x
Devices
Code Compatible with
C28x Devices
Pricing (10kU) $17.98 to $22.99 $2 to $14.64
Peripherals /Co-
processors
128K or 64K Flash, 12-bit
ADC, Multichanneled
Buffered Serial Port
(McBSP), 2 UARTs, 2
Event Managers,
Enchanced Controller
Area Network (eCAN)
Communication
Controller, SPI, 56 GPIO,
Watch Dog Timer
32K, 16K or 8K Flash, 10-
bit ADC, SPI, UART, 2
Event Managers,
Controller Area Network
(CAN), Communication
Controller
SISTEMAS EMPOTRADOS 107
C28x CPU
Caractersticas bsicas
Hasta 150 MHz de frecuencia
ALU de 32 bits, coma fija
MAC y multiplicacin de 32x32 bits resultado de 64 bits
Pipeline de 8 etapas
Buses (harvard)
Buses de direccin
PAB Program address bus (22-bit).
DRAB Data-read address bus (32-bit).
DWAB Data-write address bus (32-bit).
Buses de datos
PRDB Program-read data bus (32-bit).
DRDB Data-read data bus (32-bit).
DWDB Data-/Program-write data bus (32-bit).
SISTEMAS EMPOTRADOS 108
C28x CPU
Diagrama de la CPU
Registros
Acumulador ACC (32 b)
8 reg auxiliares XAR0..7 (32 b)
Contador de progr. PC (22 b)
Registro de vuelta RPC (22 b)
Puntero de pila SP (16 b)
Control de interrupciones IFR,
IER, DBGIER (16 b)
Reg. de estado ST0..1 (16 b)
Reg. de producto P, XT (32 b)
Puntero de pgina DP (16 b)
SISTEMAS EMPOTRADOS 109
C28x CPU
Pipeline
Fetch: F1 (PC bus direcciones), F2 (lectura instruccin)
Decode: D1, D2
Read: R1 (direccin dato bus), R2 (lectura dato)
Execute: E
Write: W (escritura del resultado)
SISTEMAS EMPOTRADOS 110
C28x CPU
Modos de direccionamiento
Directo: DP (data page) + desplazamiento de 6 7 bits
Sobre el puntero de pila
SP + desplazamiento de 6 bits
Pre-decremento o post-incremento de SP
Indirecto sobre un registro auxiliar
XARx direccin de un dato
XARx + desplazamiento de 3 bits
XARx + desplazamiento XARi
Post-incremento o pre/post-decremento de XARx
Registro
Un registro es el origen o destino del dato
SISTEMAS EMPOTRADOS 111
C28x CPU
Conjunto de instrucciones
Para el procesado digital de seal
Multiplicacin
16 bits x 16 bits resultado 32 bits
32 bits x 32 bits resultado
32 bits de la parte alta
32 bits de la parte baja
Multiplica y acumula
16 bits x 16 bits MAC resultado 32 bits
32 bits x 32 bits MAC resultado
32 bits de la parte alta
32 bits de la parte baja
SISTEMAS EMPOTRADOS 112
Reloj y PLL
Fuente de reloj para el DSP
Reloj externo a la frecuencia de trabajo
Reloj externo + PLL multiplicador de la frecuencia
SISTEMAS EMPOTRADOS 113
Reloj y PLL
Posibilidades de reloj externo
20 MHz .. 35 MHz
Posibles conexiones
PLL programado por el registro PLLCR
SISTEMAS EMPOTRADOS 114
Reloj
Se puede
habilitar el
reloj de cada
perifrico
indepen-
dientemente
SISTEMAS EMPOTRADOS 115
Reloj
Habilitacin reloj perifrico
Peripheral Clock Control (PCLKCR) Register
SISTEMAS EMPOTRADOS 116
Reloj
Preescalado del reloj de los perifricos
Low-Speed Peripheral Clock
Prescaler (LOSPCP) Register
High-Speed Peripheral Clock
Prescaler (HISPCP) Register
SISTEMAS EMPOTRADOS 117
Interrupciones
Interrupciones externas a la CPU
96 posibles fuentes multiplexadas
en 12 grupos de 8 interrupciones
Cada grupo activa una
interrupcin de la CPU
(INT1..INT12)
41 de los perifricos
1 Watchdog
2 interrupciones externas
XINT1 y XINT2
1 timer 0
Resto no conectadas
Interrupcin externa XINT13
NMI o INT13
Timer 2 INT14 (uso por RTOS)
Timer 1 INT13 (uso por RTOS)
Caractersticas bsicas
La CPU soporta
NMI interrupcin no
enmascarable
INT1..INT14, RTOSINT,
DLOGINT 16 interrupciones
enmascarables
Interrupciones software no
enmascarables
Tabla de 128 vectores diferentes
de interrupcin
Slo 76 efectivas
Reset
Interrupciones software
12 de usuario USER0..USER11
(traps)
ILLEGAL cdigo de instruccin
ilegal
SISTEMAS EMPOTRADOS 118
Interrupciones
RESET
Fuentes
Encendido
Pin de RESET RS
Acciones
Detiene todas las operaciones en curso y vaca la pipeline
Inicializa el valor de ciertos registros
Carga en el PC el contenido del vector de RESET
0x3F FFC0 situado en ROM
Salto a InitBoot. Segn el estado de algunos pines:
Salto a la Flash 0x3F 7FF6 (debe contener un salto al
comienzo del programa)
Salto a H0 SRAM 0x3F 8000
Salto a la memoria OTP 0x3D 7800
Ejecucin de una rutina de carga
SISTEMAS EMPOTRADOS 119
Interrupciones
Esquema de las
fuentes de interrupcin
SISTEMAS EMPOTRADOS 120
Interrupciones
PIE (Periferal Interrupt Expansion)
Multiplexa 96 interrupciones en nicamente 12 (INT1..INT12) que son
entregadas a la CPU
Permite un vector de interrupcin individual para cada una
Flag y habilitacin individual
SISTEMAS EMPOTRADOS 121
Interrupciones
PIE
SISTEMAS EMPOTRADOS 122
Interrupciones
Habilitacin y flags de interrupciones
Mscara general de las interrupciones enmascarables INTM
(registro de estado ST1)
INTM = 0 interrupciones globalmente no enmascaradas
asm(" clrc INTM ; Enable global interrupts");
INTM = 1 interrupciones globalmente enmascaradas
asm(" setc INTM ; Mask global interrupts");
Dos niveles de habilitacin y flags
Nivel CPU interrupciones INT1..INT14
Nivel PIE 96 interrupciones agrupadas en 12 grupos de 8
SISTEMAS EMPOTRADOS 123
Interrupciones
Nivel de CPU
Habilitacin
Registro IER (Interrupt Enable Register)
INTx = 1 habilitada
Flag
Registro IFR (Interrupt Flag Register)
INTx = 1 interrupcin pendiente
Ambos registros (16 bits) tienen la misma estructura
SISTEMAS EMPOTRADOS 124
Interrupciones
Nivel PIE
Habilitacin global del PIE ENPIE = 1 en el registro PIECTRL
Agradecimiento de una interrupcin de un bloque de 8
Registro PIEACK
PIEACKx = 1 interrupcin pendiente en el bloque x, no se pasan nuevas
interrupciones a la CPU
Borrado escritura por la aplicacin de un 1 en el correspondiente bit
SISTEMAS EMPOTRADOS 125
Interrupciones
Nivel PIE
Un registro de habilitacin para cada bloque de 8
PIEIERx (x = 1..12)
PIEIERx.y = 1 interrupcin habilitada
Un registro de flag para cada bloque de 8
PIEIFRx (x = 1..12)
PIEIFRx.y = 1 interrupcin pendiente
Ambas clases de registros (16 bits) tienen la misma estructura
SISTEMAS EMPOTRADOS 126
Interrupciones
Interrupciones externas
XINT1 y XINT2
Cada una tiene un registro de habilitacin y configuracin XINTxCR
Enable = 1 interrupcin habilitada
Polarity = 0 flanco de bajada
Polarity = 1 flanco
de subida
NMI
Registro de configuracin XNMICR
Enable y Polarity idem.
Select = 0 origen Timer 1
Select = 1 origen XNMI
SISTEMAS EMPOTRADOS 127
Interrupciones
Respuesta a una interrupcin del
PIE
Por defecto no se permiten
interrupciones encajadas
Los flags de la CPU y del PIE
son borrados de forma
automtica
El borrado del PIEACKx debe
hacerlo la rutina de
interrupcin
La pipeline es vaciada
Se completan las
instrucciones decodificadas
El resto se eliminan
SISTEMAS EMPOTRADOS 128
Entradas/salidas paralelas, GPIO
56 pines I/O todos bidireccionales
Organizados en 5 puertos
A,B,D,E,F,G
Pullup o pulldown interno
Compartidos con otros perifricos
Acciones sobre cada lnea
Set
Clear
Toggle
Read
Write
Filtrado de ruido
Qualification
SISTEMAS EMPOTRADOS 129
Entradas/salidas paralelas, GPIO
Port pins MUX direc. qualif. set clear toggle data
GPASET GPATOGGLE
GPBTOGGLE
GPDTOGGLE
GPETOGGLE
GPFTOGGLE
GPGTOGGLE
GPBSET
GPADAT
GPBDAT
GPDDAT
GPEDAT
GPFDAT
GPDSET
GPESET
GPFSET
GPGSET GPGDAT
GPACLEAR
GPBCLEAR
GPDCLEAR
GPECLEAR
GPFCLEAR
GPGCLEAR
Peripheral
A 16 GPAMUX GPADIR GPAQUAL EV-A
B 16 GPBMUX GPBDIR GPBQUAL EV-B
D 4 GPDMUX GPDDIR GPDQUAL EV-A
EV-B
E 3 GPEMUX GPEDIR GPEQUAL Ext. Int.
F 15 GPFMUX GPFDIR - SPI, SCI,
CAN, McBSP
G 2 GPGMUX GPGDIR - SCI
SISTEMAS EMPOTRADOS 130
Entradas/salidas paralelas, GPIO
Puerto A (similarmente B, D, E, F, G)
GPAMUX
GPAMUXx = 0 GPIOAx (GPIO pin)
GPAMUXx = 1 Perifrico
GPADIR
GPADIRx = 0 Entrada
GPADIRx = 1 Salida
GPASET, GPACLEAR, GPATOGGLE
Escritura BITx = 1 Accin
Escritura BITx = 0 sin efecto
GPADAT
Pin de entrada la lectura devuelve el estado lgico del pin
Pin de salida la escritura fuerza el estado lgico del pin
SISTEMAS EMPOTRADOS 131
Event Manager, EV-A y EV-B
Caractersticas generales
Dos mdulos independientes e iguales EV-A y EV-B
Funciones de cada mdulo
Input Capture
Output Compare
Generacin de seales PWM (hasta 8 por mdulo)
Lectura de encoders (Quadrature-Encoder Pulses)
Generacin de periodos de muestreo para el ADC
Interrupciones diversas
Elementos de cada mdulo
2 timers (up/down) de 16 bits
frecuencia CLOCK_CPU..CLOCK_CPU/128
Varios registros de comparacin PWM, OC
2 registros de periodo
Lgica QEP, unidad de captura
SISTEMAS EMPOTRADOS 132
Event Manager, EV-A y EV-B
Interfase
SISTEMAS EMPOTRADOS 133
Event Manager,
EV-A y EV-B
Estructura
interna
SISTEMAS EMPOTRADOS 134
Event Manager, EV-A y EV-B
Habilitacin y configuracin de los timers de propsito general
4 timers Tx (x = 1..4)
T1 y T2 en EV-A
T3 y T4 en EV-B
Cada Tx
1 registro contador TxCNT (16 bits)
1 registro de periodo TxPR (16 bits)
1 registro de control TxCON
Preescalado TPS2-TPS0
Modo de operacin TMODE1-TMODE0
Habilitacin TENABLE = 1
TPS2-
TPS0
Frec. Tick
x = 150 MHz
000 x/1
x/2
x/4
x/8
x/16
x/32
x/64
x/128
001
6.66 ns
13.3 ns
26.6 ns
53.3 ns
106.6 ns
213.3 ns
426.6 ns
010
011
100
101
110
111 853.3 ns
x = Frecuencia de reloj de la CPU
SISTEMAS EMPOTRADOS 135
Event Manager, EV-A y EV-B
Modos de operacin de los timers de propsito general
TMODE1-
TMODE0
Modo Descripcin
00 Stop/Hold Contador parado
01 Continous-Up/-Down Cuenta hacia arriba hasta el periodo
cuenta hacia abajo hasta 0 sigue
contando hacia arriba
10 Continous-Up Cuenta hacia arriba hasta el periodo
TxCNT = 0 sigue contando
11 Directional-Up/-Down Cuenta hacia arriba o hacia abajo
segn el valor de del pin TDIRA/B
SISTEMAS EMPOTRADOS 136
Event Manager, EV-A y EV-B
Interrupciones de los timers de propsito general
Overflow TxCNT = 0xFFFF
Flag T1OFINT (bit 10) del registro EVAIFRA (overflow del T1)
Habilitacin T1OFINT (bit 10) del registro EVAIMRA (overflow del T1)
Underflow TxCNT = 0x0000
Flag T1UFINT (bit 9) del registro EVAIFRA (underflow del T1)
Habilitacin T1UFINT (bit 9) del registro EVAIMRA (underflow del T1)
Period match TxCNT = TxPR
Flag T1PINT (bit 7) del registro EVAIFRA (period match del T1)
Habilitacin T1PINT (bit 7) del registro EVAMFRA (period match del T1)
Borrado de los flags escribiendo un 1
SISTEMAS EMPOTRADOS 137
Event Manager, EV-A y EV-B
Funcin de comparacin
Registro TxCMPR (16 bits)
Evento TxCNT = TxCMPR
Esta funcin est asociada a una salida del DSP
TxPWM_TxCMP
Cada vez que se produce la igualdad cambio del valor de la salida
Cuando el TxCNT alcanza el periodo cambio del valor de la salida
As puede generar un PWM
Compare Ton
Period Periodo del PWM
SISTEMAS EMPOTRADOS 138
Event Manager, EV-A y EV-B
Funcin de comparacin
Habilitacin
Registro de control del EV-A/-B GPTCONA
TCMPOE = 1 salidas del mdulo A/B sensibles a las comparaciones
TxCMPOE = 1 salida de comparacin del Tx habilitada
Registro de control TxCON
TECMPR = 1 Habilitacin de la comparacin
Interrupcin cuando se produce la comparacin
Flag T1CINT en EVAIFRA y T2CINT en EVAIFRB (idem para T3 y T4)
Habilitacin T1CINT en EVAIMRA y T2CINT en EVAIMRB (idem para T3
y T4)
SISTEMAS EMPOTRADOS 139
Event Manager, EV-A y EV-B
Generacin de un periodo de muestreo para el conversor AD
Habilitacin y configuracin en los registros GPTCONA y GPTCONB
Pareja de bits TxTOADC
TxTOADC Descripcin
00 Activacin ADC deshabilitada
01 Toma muestra en underflow de Tx
10 Toma muestra al alcanzar el periodo el Tx
11 Toma muestra en el compare del Tx
SISTEMAS EMPOTRADOS 140
Event Manager, EV-A y EV-B
PWM
Adems del PWM que puede generar cada GPT cada mdulo posee
tres registros de comparacin espacializados en PMW
Cada uno gestiona dos salidas PWMi y PWMi+1 (una es la inversa
de la otra)
Registros
Activacin bits CENABLE, FCMPOE, FCNP(1,2,3)OE en COMCON-A/-B
Comparacin CMPRx
Caractersticas adicionales deadband, generacin automtica de las
tres fases para motores de alterna
SISTEMAS EMPOTRADOS 141
Event Manager, EV-A y EV-B
Funcin Input Capture
Tres registros de captura por cada mdulo (A y B) CAP(1,2,3)FIFO
Cada una captura una entrada CAPx (x = 1..3) se almacena el valor
del TxCNT
Sensible a flancos de subida o de bajada o a ambos
Configuracin CAPCONA / B
Posibilidad de generacin de interrupciones
Habilitacin EV(A,B)IMRC
Flags EV(A,B)IFRC
Funcin lectura de encoder
Quadrature Encoder Pulse (QEP) Circuit
Multiplexado con la unidad de captura
Control de posicin y velocidad de motores
SISTEMAS EMPOTRADOS 142
Convertidor analgico-digital, ADC
Caractersticas generales
12 bits de conversin
1 convertidor
16 canales
Entrada analgica 0..3 V
Tiempo de conversin
Maximo 200 ns
16 registros de resultado de 16 bits
Autosecuenciamiento de canales
Diversas fuentes de comienzo de conversin
3
_
4095 _
ADCLO entrada Voltaje
Digital Valor

=
SISTEMAS EMPOTRADOS 143
Convertidor analgico-digital, ADC
Diagrama de bloques
SISTEMAS EMPOTRADOS 144
Convertidor analgico-digital, ADC
Secuenciadores
Dos grupos de 8 canales independientes
Cada uno con su sample-and-hold
Cada uno con su secuenciador
Los dos secuenciadores pueden funcionar independientes (SEQ1 y
SEQ2) o encadenados (SEQ)
Los secuenciadores indican qu canales y en qu orden se convierten
cada vez que se inicia una conversin
Para cada SEQx
Nmero de canales a convertir cada vez que se inicia una conversin
MAXCONV
Orden de los canales
CHSELSEQ1 CONV00 CONV03
CHSELSEQ2 CONV04 CONV07
CHSELSEQ3 CONV08 CONV11
CHSELSEQ4 CONV12 CONV15
SISTEMAS EMPOTRADOS 145
Convertidor analgico-digital, ADC
Diagrama
SEQ
SISTEMAS EMPOTRADOS 146
Convertidor analgico-digital, ADC
Dos modos
Conversin continua se pone los secuenciadores en bucle y las
conversiones no se detienen
Start-stop A la llegada de un seal de inicio de conversin se
convierten nicamente el nmero de canales indicado en MAXCONV
Inicio de conversin, SOC
Por software SEQ1, SEQ2, SEQ
EVA SEQ1, SEQ
EVB SEQ2, SEQ
Pin de entrada GPIOE1/XINT2_ADCSOC SEQ1, SEQ
Interrupciones
Fin de las conversiones de un secuenciador
SISTEMAS EMPOTRADOS 147
Convertidor analgico-digital, ADC
Habilitacin y configuracin
ADCTRL1
CONT RUN = 1 modo
conversin continua
SEQ CASC = 1 SEQ1 y SEQ2
en cascada
ADCTRL3 encendido del ADC
ADCRFDN = 1, ADCBGDN = 1
5 ms ADCPWDN = 1
ADC_ST_FLG
INT SEQx CLEAR escritura de
un 1 borrado del flag
INT SEQx flag
ADCTRL2
EVB SOC SEQ habilitacin del
SOC del SEQ por EVB
RST SEQx RESET del
secuenciador
SOC SEQx SOC por software
INT ENA SEQx = 1
interrupcin habilitada
EXT SOC SEQ1 = 1 SOC por
seal externa habilitada
EVA SOC SEQ1 = 1
habilitacin del SOC de SEQ1 por
EVA
EVB SOC SEQ2 = 1
habilitacin del SOC de SEQ2 por
EVB
SISTEMAS EMPOTRADOS 148
32 bits CPU timers
El DSP posee tres timers adicionales a los de EV-A/-B
TIMER0 utilizable por el usuario
TIMER1 y TIMER2 reservados para sistemas operativos de tiempo
real
Los tres tienen la misma estructura
SISTEMAS EMPOTRADOS 149
32 bits CPU timers
Estructura y funcionamiento
Permiten la generacin de interrupciones peridicas base de
tiempos
SISTEMAS EMPOTRADOS 150
32 bits CPU timers
Configuracin
Registro de control TIMERxTCR
TIE = 1 interrupcin habilitada
TIF flag de la interrupcin
TRB reinicilizacin del timer al escribir un 1
TSS = 1 el timer se detiene
SISTEMAS EMPOTRADOS 151
32 bits CPU timers
Programacin
Preescalado TIMERxTPR/TPRH
Escribir en TDDR y TDDRH el valor del prescalado (nmero de ticks de
CPU que tiene un tick del timer)
PSC y PSCH es el contador
Periodo
Escribir en TIMERxPRD y TIMERxPRDH el valor del periodo (en ticks del
timer)
SISTEMAS EMPOTRADOS 152
Multichannel Buffered Serial Port, McBSP
Caractersticas bsicas
Comunicacin serie sncrona
Interfase directa con conversores y codecs comerciales
Comunicacin full-duplex
128 canales
No DMA
Colas FIFO de recepcin y transmisin de 16 posiciones
Varios tamaos de datos: 8, 12, 16, 20, 24 y 32 bits
Posibilidad de compresin de datos
A-law
-law
Interrupciones
SISTEMAS EMPOTRADOS 153
Multichannel Buffered Serial Port, McBSP
Diagrama
SISTEMAS EMPOTRADOS 154
Multichannel Buffered Serial Port, McBSP
Comunicacin serie sncrona
Tamao de dato enviado configurable 8, 12, 16, 20, 24 y 32 bits
Los datos de agrupan en tramas de longitud fija
Frame
Uno o varios datos
Sincronizacin en bit (reloj) y en trama
Reloj configurable
SISTEMAS EMPOTRADOS 155
Multichannel Buffered Serial Port, McBSP
Comunicacin multicanal
Cada trama es dividida en rodajas temporales
Rodaja un dato (8, 12, 16, 24, 32 bits)
Canal = rodaja
La lnea serie es multiplexada en el tiempo en diversos canales
Hasta 128 canales
El McBSP puede transmitir o recibir en nicamente los canales activos
SISTEMAS EMPOTRADOS 156
Otros perifricos
Resto de perifricos y mdulos del TMS320F2812
Serial Port Interface SPI
Serial Communications Interface SCI
Enhanced Controller Area Network eCAN
Code Security Module CSM
Watchdog
Breakpoint Functions and Real-Time Debug via Hardware
Interfase JTAG
SISTEMAS EMPOTRADOS 157
SISTEMAS EMPOTRADOS
Herramientas de desarrollo
SISTEMAS EMPOTRADOS 158
Introduccin
Tipo de desarrollo
Desarrollo nativo. La aplicacin se desarrolla en el mismo computador
donde se va a ejecutar
Desarrollo cruzado. La aplicacin se desarrolla en un computador
diferente (host) a la plataforma de ejecucin (target)
Localizacin del cdigo
La plataforma de ejecucin tiene bancos de memoria con diferentes
tecnologas (RAM, ROM, PROM, FLASH ...) en direcciones concretas
de memoria
Al no existir SO es preciso establecer dnde se ubicarn programa y
datos.
SISTEMAS EMPOTRADOS 159
Introduccin
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 160
Introduccin
Requisitos de un lenguaje para la programacin de C
Acceso directo a memoria y hardware para lectura y escritura
Programacin de perifricos
Posibilidad de llamar a rutinas en ensamblador o insertar cdigo
mquina
Conexin directa con interrupciones
La mayora de la aplicaciones basarn gran parte de su funcionamiento en
interrupciones
Prestaciones, carcter asncrono de los eventos
Generacin de cdigo eficiente en ocupacin de memoria y velocidad
de ejecucin
Se dispone de poca memoria
Lenguaje C extendido para sistemas empotrados
SISTEMAS EMPOTRADOS 161
El C para Sistemas Empotrados
Cualificadores acceso
const
El contenido de la variable no debe
ser modificado por el programa
indica al compilador que la variable
puede almacenarse en ROM
en pasos por referencia a funciones
indica que la funcin no modifica el
valor pasado
volatile
El valor de la variable puede ser
cambiado sin que se indique
explcitamente en el fuente
Especificadores clase almacenamiento
extern
La variable/funcin declarada est
definida en fuera del fichero. En
tiempo de enlazado se conocer la
ubicacin definitiva.
static.- Especifica 3 conceptos diferentes:
En variables locales, indica que se
almacenan en el segmento de datos y
no en la pila. Se hace una reserva
permanente para toda la vida del
programa. Mantiene el valor entre
llamadas
En variables globales indica que la
variable NO ES VISIBLE fuera del
fichero donde est definida
En funciones indica que la funcin NO
ES VISIBLE fuera del fichero donde
est definida
vol at i l e char var i abl eLei daExt er i or ;
char B;
. . .
f or ( i =0; i <1000; i ++) {
B=var i abl eLei daExt er i or
}
SISTEMAS EMPOTRADOS 162
El C para Sistemas Empotrados
Union
Estructura de datos para darle 2 interpretaciones distintas a una misma
zona de la memoria
declaracin/definicin
definir los campos en una plantilla
definir/declarar una variable que
emplea la plantilla
ejemplo
t ypedef uni on {
i nt ent er o;
st r uct {
unsi gned char hi ;
unsi gned char l o;
}byt es;
}uni onEnt er o;
uni onEnt er o mi Ent er o;
i nt ot r oEnt er o;
. . .
mi Ent er o. byt es. l o=0x40;
mi Ent er o. byt es. hi =0x35;
ot r oEnt er o=mi Ent er o. ent er o; / * ot r oEnt er o val e 0x3540*/
int entero;
0x35 0x40
struct word{
unsigned char hi;
unsigned char lo;
};
SISTEMAS EMPOTRADOS 163
El C para Sistemas Empotrados
Manejo de bits individuales
acceso mediante mscaras, forma tradicional de acceso
forzado de un solo bit a 1 registro |= mascara;
forzado de un solo bit a 0 registro &= mascara;
campos de bits, tipo de dato
especfico en C para acceso a bits.
#def i ne BI T_3 0x04
. . .
r egi st r o &= ~BI T3;
#def i ne BI T_3 0x04
. . .
r egi st r o | = BI T_3;
t ypedef st r uct {
unsi gned bi t _0: 1;
unsi gned bi t _1: 1;
unsi gned bi t _2: 1;
unsi gned bi t _3: 1;
unsi gned ni bbl e: 4;
}campoBi t s;
. . .
campoBi t s mi Regi st r o;
mi Regi st r o. bi t _0=1;
mi Regi st r o. ni bbl e=0x06;
SISTEMAS EMPOTRADOS 164
Desarrollo para el 68HC08
Entorno de desarrollo formado por:
CodeWarrior (Metrowerks)
Edicin, gestin de proyectos, configuracin
Compilador C
Ensamblador
Linker
Debugger sobre cdigo fuente C
M68ICS08GP In-Circuit Simulator
Contiene un 68HC908GP32
Carga y ejecucin de cdigo
Programacin de la memoria FLASH
Un breakpoint por hardware en FLASH
Comunicacin por RS232
Gestin del modo MONITOR
Accesibilidad de los puertos
SISTEMAS EMPOTRADOS 165
Desarrollo para el TMS320F2812
Entorno de desarrollo formado por:
Code Composer (Texas
Instruments)
Edicin, gestin de proyectos,
configuracin
Compilador C
Ensamblador
Linker
Debugger sobre cdigo fuente C
Entrada y salida de datos
(simulacin de E/S hardware)
Anlisis de cdigo: tiempos de
cmputo, accesos,
Sistema operativo de tiempo real:
DSPBIOS
eZdsp F2812 (Digital Spectrum)
Contiene un TMS320F2812
Carga y ejecucin de cdigo
Programacin de la memoria
FLASH
Dos breakpoints por hardware
Comunicacin por lnea paralelo
Controlador IEEE 1149.1 JTAG
Accesibilidad de los puertos
Memoria RAM externa adicional
SISTEMAS EMPOTRADOS 166
CodeWarrior
Fichero de cabecera 68hc08gp32.h
/ *****************************************************
6808gp32. h - Tar get i nt er f ace l i br ar y
Descr i bes I / O r egi st er s of MC68HC08GP20
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Copyr i ght ( c) Met r ower ks, Basel , Swi t zer l and
*****************************************************/

#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 */

SISTEMAS EMPOTRADOS 167


CodeWarrior
Fichero de cabecera 68hc08gp32

/ *****************************************************************************************/
/ * 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;

unsi gned char _PTC5: 1;


unsi gned char _PTC6: 1;
unsi gned char BI T7: 1;
} PTC_BI TS;
unsi gned char PTC_BYTE;
}PTC1_ _I O_AT( 0x02) ;
/ * DEFI NE REGI STER */
#def i ne PTC PTC1_. PTC_BYTE
/ *DEFI NE REGI STER BI TS*/
#def i ne PTC0 PTC1_. PTC_BI TS. _PTC0
#def i ne PTC1 PTC1_. PTC_BI TS. _PTC1

#def i ne PTC5 PTC1_. PTC_BI TS. _PTC5


#def i ne PTC6 PTC1_. PTC_BI TS. _PTC6
SISTEMAS EMPOTRADOS 168
CodeWarrior
Fichero de cabecera 68hc08gp32

/ ****Dat a Di r ect i on Regi st er C******/


__DECL__68HC08GP32_H__ vol at i l e uni on {
st r uct {
unsi gned char _DDRC0: 1;
unsi gned char _DDRC1: 1;

unsi gned char _DDRC5: 1;


unsi gned char _DDRC6: 1;
unsi gned char BI T7: 1;
} DDRC_BI TS;
unsi gned char DDRC_BYTE;
}DDRC1_ _I O_AT( 0x06) ;
/ * DEFI NE REGI STER */
#def i ne DDRC DDRC1_. DDRC_BYTE
/ *DEFI NE REGI STER BI TS*/
#def i ne DDRC0 DDRC1_. DDRC_BI TS. _DDRC0
#def i ne DDRC1 DDRC1_. DDRC_BI TS. _DDRC1

#def i ne DDRC5 DDRC1_. DDRC_BI TS. _DDRC5


#def i ne DDRC6 DDRC1_. DDRC_BI TS. _DDRC6

SISTEMAS EMPOTRADOS 169


CodeWarrior
Programacin de interrupciones
interrupt indica al compilador que la funcin es una rutina de
interrupcin
Sin parmetros y no devuelve nada
RTI al final
El nmero indica el vector interrupcin correspondiente
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
voi d interrupt 17 Ti ck ( voi d) {
TACK=1;
t i ck_count er ++ ;
r et ur n ;
}
SISTEMAS EMPOTRADOS 170
CodeWarrior
Inline Assembler
El compilador de C permite la introduccin de instrucciones en
ensamblador intercaladas en el cdigo C
Hay acciones que slo se pueden hacer desde ensamblador
Varias posibilidades
"asm" <Assembly Instruction> ";" ["/*" Comment "*/"]
"asm" " (" <Assembly Instruction> ";" ["/*" Comment "*/"] ")" ";
"asm" "{
{ <Assembly Instruction> [";" Comment] "\n" }
"}"

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

cl ock. c. o Model : SMALL, Lang: ANSI - C


*********************************************************************************************
STARTUP SECTI ON
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ent r y poi nt : 0x808C ( _St ar t up)
_st ar t upDat a i s al l ocat ed at 0x80A6 and uses 9 Byt es
ext er n st r uct _t agSt ar t up {
unsi gned f l ags 0

} _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

. abs_sect i on_f f dc 2 R 0xFFDC 0xFFDD . absSeg74


. bss 2 R/ W 0x100 0x101 RAM

. copy 2 R 0x9D40 0x9D41 ROM


. vect Seg75_vect 2 R 0xFFFE 0xFFFF . vect Seg75
ROM si ze: 1D46 ( dec: 7494)
RAM si ze: A2 ( dec: 162)
*********************************************************************************************
VECTOR- ALLOCATI ON SECTI ON
Addr ess I ni t Val ue I ni t Funct i on
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0xFFFE 0x808C _St ar t up
*********************************************************************************************
OBJ ECT- ALLOCATI ON SECTI ON
Name Modul e Addr hSi ze dSi ze Ref Sect i on RLI B
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SISTEMAS EMPOTRADOS 180
CodeWarrior
Debugger
Gestiona la comunicacin con el target mediante el MON08
Permite la carga de programas en el
Flash o RAM
Introduccin de breakpoints
Gestin del mdulo BRK del HC08
Visualizacin de memoria
Programa
Datos
Vectores de interrupcin
Registros
Cdigo fuente
Ejecucin
Paso a paso, ejecucin indefinida, ejecucin hasta una determinada
posicin
SISTEMAS EMPOTRADOS 181
M68ICS08GP In-Circuit Simulator
El hardware del M68ICS08GP consta de dos componentes :
ICS08GP20 board
SPGMR08 serial programmer base unit
La tarjeta ICS08GP20
El ncleo es un microcontrolador 68HC908GP32
En la propia placa
En el target
Tiene conexiones con
target
SPGMR08
SISTEMAS EMPOTRADOS 182
M68ICS08GP In-Circuit Simulator
Puede tener tres funciones
Emulador
La tarjeta contiene el microcontrolador alimentado
Reloj
Ofrece todos los pines del microcontrolador para conectarlos al target
PTA0 no se puede usar
Microcontrolador en modo monitor
Comunicacin con un target con microcontrolador
Ofrece una interfase con el MON08 del target
Tarjeta sin microcontrolador
Posibilidades
In-line programming
Puesta a punto en el target
Grabacin de microcontroladores
SISTEMAS EMPOTRADOS 183
M68ICS08GP In-Circuit Simulator
SPGMR08 serial programmer base unit
Comunica el microcontrolador con el computador de desarrollo
Transforma la lnea serie del modo monitor del 68HC08 en una RS232
Genera para la ICS08GP20
Reloj de 4.9152-MHz
Alimentacin 5 V
VTST de 8.5 V requerido para entrar en modo monitor
Esta misma unidad vale para todos los HC08
SISTEMAS EMPOTRADOS 184
M68ICS08GP In-Circuit Simulator
Limitaciones en su uso como emulador
El microcontrolador trabaja en modo monitor
PTA0 condenada para las comunicaciones con el computador de
desarrollo
Las patillas PTA7, PTC0, PTC1, y PTC3 se desconectan del target
durante un cierto tiempo en el reset
Reloj externo 4.9152 MHz
Frecuencia de bus de 2.4575 MHz (CGMXCLK/2)
SISTEMAS EMPOTRADOS 185
Code Composer
Fichero de cabecera
El entorno de desarrollo no ofrece un fichero de cabecera predefinido
El usuario debe programar uno
/ ******************************************************************************
* FI LENAME: F28XX. H
*
* Cont r ol r egi st er s of t he F28xx devi ce.
******************************************************************************/

#def i ne PI ECTRL *( ( vol at i l e unsi gned i nt *) 0xce0) / * PI E Cont r ol r eg */


#def i ne PI EACK *( ( vol at i l e unsi gned i nt *) 0xce1) / * PI E Acknowl edge r eg */
#def i ne PI EI ER1 *( ( vol at i l e unsi gned i nt *) 0xce2) / * PI E I nt Enabl e 1 r eg */
#def i ne TI MER0TCR *( ( vol at i l e unsi gned i nt *) 0xc04) / * TI MER0 cont r ol r egi st er */
#def i ne TI MER0TPR *( ( vol at i l e unsi gned i nt *) 0xc06) / * TI MER0 pr eescal er r eg. */
#def i ne TI MER0PRD *( ( vol at i l e unsi gned i nt *) 0xc02) / * TI MER0 per i od r egi st er */

#def i ne WDCR *( ( vol at i l e unsi gned i nt *) 0x7029) / * WD Cont r ol r eg */


#def i ne DI SABLE_WD 0x0068

SISTEMAS EMPOTRADOS 186


Code Composer
Programacin de interrupciones
interrupt indica al compilador que la funcin es una rutina de
interrupcin
Sin parmetros y no devuelve nada
RTI al final
i nt er r upt voi d Ti ck ( voi d) {
t i ck_count er ++ ;
i f ( Act i ve_Ti mer )
i f ( Ti mer == t i ck_count er ) {
TO = 1 ;
Act i ve_Ti mer = 0 ;
}
PI EACK = 0x01; / * Acknowl edge PI E gr oup 1 i nt */
r et ur n ;
}
SISTEMAS EMPOTRADOS 187
Code Composer
Definicin de los vectores de interrupcin
/ ******************************************************************************
* FI LENAME: I nt _Vect or s. C
* Def i ni ci on de l a t abl a de i nt er r upci ones en el PI E
* J L Vi l l ar r oel ( 1- Oct ubr e- 2003)
******************************************************************************/
#pr agma DATA_SECTI ON( vec, " . vect or s" ) ;
ext er n voi d Ti ck ( voi d) ;
voi d UnusedI sr ( voi d) ;
t ypedef voi d ( *VECTORS) ( ) ; / * Def i nes a t ype VECTORS whi ch i s a poi nt er t o a */
/ * f unct i on t hat r et ur ns voi d; t akes no ar gument s */
const VECTORS vec[ ] = / * I nt er r upt vect or t abl e ( doesn' t i ncl ude RESET) */
{
UnusedI sr , / * I NT1 - Maskabl e i nt 1 */
UnusedI sr , / * I NT2 - Maskabl e i nt 2 */
UnusedI sr , / * I NT3 - Maskabl e i nt 3 */
UnusedI sr , / * I NT4 - Maskabl e i nt 4 */
UnusedI sr , / * I NT5 - Maskabl e i nt 5 */
UnusedI sr , / * I NT6 - Maskabl e i nt 6 */
UnusedI sr , / * I NT7 - Maskabl e i nt 7 */

SISTEMAS EMPOTRADOS 188


Code Composer
Definicin de los vectores de interrupcin
UnusedI sr , / * I NT13 - Maskabl e i nt 13, t i mer 1 */
UnusedI sr , / * I NT14 - Maskabl e i nt 14, t i mer 2 */
UnusedI sr , / * DLOGI NT- Maskabl e dat a- l oggi ng i nt */
UnusedI sr , / * RTOSI NT- Maskabl e r eal - t i me OS i nt */
UnusedI sr , / * Reser ved */
UnusedI sr , / * NMI - Nonmaskabl e i nt er r upt */
UnusedI sr , / * I LLEGAL- I l l egal i nst r uct i on t r ap */
UnusedI sr , / * USER1 - User - def i ned sw i nt / t r ap */

UnusedI sr , / * USER12 - User - def i ned sw i nt / t r ap */


UnusedI sr , / * PI E i nt 1. 1 */
UnusedI sr , / * PI E i nt 1. 2 */
UnusedI sr , / * PI E i nt 1. 3 */
UnusedI sr , / * PI E i nt 1. 4 */
UnusedI sr , / * PI E i nt 1. 5 */
UnusedI sr , / * PI E i nt 1. 6 */
Ti ck, / * PI E i nt 1. 7, TI NT0 ( Ti mer 0) */
UnusedI sr , / * PI E i nt 1. 8 */

};
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 ;

SISTEMAS EMPOTRADOS 190


Code Composer
Secciones generadas por el compilador C
SISTEMAS EMPOTRADOS 191
Code Composer
Pragmas directivas al compilador
#pragma CODE_SECTION (func, section name)
char buf f er A[ 80] ;
char buf f er B[ 80] ;
#pr agma CODE_SECTI ON( f uncA, codeA)
char f uncA( i nt i ) ;
char f uncB( i nt i ) ;
voi d mai n( )
{
char c;
c = f uncA( 1) ;
c = f uncB( 2) ;
}
char f uncA ( i nt i )
{
r et ur n buf f er A[ i ] ;
}
SISTEMAS EMPOTRADOS 192
Code Composer
#pragma DATA_SECTION (symbol, section name)
#pragma INTERRUPT (func)
#pr agma DATA_SECTI ON( buf f er B, my_sect )
char buf f er A[ 512] ;
char buf f er B[ 512] ;
SISTEMAS EMPOTRADOS 193
Code Composer
Inicializacin
Funcin predefinida del entorno _c_int00
Se encuentra en la librera rts2800(_ml).lib
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 194
Code Composer
Fichero de parmetros para el linker *.cmd
Describe la memoria fsica descompuesta en segmentos
R Read only ; RW Read and Write
Cada pgina es un espacio de direcciones diferente
PAGE0 Programa
PAGE1 Datos
Diferentes vistas de una misma memoria fsica
Pueden solaparse
MEMORY
{
PAGE 0 : BOOT( R) : or i gi n = 0x3f 8000, l engt h = 0x80
PAGE 0 : PROG( R) : or i gi n = 0x3f 8080, l engt h = 0x1f 80
PAGE 0 : RESET( R) : or i gi n = 0x000000, l engt h = 0x2
PAGE 1 : M0RAM( RW) : or i gi n = 0x000000, l engt h = 0x400
PAGE 1 : M1RAM( RW) : or i gi n = 0x000400, l engt h = 0x400
PAGE 1 : PI EVT( RW) : or i gi n = 0x000d02, l engt h = 0xf e
PAGE 1 : L0L1RAM( RW) : or i gi n = 0x008000, l engt h = 0x2000
}

SISTEMAS EMPOTRADOS 195


Code Composer
Asigna secciones lgicas
(.text, .bss, .stack, ) a los
segmentos de memoria
fsica SECTIONS

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 )

SISTEMAS EMPOTRADOS 198


Code Composer
Fichero de descripcin del enlazado *.map
GLOBAL SYMBOLS: SORTED ALPHABETI CALLY BY Name
addr ess name
- - - - - - - - - - - -
00000400 . bss
00000000 . dat a
003f 81bc . t ext
003f 81e2 C$$EXI T
003f 931b C$$I O$$
003f 8c7e FD$$ADD
003f 8b32 FD$$CMP
003f 8b5b FD$$DI V
003f 8be5 FD$$MPY
003f 8c67 FD$$NEG
003f 8c70 FD$$SUB
003f 8d17 FD$$TOI
003f 8d38 FD$$TOL
003f 8ee2 FS$$TOFD
003f 8f 2f L$$DI V
003f 8f 3e L$$MOD
003f 8f 59 L$$TOFD
003f 8f 4c UL$$DI V
003f 8f 53 UL$$MOD

SISTEMAS EMPOTRADOS 199


Code Composer
Debugger
Gestiona la comunicacin con el target mediante la interfase JTAG
Permite la carga de programas en el DSP
Flash o RAM
Introduccin de breakpoints
Gestin de las dos unidades de anlisis AU1 y AU2 breakpoints hardware
Introduccin de breakpoints software (si programa en RAM)
Visualizacin de memoria
Programa
Datos . Puede ser grfica (visualizacin de seales)
Vectores de interrupcin
Registros
Cdigo fuente
Ejecucin
Paso a paso, ejecucin indefinida, ejecucin hasta una determinada posicin
SISTEMAS EMPOTRADOS 200
eZdsp F2812
Es una tarjeta autnoma con un TMS320F2812
Caractersticas bsicas
Reloj de 30 MHz
64K de memoria SRAM externa
Conexiones con el computador de desarrollo
Conector JTAG
Conector paralelo (puerto impresora)-JTAG
Conectores a un target
Expansin de memoria
Entradas/salidas digitales/perifricos
Entradas analgicas conversor AD
Diversas posibilidades de configuracin mediante jumpers
SISTEMAS EMPOTRADOS 201
eZdsp F2812
Diagrama de bloques
SISTEMAS EMPOTRADOS 202
SISTEMAS EMPOTRADOS
GESTIN DE TIEMPO
SISTEMAS EMPOTRADOS 203
TIEMPO
Las necesidades con respecto al tiempo de un sistema empotrado son
fundamentalmente:
Medida del tiempo
Tiempo absoluto
Intervalos temporales
Activacin con respecto al tiempo
Actividades peridicas
Actividades espordicas
SISTEMAS EMPOTRADOS 204
TIEMPO
El tiempo es una magnitud fsica fundamental, cuya unidad en el SI es
el segundo.
Se necesitan dos tipos de medidas:
Tiempo absoluto
Tiempo relativo o intervalos de tiempo
El tiempo absoluto necesita un sistema de referencia
escala de tiempo
con un origen que se denomina poca
Un sistema de tiempo real para medir el paso del tiempo puede:
Acceder a un sistema de referencia externo (p.e. Seal UTC del GPS)
Utilizar un reloj de hardware interno que proporciona una aproximacin del
paso del tiempo en el entorno
SISTEMAS EMPOTRADOS 205
TIEMPO
Sistemas de referencia estndar
Astronmicos
Tiempo universal (UT0):Tiempo solar en el meridiano Greenwich
UT1, UT2: correcciones por el desplazamiento polar y por variaciones de la
velocidad de rotacin de la Tierra
Atmicos
Tiempo Atmico Internacional (IAT): Basado en un reloj atmico de cesio
Tiempo Universal Coordinado (UTC): Reloj IAT sincronizado con UT2
mediante la adicin de ticks ocasionales
SISTEMAS EMPOTRADOS 206
MEDIDA DEL TIEMPO
El tiempo en un computador se mide con:
Relojes
Medida de tiempo absoluto
Funcionan de forma continua
Temporizadores
Medida de intervalos temporales
Arranque y paro
t
t1 t2
t
[ ]
Arranque Paro
Temporizador
Reloj
t = t2-t1
SISTEMAS EMPOTRADOS 207
MEDIDA DEL TIEMPO
Reloj: es un mdulo (de hardware y software) que proporciona el valor del
tiempo real cuando se lee.
Un reloj est compuesto por:
Una electrnica que genera eventos peridicos
Oscilador onda cuadrada (eventos = flancos de subida)
Un contador que acumula los eventos
Un software que convierte el valor del contador en unidades de tiempo
(segundos, minutos, ...).
Las caractersticas ms importantes de un reloj son:
Precisin (granularidad). Depende de la frecuencia del oscilador y de la
forma de contar los impulsos.
Intervalo de valores. Depende de la precisin y de la capacidad del
contador.
SISTEMAS EMPOTRADOS 208
MEDIDA DEL TIEMPO
Unidad de tiempo: tick
El contador es de capacidad limitada
desbordamiento -> reinicio cuenta
tiempo montono, la aplicacin tiene una vida menor que el tiempo
de desbordamiento.
tiempo no montono, la aplicacin vive ms que el tiempo de
desbordamiento
tiempo
vida aplicacin (t. no montono)
Tiempo
computador
tick
SISTEMAS EMPOTRADOS 209
MEDIDA DEL TIEMPO
La monotona del tiempo depende de:
el tiempo de vida de la aplicacin
el tamao del contador en relacin con el tamao del tick.
Problemas del tiempo no montono
No se dispone del tiempo absoluto
No se puede mantener fecha, hora, ...
No se pueden utilizar intervalos temporales por encima del tiempo de
desbordamiento del contador del reloj
SISTEMAS EMPOTRADOS 210
Realizacin de un reloj (68HC08)
Para hacer un reloj necesitamos:
Una base de tiempos, el TICK
Eventos peridicos que se cuentan: pulsos, interrupciones.
Un contador de ticks
Posibilidades en el 68HC08
Seal de reloj del BUS (2.4575 MHz) + contador de un timer TxCNT
Mucha precisin, poco rango temporal
Interrupcin peridica TBM (CGMXCLK = 4.9152 MHz) + contador
software
Tiempo de desbordamiento: depende del tamao del contador
Menor precisin, rango temporal ajustable
divisor 1 2 4 8 16 32 64
resolucin

s 0,407 0,814 1,628 3,255 6,510 13,021 26,042


desbordamineto ms 26,7 53,3 106,7 213,3 426,7 853,3 1706,7
PS2-PS0 000 001 010 011 100 101 110
duracin tick

s 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
SISTEMAS EMPOTRADOS 211
Realizacin de un reloj (68HC08)
Estructura del TBM
SISTEMAS EMPOTRADOS 212
Realizacin de un reloj (68HC08)
Realizacin de un reloj basado en el TBM
Interrupcin diseada expresamente para este propsito
Parametrizacin de interrupcin de reloj, TBI (Time Base Interrupt)
Eleccin de la frecuencia
Activacin de la interrupcin
Programacin de la rutina de interrupcin
Sumar uno al contador de ticks
Programacin de las funciones de manejo y lectura del reloj
SISTEMAS EMPOTRADOS 213
Realizacin de un reloj (68HC08)
Parametrizacin del TBM
y activacin
Registro TBCR
TBR2-TBR0 ajuste TICK (tabla)
TBIE habilitacin interrupcin
TBON activacin del TBM
duracin tick

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

SISTEMAS EMPOTRADOS 241


CONCEPTO DE AUTMATA. MODELOS
Modelo MOORE
Mquina de MOORE: Una mquina secuencial de tipo
MOORE es una 5-tupla M=(Q,I,O,,) donde:
Q es un conjunto finito de estados
I es un conjunto finito de entradas (smbolos de )
O es un conjunto finito de salidas (smbolos de )
: QxI Q es la funcin de transicin de estado
: Q O es la funcin de salida
I
O

Q
SISTEMAS EMPOTRADOS 242
CONCEPTO DE AUTMATA. MODELOS
Ejemplo: Sumador binario serie de 1 bit
Dos entradas binarias x1 y x2
Una salida binaria y
Modelo MEALY
Q = {q0,q1} donde
q0 estado de no acarreo
q1 estado de acarreo
Funcin de transicin de estado:
(q0,11) = q1 (q0,00/01/10) = q0
(q1,00) = q0 (q1,10/01/11) = q1
Funcin de salida:
(q0,00/11) = 0 (q0,01/10) = 1
(q1,00/11) = 1 (q1,01/10) = 0

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

SISTEMAS EMPOTRADOS 319


IMPLEMENTACIN
G(z) --> Ecuacin en diferencias
Ejemplo
G z
( )
=
Y z ( )
X z
( )
z
1
retraso T
X(z) Y(z)
G(z)
( )
( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) 1 1
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

SISTEMAS EMPOTRADOS 380


PLANIFICACIN
Objetivo: asignacin de procesos (o subprocesos) a los marcos de forma
que se cumplan los requisitos temporales
Planteamiento: bsqueda en el espacio de estados
Estado: asignacin parcial
Algoritmo: bsqueda en profundidad con retroceso
se pretende encontrar una nica solucin
Guiado de la bsqueda: heursticas
sobre el siguiente proceso a asignar
primero el ms urgente o el ms frecuente
primero el de tiempo de proceso ms grande
si varios marcos cumplen las condiciones:
el primer marco que cumpla las condiciones
el marco con menor tiempo de cmputo libre
SISTEMAS EMPOTRADOS 381
EJEMPLO: PLANIFICACIN
Conjunto de procesos a planificar:
Proceso C T D
P1 2 8 8
P2 3 8 8
P3 1 6 6
P4 2 12 12
Ciclo principal: M = mcm(6,8,12) = 24
Nmero de ejecuciones a planificar
n
e1
= M/8 = 3
n
e2
= M/8 = 3
n
e3
= M/6 = 4
n
e4
= M/12 = 2
SISTEMAS EMPOTRADOS 382
EJEMPLO: PLANIFICACIN
Ciclo secundario
m min(6,8,12) => m = 1..6
m max(1,2,3) => m = 3..6
k: 24 = km => m = 3,4,6
m+ (m - mcd(m,T
i
)) D
i
=> m = 3,4
posibles_m = {4,3}
SISTEMAS EMPOTRADOS 383
EJEMPLO: PLANIFICACIN
Ordenacin procesos: primero el ms urgente
Proceso C T D n
P1 1 6 6 4
P2 3 8 8 3
P3 2 8 8 3
P4 2 12 12 2
Se intenta planificar primero para m=4 (la complejidad del problema
disminuye con el nmero de marcos)
Un planificacin consta de 6 marcos consecutivos
SISTEMAS EMPOTRADOS 384
EJEMPLO: PLANIFICACION
P
ik
puede ir en el marco j si:
(k 1)T
i
(j 1)m
jm (k 1)T
i
+ D
i
P1
P11 P12 P13 P14
0 4 8 12 16 20 24
P2
P21
0 4 8 12 16 20 24
P22 P23
P3
P31
0 4 8 12 16 20 24
P32 P33
P4
P41
0 4 8 12 16 20 24
P42
SISTEMAS EMPOTRADOS 385
EJEMPLO: PLANIFICACIN
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 2
2
2
2
2
2
2
2
2 2
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 2
2
2
2
2
2
2
2
2 2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
1
1
1
1
2
2
2
3
3
3 4
4
SISTEMAS EMPOTRADOS 386
PARTICIN DE PROCESOS
Hay casos en que un conjunto de procesos que no es planificable:
Si el tiempo de cmputo de uno es mayor que el plazo de algn otro:
C
i
> D
k
=> No existe valor de m que cumpla a la vez:
m min(D
i
)
m max(C
i
)
Si para una ejecucin de un proceso no queda ningn marco con
suficiente tiempo libre
Solucin: descomponer el proceso demasiado largo P
i
=(C
i
,T
i
,D
i
) en varios
subprocesos P
ij
=(C
ij
,T
ij
,D
ij
):
T
ij
=T
i
; D
ij
=D
i
C
i1
+C
i2
+C
i3
+... = C
i
no partir secciones crticas
relacin de precedencia en cada una de las ejecuciones a mantener
en la planificacin: P
i1
P
i2
P
i3
...
SISTEMAS EMPOTRADOS 387
RELACIONES DE PRECEDENCIA
Sean P
i1
y P
i2
dos procesos entre los que existe una relacin de
precedencia P
i1
P
i2
,
En la ordenacin de los procesos para su inclusin en la planificacin
se mantiene el orden de precedencia (los dos subprocesos tienen las
mismas restricciones temporales)
Para incluir la ejecucin k-sima de P
i2
, P
i2k
, en la planificacin:
obtener los valores {j,...,j+h} de los marcos donde puede ser incluida a
partir de:
Debido al orden de inclusin P
i1k
ya ha sido incluida en el marco j+l
{j,...,j+h}. El conjunto de marcos donde puede ser incluida se reduce a
{j+l,...,j+h}
A los elementos de {j+l,...,j+h} se aplica la condicin
C
i 2
m C
l
l ,P
l

(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

SISTEMAS EMPOTRADOS 417


PRIORIDADES. GARANTIA DE PLAZOS
Teorema 1 (Liu & Layland): En un sistema de n tareas peridicas
independientes con prioridades asignadas en orden de frecuencia, se
cumplen todos los plazos de respuesta, para cualquier desfase inicial de
las tareas, si
U
0
(n) es la utilizacin mnima garantizada para n tareas.
) ( ) 1 2 (
0
/ 1
1
n U n
P
C
U
n
n
i
i
i
= =

=
...
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)

También podría gustarte