Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I-O-Ports Es
I-O-Ports Es
Rpu
Pxn
Lógica
Todos los registros y referencias de bits en esta sección están escritos en forma general. Una "x" minúscula representa la
letra de numeración del puerto, y una "n" minúscula representa el número de bit. Sin embargo, cuando se utiliza el registro
o el bit define en un programa, la forma precisa debe ser utilizado. Por ejemplo, PORTB3 para el bit nº 3 del puerto B, aquí
documentado generalmente como PORTxn. Los registros de E/S físicos y las ubicaciones de los bits se enumeran en la
Sección 13.4 "Descripción de los registros" en la página 72.
Se asignan tres direcciones de memoria de E/S para cada puerto, una para el registro de datos - PORTx, otra para el registro
de dirección de datos - DDRx, y otra para los pines de entrada del puerto - PINx. La ubicación de E/S de los pines de
entrada del puerto es de sólo lectura, mientras que el registro de datos y el registro de dirección de datos son de
lectura/escritura. Sin embargo, si se escribe un uno lógico en un bit del registro PINx, se producirá una conmutación en el
bit correspondiente del registro de datos. Además, el bit de desactivación de pull-up - PUD en el MCUCR desactiva la función
de pull-up para todos los pines en todos los puertos cuando se establece.
El uso del puerto de E/S como E/S digital general se describe en la Sección 13.2 "Puertos como E/S digital general" en la
página 59. La mayoría de los pines del puerto están multiplexados con funciones alternativas para las características
periféricas del dispositivo. La forma en que cada función alternativa interfiere con el pin del puerto se describe en la Sección
13.3 "Funciones alternativas del puerto" en la página 63. Consulte las secciones individuales del módulo para obtener una
descripción completa de las funciones alternativas. Tenga en cuenta que la habilitación de la función alternativa de algunos
de los pines del puerto no afecta al uso de los demás pines del puerto como E/S digitales generales.
13.2 Puertos como E/S digitales generales
Los puertos son bidireccionales de E/S con pull-ups internos opcionales. La Figura 13-2 muestra una descripción funcional de un
Pin del puerto de E/S, aquí llamado genéricamente Pxn.
WRx, WPx, WDx, RRx, RPx y RDx son comunes a todos los pines de un mismo puerto. clkI/O, SLEEP y PUD
son comunes a todos los puertos.
Considere el período de reloj que comienza poco después del primer flanco descendente del reloj del sistema. El latch se
cierra cuando el reloj es bajo, y se vuelve transparente cuando el reloj es alto, como indica la región sombreada de la señal
"SYNC LATCH". El valor de la señal se bloquea cuando el reloj del sistema pasa a nivel bajo. Se introduce en el registro
PINxn en el siguiente flanco positivo del reloj. Como indican las dos flechas tpd,max y tpd,min, una sola transición de señal
en el pin se retrasará entre ½ y 1½ período de reloj del sistema, dependiendo del tiempo de afirmación.
Cuando se lee un valor de pin asignado por software, se debe insertar una instrucción nop como se indica en la Figura 13-
4 en la página 61. La instrucción out establece la señal "SYNC LATCH" en el flanco positivo del reloj. En este caso, el
retardo tpd a través del sincronizador es de 1 periodo de reloj del sistema.
El siguiente ejemplo de código muestra cómo establecer los pines del puerto B 0 y 1 en alto, 2 y 3 en bajo, y definir los pines
del puerto 4 al 7 como entrada con pull-ups asignados a los pines del puerto 6 y 7. Los valores de los pines resultantes se
leen de nuevo, pero como se ha comentado anteriormente, se incluye una instrucción nop para poder leer de nuevo el valor
asignado recientemente a algunos de los pines.
Ejemplo de código ensamblador(1)
...
Definir pull-ups y poner las salidas en alto
Definir las direcciones de los pines del puerto
ldi r16,(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0)
ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1< < DDB0)
out PORTB,r16
out DDRB,r17
; Insertar nop para la sincronización
nop
; Pines del puerto de lectura
in r16,PINB
...
Ejemplo de código C
unsigned char i;
...
/* Definir pull-ups y poner las salidas en alto */
/* Definir las direcciones de los pines del puerto */
PORTB = (1<<PB7)|(1<< PB6)|(1< < PB1)|(1< <PB0);
DDRB = (1<<DDB3)|(1<< DDB2)|(1< <DDB1)|(1<DDB0);
/* Insertar nop para la sincronización*/
no_operation();
/* Leer los pines del puerto */
i = PINB;
...
Nota: . Para el programa de ensamblaje, se utilizan dos registros temporales para minimizar el tiempo desde que se
establecen los pull-ups en los pines
0, 1, 6, y 7, hasta que los bits de dirección estén correctamente configurados, definiendo los bits 2 y 3 como
bajos y redefiniendo los bits 0 y 1 como conductores altos fuertes.
13.2.5 Habilitación de entradas digitales y modos de reposo
Como se muestra en la Figura 13-2, la señal de entrada digital se puede conectar a tierra en la entrada del disparador
Schmitt. La señal denotada como SLEEP en la figura, es ajustada por el controlador de reposo de la MCU en el modo de
apagado, en el modo de ahorro de energía y en el modo de espera para evitar un alto consumo de energía si algunas
señales de entrada se dejan flotando, o tienen un nivel de señal analógica cercano a VCC/2.
SLEEP se anula para los pines del puerto habilitados como pines de interrupción externa. Si la solicitud de interrupción
externa no está habilitada, SLEEP está activo también para estos pines. SLEEP también es anulado por otras funciones
alternativas como se describe en la Sección 13.3 "Funciones alternativas de los puertos" en la página 63.
Si un nivel lógico alto ("uno") está presente en un pin de interrupción externa asíncrona configurado como "interrupción en
flanco ascendente, flanco descendente o cualquier cambio lógico en el pin" mientras la interrupción externa no está
habilitada, la bandera de interrupción externa correspondiente se activará al reanudar desde el modo de reposo antes
mencionado, ya que la sujeción en estos modos de reposo produce el cambio lógico solicitado.
Nota: . WRx, WPx, WDx, RRx, RPx y RDx son comunes a todos los pines del mismo puerto. clkI/O, SLEEP y PUD
son comunes a todos los puertos. Todas las demás señales son únicas para cada pin.
La Tabla 13-2 resume la función de las señales de anulación. Los índices de pines y puertos de la Figura 13-5 en la página
63 no se muestran en las tablas siguientes. Las señales de anulación se generan internamente en los módulos que tienen
la función alternativa.
Tabla 13-2. Descripción genérica de las señales de anulación de las funciones alternativas
Nombre de la señal Nombre completo Descripción
Si esta señal está activada, la habilitación del pull-up es controlada por la
PUOE Habilitación de la señal PUOV. Si esta señal está desactivada, el pull-up se habilita cuando
anulación del pull-up {DDxn, PORTxn, PUD} = 0b010.
Si PUOE está activado, el pull-up se activa/desactiva cuando PUOV está
PUOV Valor de anulación del
pull-up activado/desactivado, independientemente de la configuración de los bits
del registro
Si esta señalDDxn,
está PORTxn
activada, ylaPUD.
habilitación del controlador de salida es
Activación de la
DDOE controlada por la señal DDOV. Si esta señal está desactivada, el
dirección de los datos
controlador de salida es habilitado por el bit de registro DDxn.
Valor de anulación de Si DDOE está activado, el controlador de salida se
DDOV
la dirección de los habilita/deshabilita cuando DDOV está activado/desactivado,
datos independientemente de la configuración
Si esta señal está activada del bitdedesalida
y el controlador registro DDxn.
está habilitado, el
Activación del valor
PVOE valor del puerto es controlado por la señal PVOV. Si PVOE está
del puerto
desactivado y el controlador de salida está habilitado, el valor del puerto
es
Si controlado por elPVOE,
se establece bit de registro
el valorPORTxn.
del puerto se establece en PVOV,
PVOV Valor del puerto valor de
independientemente de la configuración del
anulación
Bit del registro PORTxn.
Activación de la
PTOE Si PTOE está activado, el bit del registro PORTxn se invierte.
conmutación de
puertos Si este bit está activado, la habilitación de la entrada digital está controlada
Habilitación de la
DIEOE por la señal DIEOV. Si esta señal está desactivada, la habilitación de la
entrada digital
entrada digital viene determinada por el estado de la MCU (modo normal,
Habilitación de la
Valor de modo de reposo).
Si se establece DIEOE, la entrada digital se activa/desactiva cuando
DIEOV anulación
habilitación de la se establece/desactiva DIEOV, independientemente del estado de la
entrada digital MCU (modo
Esta es normal,
la entrada modo
digital dealternar
para suspensión).
funciones. En la figura, la señal está
conectada a la salida del disparador schmitt pero antes del sincronizador.
DI Entrada digital
A menos que la entrada digital se utilice como fuente de reloj, el módulo
con la función alternativa utilizará su propio sincronizador.
Se trata de la entrada/salida analógica hacia/desde funciones
AIO Entrada/salida analógica
alternativas. La señal se conecta directamente a la almohadilla, y puede
utilizarse bidireccionalmente.
Las siguientes subsecciones describen brevemente las funciones alternativas para cada puerto y relacionan las señales
de anulación con la función alternativa. Consulte la descripción de la función alternativa para obtener más detalles.
13.3.1 Funciones alternativas del puerto B
Los pines del puerto B con funciones alternativas se muestran en la Tabla 13-3.