Estaba leyendo un código para usarlo en un ATMEGA328P de arduino y no puedo averiguar qué hace esta línea de código.
ASSR &= ~(_BV(EXCLK) | _BV(AS2));
Sé que ASSR es el registro de estado asíncrono y que EXCLK son AS2 son bits en ese registro. Estoy bastante seguro de que _BV () se usa para establecer ese bit, corríjame si me equivoco. Lo que no sé es lo que realmente hace este código? Parece que este código utiliza operaciones bitwise para comparar el registro ASSR con un solo bit ( ~(_BV(EXCLK) | _BV(AS2))
) y luego establece ese registro en un solo bit, uno o cero. Esto no tiene ningún sentido para mí, ya que este registro tiene 7 bits de tamaño y no puede compararse con un solo bit. Cualquier ayuda es apreciada, gracias.
Documentación relevante: