De hecho, la respuesta está documentada en la hoja de datos en la sección llamada "Funciones de puerto alternativas".
Como no ha dado una parte, el siguiente ejemplo es para ATMega162, pero de acuerdo con la hoja de datos:
"Es posible que las señales de anulación no estén presentes en todos los pines del puerto, pero
La figura sirve como una descripción genérica aplicable a todos los pines del puerto en
La familia de microcontroladores AVR ".
... por lo que esta información debe aplicarse a cualquier microcontrolador de la familia AVR.
Con referencia a la hoja de datos encontramos el puerto alternativo La sección de funciones comienza en la página 68.
Al comienzo de la sección tenemos una información general que explica cómo funcionan las funciones alternativas, específicamente cómo los puertos IO están controlados por "señales de anulación" que, como se puede deducir del nombre, son señales que anulan varias partes de la Funcionalidad del puerto IO.
De acuerdo con la Tabla 28 en la página 69, para la resistencia de pull-up, las señales de anulación son PUOE
(habilitación de anulación de pull-up) y PUOV
(valor de anulación de pull-up). Cuando PUOE = 1
(anulación habilitada), la resistencia de pull-up solo se habilita si PUOV = 1
. Cuando PUOE = 0
(anulación deshabilitada), la resistencia de extracción tiene una funcionalidad normal.
Entonces,latareaesdeterminarquévalorestomanlasseñalesPUOE
yPUOV
cuandoseusalafunciónalternativaRXD.Larespuestasedaenlassiguientestablas.ParaelATMega162,RXD0estáenelPuertoD,bit0,segúnlatabla38enlapágina78.
Ahoraquesabemosquéfunciónalternativaestamosbuscando,veamoslatablaqueserefierealasseñalesdeanulaciónparaPD0.EstosepuedeencontrarenlaTabla40enlapágina80.
Aquí podemos ver que para PD0, los valores de PUOE
y PUOV
son RXEN0
y PORTD0 . PUDn
respectivamente. Al descomponerlo, esto significa que cada vez que se habilita el receptor UART ( RXEN0 = 1
- vea las descripciones del registro USART), entonces se habilita la anulación de la resistencia de pull-up. Eso significa que la resistencia de pull-up ahora está controlada por el valor PUOV
. Podemos ver entonces en la ecuación que PUOV = 1
cuando (PORTD0 . PUDn) = 1
- es decir, cuando el AND lógico de PORTD0
y PUDn
es verdadero. Este es el caso cuando PORTD0 = 1
y cuando PUDn = 1
.
TL; DR; Cuando la función alternativa de RX está habilitada, podemos ver en la hoja de datos que la resistencia de pull-up aún está controlada por el bit de registro PORTD0
al igual que en la normal (GPIO ) operación.