Alexgus 0 22 ноября, 2017 Опубликовано 22 ноября, 2017 (изменено) · Жалоба Всем добрый день. Делаю устройство на MSP430F169, которое должно работать от двух источников питания - сетевого и от батареи. Для продления работы от батареи завёл на 5 ногу 2 порта признак наличия сетевого питания и при его отсутствии МК должен только спать и считать время. Написал такой код, но при запуске и проверке наблюдаю картину: программа выполняется нормально, часы идут, выключаю сетевое питание, включаю, CCS ничего не говорит, но время зависает. Жму на паузу в CCS, он показывает на 218 строку, жму продолжить, паузу - указатель всё там же. В чём может быть проблема? P.S. никто не знает, сколько можно раз перепрошивать МК? Этот я прошивал уже очень много, т.к. учился всему на нём... Изменено 22 ноября, 2017 пользователем Alexgus Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба Для начала - у Вас скорее всего ошибка в последнем if - вместо бинарного-битового используется логический оператор "И" (&&). А должен быть (&), те бинарный. Поэтому, в зависимости от того, как "сложатся" звезды на P2IN, контроллер может спать практически вечно. --- Для проверки BIT5 - что соответствует битовой маске 00100000 == 0x20 if( P2IN & 0x20 ) Для работы с битами никогда не используйте && (логический). Используйте в векторе _BIC_SR_IRQ(LPM3_bits); // LPM3_EXIT По поводу кол-ва циклов программирования для F169. Встречал хорошо запрятанную в DS цифру 10000 или 100000. Даже если 10т - это очень много, на отладку хватит. У меня за 5-6 лет еще ни один процессор "не перебрал", а перепрошиваю по 10 раз на день. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 181 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба Жму на паузу в 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 0 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба Спасибо, заработало. Выполнил оба совета. Стиль кривой, не спорю, но я это делаю чисто для себя и никто не учил писать красиво. Собственно на MSP меня посадили только чтобы не дёргал нормальных программистов для прошивания синтезаторов. А теперь это чисто как хобби для меня. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться