Comencé a usar el Launchpad de MSP430 y cuando estaba examinando el código para parpadear un led, encontré algo extraño. El código es este y es un ejemplo listo:
#include <msp430g2553.h>
unsigned int i = 0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x01;
for (;;)
{
P1OUT ^= 0x01;
for(i=0; i< 20000; i++);
}
}
Al principio, debe inicializar P1DIR para configurar el pin en el que el led está conectado a la salida. Busqué mucho y en todas partes se dice que el registro específico es solo para establecer la dirección. Entonces borré una parte del código y el resto fue este:
#include <msp430g2553.h>
unsigned int i = 0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x01;
for (;;)
{
}
}
Aquí está la parte impar. ¡El led está encendido! ¿No debería estar apagado? ¿La línea de código con P1OUT no le dirá a MSP si el led está encendido o apagado? Con solo P1DIR no debería pasar nada. ¿Qué estoy haciendo mal?