Eliminación de bits de bandera al escribir 1

3

La mayoría de los dispositivos de interfaz tienen varios bits de bandera (que también pueden provocar interrupciones si se proporciona esa funcionalidad) que se utilizan para verificar el estado del dispositivo / operación.

Por lo general, se borran escribiendo un '1' en dicho bit.

Solo algunas preguntas con respecto a esto ...

  1. ¿Por qué se borran al escribir un 1? Quiero decir, si el indicador ya está establecido en 1 por el dispositivo, ¿no tiene sentido borrarlo escribiéndole un 0?

  2. Digamos que tengo un registro de estado de 8 bits con bits distribuidos como (seleccionado de la hoja de datos de NRF24L01 +)

Si el bit 5 (TX_DS) se establece (es decir, se convierte en 1) y quiero borrarlo escribiéndole 1, ¿qué valor escribo en el registro?

    
pregunta Ankit

1 respuesta

8
  1. No, porque entonces es posible que pueda borrar otros bits que no tenía la intención de hacer por accidente. Es un poco difícil de verbalizar, pero es muy fácil escribir un 0 simplemente escribiendo un 0. Usted debe elegir deliberadamente escribir un 1.

  2. Como cada posición espera un 1 para borrarlo, escriba un 1 solo en el bit 5:

    STATUS = _BV(TX_DS);
    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas