Aclaración del modo de suspensión AVR

1

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

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

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

    
pregunta Ankit

1 respuesta

1
  1. Cuando deshabilita un periférico, puede activarlo con una instrucción y reanudarlo, mientras tanto, todos los recursos utilizados por este periférico en particular están liberados y usted es libre de usarlos. Cuando apagas el reloj, pones el periférico a esperar: sus recursos no se pueden liberar, ya que requiere un pulso de reloj para ejecutar la instrucción de borrado. Lo único que podría hacer es volver a activar la señal del reloj y reanudarla.

  2. La condición de carrera mencionada se refiere a las etapas de la tubería en su CPU. Para abreviar, su CPU procesa más de una instrucción, y el uso de valores de variables correctos se basa en el momento en que se extrajo y decodificó la instrucción. Si modifica un registro / variable / campo de bits secuencialmente con diferentes instrucciones, existe la posibilidad de que una de las instrucciones en la secuencia dada obtenga un valor antes de ser procesado por las instrucciones anteriores, cambiando la salida de la operación y, por lo tanto, el estado del circuito. en su conjunto.

respondido por el Sven

Lea otras preguntas en las etiquetas