AVR-ATmega256 ¿Cuál es el uso de PORTxn?

0

En el microcontrolador AVR ATmega2560, hay 3 registros para el puerto de E / S: DDxn, PORTxn y PINxn

DDxn decide la dirección de cada pin mientras los otros dos, de acuerdo con la hoja de datos

  • PINxn cambia el valor de PORTxn al escribir 1 en PINxn

  • Si se ingresa el pin (DDxn se escribe 1), escrito 1 en PORTxn enciende la resistencia de pull-up y el cero escrito lo apaga

  • Si la salida del pin es (DDxn se escribe 0), el pin del puerto se activa alto (uno) si PORTxn se escribe 1 y bajo (cero) si PORTxn se escribe cero

No entiendo lo que significan estos términos: resistencia de pull-up, impulsada alta y baja. ¿Cuál es la diferencia entre 2 términos. ¿Qué hacen con el puerto de E / S y para qué sirven? ¿Alguien puede darme explicación y ejemplo.

Tampoco sé qué registro se usa para la dirección de la tienda para E / S. I significa que para entrada y salida debe haber alguna dirección que indique dónde se almacenan los datos de entrada o dirección que indica dónde se encuentran los datos. Además, si 8 pines de un puerto están configurados para mezclarse entre la salida y la entrada, entonces la forma en que los datos de cada bit de cada pin se organizan para almacenarse en un registro (que contiene 8 bits)

    
pregunta aukxn

3 respuestas

1

Driven High : la señal se dirige a su voltaje positivo (VCC)

Driven Low : la señal se conduce a tierra (GND)

Resistencia de arranque : En resumen, esto significa que hay una resistencia interna que conecta el pin a su voltaje positivo, por lo que aumenta su potencia a menos que ocurra una conexión a GND. Sparkfun tiene un tutorial increíble

Si su registro PORT tiene una combinación de pines definidos como entradas y salidas, aún puede leer los valores muy bien. Para leer los pines definidos como entradas, debería leer el registro de PIN así: uint8_t inputs = PINx;

Sin embargo, en cuanto a las salidas, solo puede establecer el registro PORTx y no tendrá que preocuparse por que afecte a las entradas: Digamos que tiene el pin 2 definido como una entrada y los otros como salidas, escribir un valor como este, PORTx = 0b10001111 , no afectará el valor del pin de entrada y establecerá todos los demás en los valores respectivos. Arduino tiene un buen artículo sobre esto

    
respondido por el Funkyguy
1

La Figura 13-2 en la hoja de datos (que muestra un solo bit de un puerto de E / S) debería dejarlo claro. He resaltado algunas partes para ser discutidas: -

El registro de dirección de datos (rojo) controla un búfer de tres estados que conecta la salida del flip-flop PORT (verde) al pin. Cuando el bit DDR establecido para ingresar el búfer se desactiva y la salida del PORT se desconecta del pin.

La puerta Y de entrada triple (azul) habilita la resistencia de extracción solo cuando el bit DDR está configurado en entrada, el bit PORT es un 1, y PUD (desactivación de extracción) no está activo.

La salida PORT (verde) es un registro en el que puede escribir y leer. Cuando lo lees, estás viendo el valor que pones allí, que puede no ser el mismo que el nivel en el pin.

Leer el 'registro' del PIN (púrpura) siempre te dará el nivel actual en el pin. El valor se puede sincronizar con el reloj de E / S, pero no se almacena; no hay ningún flip-flop para mantener su valor como lo tienen los registros PORT y DDR.

Al escribir el 'registro' del PIN, en realidad se alterna el bit PORT. Para ello, alimenta la salida del flip-flop PORT en su entrada y la sincroniza para crear un contador de división por 2 (amarillo).

    
respondido por el Bruce Abbott
0

Si un pin GPIO está configurado como una entrada, PORTxn determina si la recuperación interna está habilitada (1) o si la entrada está flotando (0).

Si un pin GPIO se configura como una salida, refleja el valor de PORTxn (0 = GND, 1 = Vcc).

El valor actual en un pin siempre está disponible como PINxn.

Cuando un puerto tiene entradas y salidas mixtas, se deben usar las operaciones de manipulación de bits al leer o escribir los registros DDRx, PORTx y PINx.

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas