esta podría ser una pregunta básica, pero intenté buscar la respuesta antes de publicar la pregunta.
Entonces, estoy tratando de configurar uno de los puertos para que salga. solía
PORTC.DIRSET = 0xFF; //Set Port C to output
Ahora, he conectado el pin de habilitación de mi sensor para decir Pin 1. ¿Cómo lo enciendo? ¿Cómo accedo a un pin particular del puerto C para convertirlo en alto?
Además, ¿cómo puedo hacer que baje?
(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)
El ATxmega tiene registros de funciones especiales para hacer que configurar y borrar pines sea muy fácil:
#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 hacen que no tenga que lidiar con ciclos de lectura, modificación y escritura para las líneas de E/S. El estado del puerto de E/S es automáticamente OR con lo que se escribe en , y se invierte OUTSET
una escritura en AND con el valor invertido. OUTCLR
Como tal, puede realizar operaciones de instrucción única para controlar el estado del pin. Es una herramienta muy buena y una de las cosas buenas de las partes de xmega.
Tenga en cuenta que también están los complementarios PORTx.DIRSET
y PORTx.DIRCLR
los resistores, así como PORTx.OUTTGL
/ PORTx.DIRTGL
, que alterna los pines que corresponden a cada 1 binario escrito en el registro.
¡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
}
mate joven
Ron