Перейти к содержанию

    

MSP430F169 зависает при включении LPM3

Всем добрый день. Делаю устройство на MSP430F169, которое должно работать от двух источников питания - сетевого и от батареи. Для продления работы от батареи завёл на 5 ногу 2 порта признак наличия сетевого питания и при его отсутствии МК должен только спать и считать время. Написал такой код, но при запуске и проверке наблюдаю картину: программа выполняется нормально, часы идут, выключаю сетевое питание, включаю, CCS ничего не говорит, но время зависает. Жму на паузу в CCS, он показывает на 218 строку, жму продолжить, паузу - указатель всё там же. В чём может быть проблема?

 

post-91921-1511378373_thumb.jpg

 

P.S. никто не знает, сколько можно раз перепрошивать МК? Этот я прошивал уже очень много, т.к. учился всему на нём...

Изменено пользователем Alexgus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала - у Вас скорее всего ошибка в последнем if - вместо бинарного-битового

используется логический оператор "И" (&&). А должен быть (&), те бинарный.

Поэтому, в зависимости от того, как "сложатся" звезды на P2IN, контроллер может спать практически вечно.

---

Для проверки BIT5 - что соответствует битовой маске 00100000 == 0x20

if( P2IN & 0x20 )

Для работы с битами никогда не используйте && (логический).

 

Используйте в векторе

_BIC_SR_IRQ(LPM3_bits); // LPM3_EXIT

 

По поводу кол-ва циклов программирования для F169.

Встречал хорошо запрятанную в DS цифру 10000 или 100000. Даже если 10т - это очень много,

на отладку хватит. У меня за 5-6 лет еще ни один процессор "не перебрал", а перепрошиваю по 10 раз на день.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Жму на паузу в CCS, он показывает на 218 строку, жму продолжить, паузу - указатель всё там же. В чём может быть проблема?

А почему _BIC_SR/_BIS_SR, а не __bic_SR_register_on_exit/__bis_SR_register_on_exit ?

__bic_SR_register_on_exit/__bis_SR_register_on_exit - делают дело на стеке, а у вас как я понимаю сразу же применится и сразу же уснёт не выйдя из прерывания.

И в целом код написан криво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, заработало. Выполнил оба совета. Стиль кривой, не спорю, но я это делаю чисто для себя и никто не учил писать красиво. Собственно на MSP меня посадили только чтобы не дёргал нормальных программистов для прошивания синтезаторов. А теперь это чисто как хобби для меня.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация