Начал освоение launchpad-a. Пытался сделать програмку с ШИМ для светодиода, запускаемого с кнопки. Столкнулся с проблемой, что как-то неправильно плата реагирует на кнопку s2, подключенную к ноге p1.3
простейший код
#include "io430.h"
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= BIT6; //P1.6 назначаем выходом, т.к. там светодиод
P1DIR &= ~BIT3; //P1.3 назначаем входом, т.к. там кнопка
P1REN |= BIT3; //подключаем внутр. резистор к P1.3 и к +
//Теперь на P1.3 высокий уровень всегда, пока кнопка НЕ нажата
while(1)
{
//Если кнопка нажата на P1.3 будет логич. 0
if((P1IN & BIT3) == 0)
P1OUT |= BIT6; //Включаем светодиод
else
P1OUT &= ~BIT6; //Отпустили кнопку - выкл. светодиод
}
}
Этот код не работает правильно. После ресета светодиод просто горит и на кнопку не реагирует.
Вместо io430.h пробовал и io430g2553.h и msp430g2553.h
при дебаге значение P1IN остается неизменным, вне зависимости от того, нажата кнопка s2 или нет.
З.ы. Абсолютно непонятным образом плата, просто полежавшая отключенной от USB, а затем вновь подключенная, стала работать как надо. Прошита другая программа (с ШИМ) — снова не работает. Прошита опять вышеприведенная — и опять не работает, после 5-6 отключений-подключений от USB — начинает работать. Это выше моего понимания))