Salida del temporizador AVR cuando el Registro de dirección de datos está configurado para entrada

1

Esta pregunta se refiere específicamente a un ATmega328P, pero probablemente se pueda generalizar a la mayoría o a todas las MCU AVR.

Conocido 1: cuando el Registro de dirección de datos (DDR) para un pin se establece como modo de entrada, aún es posible escribir en el PUERTO para ese pin; En lugar de producir una salida, el valor escrito en PORT simplemente cambiará el pin entre el modo pull-up y tri-state.

Conocido 2: se puede configurar un pin para cambiar su estado de salida junto con el módulo de generación de forma de onda en un temporizador.

Pregunta : cuando el DDR para un pin está configurado como input , y ese mismo pin también está configurado para cambiar de estado junto con un temporizador , ¿la forma de onda del temporizador cambiará efectivamente el pin entre los modos tri-state y pullup? ¿O el pin se comportará de manera más razonable, permaneciendo en tri-state / pullup según el valor de PORT?

Supongo que la pregunta podría replantearse de la siguiente manera: ¿el temporizador escribe en el registro del PORT para cambiar el estado del pin?

Lo único remotamente relevante que pude encontrar en hoja de datos es la siguiente línea:

  

... Sin embargo, tenga en cuenta que el bit de Registro de dirección de datos (DDR) correspondiente al pin [temporizador] debe configurarse para habilitar el controlador de salida.

    
pregunta Yankee

1 respuesta

1

La sección "Puertos de E / S" de cada hoja de datos de AVR brinda un tratamiento detallado de lo que afecta cada salida "virtual". En el caso de OCnx , el PVOV se ve afectado directamente, y el PVOV se define como "Valor de anulación del valor del puerto - Si se establece PVOE, el valor del puerto se establece en PVOV, independientemente de la configuración del bit de registro PORTxn.". PVOE se establece en OCnx ENABLE , controlado por COMnx . Por lo tanto, el valor OCnx se no se escribe en PORTx , y siempre se emitirá en el pin con un valor apropiado en DDRx independientemente de la configuración de PORTx .

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas