Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas e Informática
Sistemas Digitales II
MODELO DE
COMPORTAMIENTO
Aplicación SW – Bibliotecas
UART
… GPIO PORT
Funciones matemáticas
FORMALIZACIÓN Redes de Petri
Diagramas de Estados / Tablas de Estados
10
Sistemas Reactivos: Formalización
Máquina de
SD1
Estado Finito
Redes de
Petri
Salidas/Acciones
Salidas/Acciones Salidas/Acciones
Contextos “pseudo-ortogonales”
15
StateCharts: Principales aportes
16
MEF jerárquica: Transiciones
`Transiciones específicas:
Transiciones generales:
17
MEF jerárquica: Transiciones con historia
Las acciones “simultáneas”
no deben ser conflictivas
MEF Jerárquicas:
20
MEF - Diagramas de Estado - UML
Conjunto de estados por los que pasa una aplicación como reacción a
la presencia de distintos eventos, junto con sus respuestas y acciones.
Temporización.
21
MEF - Diagramas de Estado - UML
Estados:
Acciones, actividades y
transiciones internas
22
MEF - Diagramas de Estado - UML
Operaciones atómicas que no pueden ser
ACCIONES: interrumpidas por eventos ya que se ejecutan
en forma instantánea (en HW salidas)
Enviando un mensaje.
Esperando un evento
Realizando un cálculo. 23
MEF - Diagramas de Estado - UML
Acciones, actividades y
transiciones internas
Sintaxis formal:
nombre-evento ‘(’lista-argumentos‘)’ ‘[’guard-condition‘]’ ‘/’ expresión-acción
Acciones especiales:
entry ‘/’ expresión-acción Utilizan palabras clave reservadas y
exit ‘/’ expresión-acción los argumentos están implícitos
Actividades:
Se ejecutan mientras se está en el
do ‘/’ expresión-acción
estado (calculando, esperando,…)
Transiciones internas:
Evento que no causa cambio
help / display help 24
de estado
MEF - Diagramas de Estado - UML
Transiciones
Sintaxis formal:
nombre-evento ‘(’lista-argumentos‘)’ ‘[’guard-condition‘]’ ‘/’ expresión-acción
Otero-2012
Schiefer -IBM
28
Pautas generales
34
Solución – División en subproblemas
case ESPERANDO_DESACTIVACION:
if (!board_getSw(BOARD_SW_ID_1))
{
estSW = ESPERANDO_ACTIVACION;
} En forma periódica, se
break;
evalúa el estado del
default: switch y se notifica con la
estSW = ESPERANDO_ACTIVACION;
break; variable eventSW
}
} 37
Solución – Control Led bool key_getPressEv(void)
{
bool ret;
return ret;
Implementa el }
comportamiento
solicitado
Se recupera el valor de
Devuelve la variable y se la
eventSW limpia para poder
detectar otro pulsado
38
Solución – Control Led
El modificador STATIC, en este contexto,
produce una única inicialización de la
variable al inicio y encapsula el estado, que
sólo será modificado por la propia MEF
void mefLed(void)
{
static estMefLed_enum estMefLed = EST_MEF_LED_INICIALIZACION;
switch (estMefLed)
{
case EST_MEF_LED_INICIALIZACION:
board_setLed(BOARD_LED_ID_ROJO, BOARD_LED_MSG_OFF);
estMefLed = EST_MEF_LED_ESPERANDO_EV;
break;
case EST_MEF_LED_ESPERANDO_EV:
if (key_getPressEv())
board_setLed(BOARD_LED_ID_ROJO, BOARD_LED_MSG_TOGGLE);
break;
}
} 39
Solución – Función main e IRQ
int main(void)
{
// Se inicializan funciones de la placa
board_init();
// Inicializa keyboard
key_init();
while(1)
{
mefLed(); La MEF que se ocupa del manejo de los
} LEDs, se invoca en el bucle infinito.
}
void PIT_IRQHandler(void)
{
PIT_HAL_ClearIntFlag(PIT, 1);
La MEF que detecta el pulsado del
key_periodicTask1ms();
}
SW se ubica en el handler del PIT
40
Solución – Esquema general
MEF manejo Led
MEF detección pulsada
event SW
comunica las MEF