Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MSP430F169 зависает при включении LPM3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Alexgus
Всем добрый день. Делаю устройство на MSP430F169, которое должно работать от двух источников питания - сетевого и от батареи. Для продления работы от батареи завёл на 5 ногу 2 порта признак наличия сетевого питания и при его отсутствии МК должен только спать и считать время. Написал такой код, но при запуске и проверке наблюдаю картину: программа выполняется нормально, часы идут, выключаю сетевое питание, включаю, CCS ничего не говорит, но время зависает. Жму на паузу в CCS, он показывает на 218 строку, жму продолжить, паузу - указатель всё там же. В чём может быть проблема?

Нажмите для просмотра прикрепленного файла

P.S. никто не знает, сколько можно раз перепрошивать МК? Этот я прошивал уже очень много, т.к. учился всему на нём...
k155la3
Для начала - у Вас скорее всего ошибка в последнем if - вместо бинарного-битового
используется логический оператор "И"
(&&). А должен быть (&), те бинарный.
Поэтому, в зависимости от того, как "сложатся" звезды на P2IN, контроллер может спать практически вечно.
---
Для проверки BIT5 - что соответствует битовой маске 00100000 == 0x20
Код
if( P2IN & 0x20 )

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

Используйте в векторе
Код
_BIC_SR_IRQ(LPM3_bits); // LPM3_EXIT


По поводу кол-ва циклов программирования для F169.
Встречал хорошо запрятанную в DS цифру 10000 или 100000. Даже если 10т - это очень много,
на отладку хватит. У меня за 5-6 лет еще ни один процессор "не перебрал", а перепрошиваю по 10 раз на день.
jcxz
Цитата(Alexgus @ Nov 22 2017, 21:22) *
Жму на паузу в 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 - делают дело на стеке, а у вас как я понимаю сразу же применится и сразу же уснёт не выйдя из прерывания.
И в целом код написан криво.
Alexgus
Спасибо, заработало. Выполнил оба совета. Стиль кривой, не спорю, но я это делаю чисто для себя и никто не учил писать красиво. Собственно на MSP меня посадили только чтобы не дёргал нормальных программистов для прошивания синтезаторов. А теперь это чисто как хобби для меня.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.