¿Cómo podemos alterar un solo pin de ATxMEGA128?

2

esta podría ser una pregunta básica pero intenté buscar la respuesta antes de publicar la pregunta.

Por lo tanto, estoy tratando de configurar uno de los puertos para la salida. Utilicé

PORTC.DIRSET = 0xFF; //Set Port C to output

Ahora, he conectado el pin de habilitación de mi sensor para decir el pin 1. ¿Cómo lo enciendo? ¿Cómo puedo acceder a un pin particular del puerto C para cambiarlo?

También, ¿cómo puedo hacer que desaparezca?

(Estoy usando una resistencia sensible a la fuerza y quiero que el sensor comience a funcionar solo cuando se recibe una entrada del circuito de la resistencia sensible a la fuerza)

    
pregunta Ron

2 respuestas

2

El ATxmega tiene registros de funciones especiales para facilitar la configuración y el borrado de los pines:

#define PIN_NUM             4            // mask for the specific pin (in this case 
#define PIN_MASK        (1 << PIN_NUM)   // pin 4) in the PORT


if(FSR_output1)                              //If output from FSR circuit
{
    PORTC.OUTSET = PIN_MASK;               //SET sensor enable high
}
else
{
    PORTC.OUTCLR = PIN_MASK;              //SET sensor enable low
}

Estos registros lo hacen así que no necesita lidiar con los ciclos de lectura-modificación-escritura para las líneas IO. El estado del puerto IO se ORA automáticamente con lo que se escribe en OUTSET , y una escritura en OUTCLR se invierte, y se ANDed con el valor invertido. Como tal, puede realizar operaciones de instrucción única para controlar el estado del pin. Es una herramienta muy agradable, y una de las cosas buenas de las partes xmega.

Tenga en cuenta que también hay las resistencias complementarias PORTx.DIRSET y PORTx.DIRCLR , así como PORTx.OUTTGL / PORTx.DIRTGL , que alterna los pines que corresponden a cada binario 1 escrito en el registro.

    
respondido por el Connor Wolf
0

¡Lo descubrí yo mismo!

PORTC.DIRSET = 0xFF;                           //SET PORT C to output
uint8_t sample2 = PORTC.IN;                   //Naming the port
uint8_t sensor_enable = (sample2 >> 6) & 1;  //Naming an individual Pin

if(FSR_output1)                              //If output from FSR circuit
{
    sensor_enable = 1;               //SET sensor enable high
}
else
{
    sensor_enable = 0;              //SET sensor enable low
}
    
respondido por el Ron

Lea otras preguntas en las etiquetas