Buenas, quisiera saber cuándo es conveniente usar cada una de las 3 variantes de programación en caso de una máquina dedicada.
Muchas gracias desde ya!
Buenas, quisiera saber cuándo es conveniente usar cada una de las 3 variantes de programación en caso de una máquina dedicada.
Muchas gracias desde ya!
Estimado,
A priori no hay un método. Sergio explica durante las clases que es un poco a gusto del consumidor. Sí hay que tener en cuenta algunas cosas, por ejemplo, que el código que se coloque en el while (true) del main, tendrá una capacidad de responder ante eventos externos casi instantánea (ejemplo: cambia algún bit en la E/S, y la CPU puede enterarse inmediatamente, en la siguiente iteración del loop), mientras que si la consulta se realiza durante (por ejemplo), la interrupción del timer, bueno, esa consulta demorará tanto como el período de la interrupción. Hay casos donde esta espera es inaceptable, pero depende del ejercicio. Otra cosa a tener en cuenta, que es muy importante, es que al ingresar a una interrupción, las futuras interrupciones se encuentran enmascaradas. Por lo tanto, si el programa en una interrupción, realiza un loop esperando por otra interrupción, y no se realiza un enable() explícito, el programa quedará trancado. Trabajar en el main es un poco más seguro, por esta razón.
Fuera de eso, no se me ocurre mucha mayor diferencia. Es decir, en la mayoría de los ejercicios, la resolución puede encararse ubicando el código en las interrupciones, en el main, o en una combinación de ambas.
Saludos,
Federico
Buenas, una duda sobre esto. Suponiendo que se quiere hacer la lógica casi en su totalidad en las interrupciones. Como tu dijiste, si ocurre el caso que una de las rutinas necesita esperar un resultado que esta en otra rutina, hay que colocar un enable() para poder desenmascarar las interrupciones. Este enable(), es incorrecto colocarlo para toda la rutina? Es decir, si se necesitan las interrupciones desenmascaradas solo para una sección de código (una linea, por ejemplo), se tiene que poner el enable() previo a esa sección de código o para todo el código de la interrupción?
Sumado a esto, si se pone un enable(), habrá que colocar un disable() para volver a enmascarar las interrupciones antes de terminar la rutina o este enmascaramiento se hace solo al salir de la rutina?