He estado aprendiendo acerca de los modos de suspensión AVR, ya que me gustaría comenzar a usarlos en mis proyectos futuros. Creo que lo he entendido al máximo, excepto algunos detalles específicos a continuación
Bajo el Registro de reducción de energía (PRR) , menciona que el uso de este para apagar el reloj de un periférico congela el periférico en su estado actual y los registros de E / S se vuelven inaccesibles. También los recursos utilizados por este periférico permanecerían desocupados. Por lo tanto, se sugiere desactivar el periférico antes de detenerle el reloj.
-
En AVR-gcc documention of , han proporcionado las instrucciones atómicas (sleep_enable, sleep_cpu y sleep_disable) además de la macro totalmente automática sleep_mode. La razón dada es que sleep_mode podría ser una condición de carrera en algunos casos.
¿Alguien puede explicar los 2 puntos anteriores con más detalle?
¡Gracias!