AVR. ¿Cómo configurar como salida solo un pin?

0

En el código AVR C, si desea declarar algún puerto como salida, solo tiene que hacer esto:

DDRB = 0xFF; 

Pero, ¿cómo puedo hacer si quiero declarar como salida solo un pin? Por ejemplo, quiero declarar que ha generado el pin 13 de Arduino, que corresponde a PB5.

Sé que puedo declararlo en formato binario:

DDRB = b11111111; 

Pero, no sé qué posición de bit corresponde a PB5.

Gracias de antemano, no pude encontrar esta respuesta en Google.

    
pregunta Salva

3 respuestas

2

PB 5 es el bit 6 .
Solo recuerde que la numeración se basa en cero y comienza con el bit menos significativo a la derecha, por lo que el valor que está buscando en este caso es 0b00100000. Cuando establezca este bit, probablemente querrá usar una operación OR lógica en lugar de una tarea simple, por lo que:

DDRB |= 0b00100000;  

en lugar de

DDRB = 0b00100000;  

De esa manera, no borrará inadvertidamente ninguno de los otros bits que ya se hayan establecido.

    
respondido por el brhans
2
  

Pero, no sé qué posición de bit corresponde a PB5.

No es necesario; la cadena de herramientas se encarga de esto por usted.

DDRB |= _BV(PB5);
    
respondido por el Ignacio Vazquez-Abrams
1

Si hay un registro, hay un hoja de datos que te dirá todo sobre el registro dado.

La descripción del registro DDRB muestra claramente que el pin PB5 se puede establecer en entrada o salida mediante bit 5 , que es el sexto bit.

Sideseaestablecersoloestebit,entonceslasiguiente sintaxis se puede utilizar.

DDRB |= (1<<5); // 5 for bit 5

Para hacerlo más legible, puedes usar la macro PB5 que es solo #define PB5 5 (ya definida debajo del capó).

DDRB |= (1<<PB5);

Y para borrar solo el bit específico:

DDRB &= ~(1<<PB5);
    
respondido por el Bence Kaulics

Lea otras preguntas en las etiquetas