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