Hola a todos. Tengo una duda que me gustaría resolver. Son de un laboratorio pasado de la universidad.
Cuando trabajo con una placa de prototipo de un LPC1768 basada en un Cortex M3, sobre Keil me encuentro que por ejemplo en un registro cualquiera de 32 bits, si quiero modificar un único valor del registro tengo que estar haciendo perrerías para poner lo que yo quiera sin tocar los demás valores del registro. Os pongo ejemplos cualquiera de las cosas que hacía durante las practicas para por ejemplo encender un led conectado a un pin de uno de los puertos.
LPC_GPIO1->FIOPIN ^= 1<<29;
LPC_GPIO1->FIODIR |= 1<<29;
LPC_GPIO1->FIOPIN = 1 << 21; (esto me vale si solo quería poner en alto el pin 21 sin importar lo demás ya que escribe 0 en todo lo que no sea el 21)
Sin embargo acabo de caer en la cuenta que con arduino por ejemplo, tu puedes fácilmente poner un digitalWrite( 4 , HIGH) y haces que el pin 4 se vaya a alto o a bajo según como quieras sin afectar a los otros pines ni hacerles referencia para que se queden iguales
Que esta pasando? Acaso arduino usa un puerto diferente para cada puerto? No creo ¿como lo hace?
Y como puedo hacer yo eso con mi LPC1768? Si quiero modificar el valor de un solo pin arriba o abajo de manera sencilla como con arduino? Como lo haríais?
Gracias
Cuando trabajo con una placa de prototipo de un LPC1768 basada en un Cortex M3, sobre Keil me encuentro que por ejemplo en un registro cualquiera de 32 bits, si quiero modificar un único valor del registro tengo que estar haciendo perrerías para poner lo que yo quiera sin tocar los demás valores del registro. Os pongo ejemplos cualquiera de las cosas que hacía durante las practicas para por ejemplo encender un led conectado a un pin de uno de los puertos.
LPC_GPIO1->FIOPIN ^= 1<<29;
LPC_GPIO1->FIODIR |= 1<<29;
LPC_GPIO1->FIOPIN = 1 << 21; (esto me vale si solo quería poner en alto el pin 21 sin importar lo demás ya que escribe 0 en todo lo que no sea el 21)
Sin embargo acabo de caer en la cuenta que con arduino por ejemplo, tu puedes fácilmente poner un digitalWrite( 4 , HIGH) y haces que el pin 4 se vaya a alto o a bajo según como quieras sin afectar a los otros pines ni hacerles referencia para que se queden iguales
Que esta pasando? Acaso arduino usa un puerto diferente para cada puerto? No creo ¿como lo hace?
Y como puedo hacer yo eso con mi LPC1768? Si quiero modificar el valor de un solo pin arriba o abajo de manera sencilla como con arduino? Como lo haríais?
Gracias