DESCRIPCIÓN
Los puertos de entradas y salidas digitales del atmega32 se manipulan a través de 3 registros. Primero, el registro DDRx se utiliza para configurar un pin como entrada o salida. Seguido, esta el registro PORTxn que habilita con 5v o deshabilita con 0v. Luego, tenemos el registro PINxn que sirve para leer el estado un pin configurado previamente como entrada. Y por ultimo, el todos los pines de cada puerto se puede habilitar una resistencia PULL-UP. A continuación se describen las características de los PUERTOS IO.
- 3 Registro independientes para Configurar, Escribir y Leer (DDRx, PORTX y PINX).
- Selección de resistencia PULL-UP en todos los pines de sus puertos IO.
En las siguientes imágenes se detallaran los registros DDR, PORT, y PIN
A continuación se explicará cómo configurar, escribir o leer un Pin de cada Puerto
- DDRX: Escribiendo en cada bit (“1” lógico = Salida | “0” lógico = Entrada).
- PORTX: Escribiendo en cada bit la salida tendrá un nivel de Voltaje (1=5v|0=0v).
- PINX: Este registro es de solo Lectura (5v =”1” lógico | 0v =“0” lógico).
Configuración de un PIN
- DDRA = 0b11111111; Configura todos los pines del Puerto A como Salida.
- DDRA = 0b00000000; Configura todos los pines del Puerto A como Entrada.
- DDRA = 0b00001111; Los pines Altos como Entrada y el resto como Salida.
Escritura de un PIN
- PORTA = 0b11111111; Todos los pines del Puerto A con una salida de 5v.
- PORTA = 0b00000000; Todos los pines del Puerto A con una salida de 0v.
- PORTA = 0b00001111; Los pines Altos a 0v y los pines Bajos a 5v.
Lectura de un PIN
- Valor = PINA0; El estado lógico del pin PA0 se escribe en
- Valor = PINA; El estado lógico del todo el Puerto A se escribe en valor.
Para poder Habilitar la resistencia PULL-UP en un pin determinado, es necesario que dicho pin este configurado como entrada y luego escribir “1” lógico en el registro de salida PORTX. Y automáticamente se habilita la resistencia PULL-UP.
Ejemplo de como configurar Entradas y Salidas en los puertos IO
- DDRA = 0b11111110; Configura el pin PA0 como entrada el resto como Salida.
- PORTA = 0b00000001; Habilita la resistencia PULL-UP solo para el pin PA0.
EJEMLPO N°1 – PUERTO D COMO SALIDA DIGITAL +
SECUENCIAL DE LUCES
En este ejemplo se configura el PUERTO D como salida digital para conectar leds y poder efectuar un secuencial de luces. A continuación se muestra el circuito de conexión y se describe el código.
Código principal MAIN
#define F_CPU 8000000UL
#include
#include
int main(void){
//Configuramos el PORTD como salida digital
PORTD = 0x00;
DDRD = 0xFF;
while (1){
for(int i = 0; i<8; i++){
PORTD = (3<
EJEMLPO N°2 - PUERTO D COMO SALIDA DIGITAL
PARA SECUENCIAL + 2 BOTONES PARA EFECTOS
Este nuevo ejemplo se basa en el mismo ejemplo anterior, ya que se utiliza el mismo secuencial de luces, pero ademas se agregaran 2 botones para poder efectuar varios efectos. Los botones estarán conectados en los pin PA0 y PA1, ademas, se habilitará la resistencia pull-up interna para estos pines. A continuación se muestra el circuito de conexión y se describe el código.
Código principal MAIN
#define F_CPU 8000000UL
#include
#include
uint8_t efecto = 0;
int main(void){
//Configura el PORTD como salida digital.
PORTD = 0x00;
DDRD = 0xFF;
DDRA &= ~(1<
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.