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

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 меня посадили только чтобы не дёргал нормальных программистов для прошивания синтезаторов. А теперь это чисто как хобби для меня.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...