[2020][Febrero][Problema 2]

[2020][Febrero][Problema 2]

de Juan Pablo Filevich Gonzalez -
Número de respuestas: 1

En el examen de febrero 2020, problema 2 de interrupciones la letra dice:


  • Para cambiar el sentido de giro del motor, primero se debe detener el motor y luego encenderlo con el nuevo sentido.
  • Cada vez que el motor es detenido se debe esperar 5 minutos antes de volver a activarlo


Ahora, usando la solución oficial y la siguiente secuencia de eventos, me surge la duda si el codigo es correcto:


0. Inicialmente la compuerta se encuentra cerrada y el motor apagado.

1. Llega un pedido para aumentar la potencia

   1.1 El pedido es atendido por la rutina`potencia_solicitada`. Esta, lo que hace es setear la variable `estado = ABRIENDO;`

   1.2 Luego, el `while(true)` del `main` entra en el case del `ABRIENDO`, `tics` se encuentra en 0, no se cumple el `if` por lo que se entra en el `else`, y aqui se abre la compuerta (se enciende el motor con sentido hacia arriba) y la variable `cerrada` se setea en `false`


2. Ahora supongamos que *antes* de que la represa alcance la potencia solicitada en el punto 1 llega un pedido de decrementar la potencia por debajo del nivel actual.


   2.1 El pedido es atendido por la rutina`potencia_solicitada`. Esta, lo que hace es setear la variable `estado = CERRANDO;`

   2.2 Luego, el `while(true)` del `main` entra en el case del `CERRANDO`, `tics` se encuentra en 0 por lo que entra en el primer`if`, la potencia solicitada es menor que el reportado por el sensor y la compuerta claramente no esta cerrada por lo que entra en el `else`. Acto seguido se cierra la compuerta.


Notar que se esta cambiando el sentido del motor sin siquiera haberlo:

  1. apagado antes

  2. esperado 5 minutos antes de volver a prenderlo


Es mi razonamiento incorrecto?


En respuesta a Juan Pablo Filevich Gonzalez

Re: [Examen febrero 2020][Problema 2] interrupciones

de Gustavo Brown -
Juan Pablo,
Tu razonamiento es correcto. Falta apagar el motor y esperar 5 minutos en ese caso.
Arreglé la solución para tener en cuenta el caso.

Saludos,
Gustavo