реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> MSP430F169 зависает при включении LPM3, или CCS зависает?
Alexgus
сообщение Nov 22 2017, 19:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 26-05-16
Пользователь №: 91 921



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

Прикрепленное изображение


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

Сообщение отредактировал Alexgus - Nov 22 2017, 19:23
Go to the top of the page
 
+Quote Post
k155la3
сообщение Nov 23 2017, 02:25
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



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

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

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


По поводу кол-ва циклов программирования для F169.
Встречал хорошо запрятанную в DS цифру 10000 или 100000. Даже если 10т - это очень много,
на отладку хватит. У меня за 5-6 лет еще ни один процессор "не перебрал", а перепрошиваю по 10 раз на день.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 23 2017, 09:04
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(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 - делают дело на стеке, а у вас как я понимаю сразу же применится и сразу же уснёт не выйдя из прерывания.
И в целом код написан криво.
Go to the top of the page
 
+Quote Post
Alexgus
сообщение Nov 23 2017, 17:15
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 26-05-16
Пользователь №: 91 921



Спасибо, заработало. Выполнил оба совета. Стиль кривой, не спорю, но я это делаю чисто для себя и никто не учил писать красиво. Собственно на MSP меня посадили только чтобы не дёргал нормальных программистов для прошивания синтезаторов. А теперь это чисто как хобби для меня.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th April 2024 - 04:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01419 секунд с 7
ELECTRONIX ©2004-2016