[2019][Julio][Problema 1]

[2019][Julio][Problema 1]

de Esteban Gabriel Risso Martinez -
Número de respuestas: 4

Buenas, tengo una pregunta con respecto a la solución de este problema, en cierta parte del código de la interrupción alineado() se hace un enable(). porque se hace? cual seria el problema de no hacerlo?


Muchas gracias!

Saludos.

En respuesta a Esteban Gabriel Risso Martinez

Re: Examen julio 2019 - problema 1

de Federico Rivero -

Estimado,

Luego del enable hay una línea que dice lo siguiente

while(!(girado) && (tics > 0));

Esa línea lo que hace es esperar hasta que la valija realice el giro, o hasta que se salga por timeout. El problema es que estamos adentro de una interrupción, y la actualización de ambas variables que controlan el loop se actualizan en *otras* interrupciones. Es decir, que precisamos que otra interrupción interrumpa la interrupción actual, pero como una de las  cosas que realiza la CPU al entrar a una interrupción es deshabilitar las interrupciones, precisamos habilitarlas explícitamente. De no hacerlo, el programa quedaría trancado en la instrucción del while de forma indefinida. 

Saludos,

        Federico

En respuesta a Federico Rivero

Re: Examen julio 2019 - problema 1

de Agustina Sierra Lima -
Buenas, tengo una consulta.
Por qué no se me ocurrió nunca hacer polling dentro de una interrupción eso esta bien?
es correcto ?

Saludos.
En respuesta a Agustina Sierra Lima

Re: Examen julio 2019 - problema 1

de Sergio De Cola -
En general quedarse esperando en una rutina de interrupción no es recomendable. Entiendo que por "polling" estás queriendo decir "esperar consultando un puerto de E/S hasta que se de una condición", en cuyo caso la respuesta es; puede funcionar pero yo no lo haría (porque hay que tomar una serie de precauciones para que funcione bien, tales como habilitar otras interrupciones, evitar o contemplar la re-entrancia en la programación, etc) .

Saludos.
Sergio.
En respuesta a Federico Rivero

Re: Examen julio 2019 - problema 1

de Geronimo Mendez Ferreira -
Buenas, Federico, tengo una pregunta respecto de esto, ¿por qué no es necesario volver a deshabilitar las interrupciones una vez volvemos de la interrupción timer o de giro completo? ¿Se vuelven a deshabilitar solas?