Professional Documents
Culture Documents
1 de 26
Statecharts
Los diagramas de estado son particularmente tiles
para modelar sistemas embebidos porque estos
suelen ser reactivos
O sea, responden a eventos externos que no necesariamente
tienen orden o periodicidad
Bibliografa recomendada
M. Samek, Practical UML
Statecharts in C/C++,
Captulo 2
Tambin est disponible
como artculo en lnea de
EE Times
Ver en nuestra pgina de
material de estudio
15:43
3 de 26
Para qu?
Samek arranca el
captulo con un
ejemplo: la
calculadora que
vena con Visual
Basic, que daba
error si uno tecleaba cosas como 2, -, -, -, =
Argumenta que, de haberla modelado con una
mquina de estados antes de sentarse a programar,
se podan haber evitado tantos errores
Al final del captulo disea ese modelo
usando bastante de la semntica extendida que provee
Statecharts por sobre un diagrama de estados clsico
15:43
4 de 26
Estados y transiciones
Reset
Estados
15:43
6 de 26
Jerarquas
7 de 26
Jerarquas
8 de 26
Actividad
15:43
9 de 26
Concurrencia
10 de 26
15:43
11 de 26
Transiciones internas
15:43
12 de 26
En las externas se
ejecutan la acciones
exit (porque sale) y
entry (porque
vuelve a entrar), en las
locales no
15:43
13 de 26
Pseudoestados
Son lugares que parecen estados pero no lo son, porque el
sistema no puede estar en ellos
Tipos:
Inicial (reset)
Se indican con un crculo lleno negro
Junturas
Historia
Fork / Join
Final
14 de 26
Ejemplo
15 de 26
Tipos de eventos:
Seal
Tiempo
Llamada
Cambio
16 de 26
La condicin
Ejemplos
15:43
evCaenPinos / GenerarRuido()
evLlegBola / cantBolas++;print(Lleg)
evCaenPinos(n)[n>=10] / MarcarChuza()
/ Inicializar()
[cantidad % 10 == 0]
after 10ms / InformarTimeout();AbrirPuerta()
when cantidad % 10 == 0 / foo++;bar++
Puls_Empezar[in(Puerta_Cerrada)] / Arrancar
17 de 26
Preguntas
15:43
Actividad
18 de 26
15:43
19 de 26
Actividades
15:43
20 de 26
15:43
21 de 26
15:43
23 de 26
Idea
Poner al procesador en modo sleep despus del
switch case?
Sleep es un modo de bajo consumo donde el microcontrolador
no procesa instrucciones pero s funcionan sus perifricos y es
capaz de detectar interrupciones
Los microcontroladores normalmente ofrecen varios de estos
modos, que se diferencian por las funciones que permanecen
activadas y el retardo en volver al modo de ejecucin normal
15:43
24 de 26
Maneras ms avanzadas de
codificarlo
En lugar de case para cada estado (hardcodeado),
poner los datos del Statechart en un array y usar
una librera
Tengan en cuenta que se pueden guardar punteros a funciones
que contengan las condiciones y las acciones
Si el switch case quedaba intrincado, esto puede
simplificarlo
Adems, la librera puede proveer funciones avanzadas para
resolver el tema del busy wait
El libro de Samek presenta una librera as
15:43
Conclusiones
Los Statecharts son un lenguaje de creciente
popularidad en embebidos
15:43
26 de 26