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

 
 
> MSP430FR4133 LPM, Прошу помощи
SasaVitebsk
сообщение Feb 10 2016, 14:07
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Очень редкие проекты у меня на MSP. А с режимами сна вообще дел не имел.
Немного повозился - понял, что там вообще свой подход к написанию проектов нужен. А он у меня не выработан. ((
Короче проект маленький. ОС не нужна не разу. Потребление - основное.
Периферии много задействовано. 3 ноги (прерывания), RTC, LCD, 2 таймера, ADC, USART и I2C. На постоянку только ноги, LCD и RTC. То есть LPM3.5.
Остальная периферия запускается разово. По даташиту на МК нашёл табл. 6-1 "Operating Modes (continued)", где указано что I2C и UART работают только в LPM0 (собственно эти узлы тактируются только SMCLK).
Остальная периферия может спать в LPM3.
Я сейчас в ячейке храню битовый список запущенных узлов. Чтобы знать в какой именно режим сна я имею возможность войти. Но у мне не совсем понятно с выходом из сна.
Приведу пример.
Я работаю с усартом. То есть нахожусь в LPM0. Тут приходит прерывание от ножки (геркон) я просыпаюсь выполняю работу запускаю таймер для задержки на дребезг и надо выйти в голову. То есть выйти из LPM0.
Но если я не работаю с UART, то мне надо выходить из прерывания по LPM3.
И я что-то недогоняю. Достаточно ли мне сделать __bic_SR_register_on_exit(LPM3_bits) и это решит проблему в обоих случаях. Или мне требуется анализировать из какого режима я попал в прерывание?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Feb 11 2016, 07:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Прошу прощения. Просто сформулировать грамотно не могу.
Написал проект. В отладчике он работает. Если режимы сна отрубить - тоже. В готовом изделии - не хочет.
Особенность проекта (хотя я просто наверняка неправильно изначально его спроектировал) в том, что надо менять режимы сна.
Например. Спим в LPM3.5. Приходит прерывание от RTC, обрабатывается и, например раз в сутки надо замерить текущую температуру.
Для этого надо выйти из прерывания со сбросом режима сна подать питание на датчик температуры, зарядить таймаут на таймер 0 и заснуть уже в режиме LPM3.
Потому что если я засну в режиме 3.5, то таймер идёт лесом. Теоретически может одновременно придти несколько прерываний. В которых потребуется разная периферия и, соответственно, мне надо заснуть в таком режиме чтобы вся эта периферия работала.
Как выглядит типовой проект в таком случае? Я сейчас просто выделил байт в BACKMEM где храню флаги рабочей на данный момент периферии. И при засыпании анализирую этот байт.
Но похоже - что-то не так.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Feb 11 2016, 07:45
Сообщение #3


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

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



Цитата(SasaVitebsk @ Feb 11 2016, 11:29) *
Прошу прощения. Просто сформулировать грамотно не могу.
Написал проект. В отладчике он работает. Если режимы сна отрубить - тоже. В готовом изделии - не хочет.
....


Не понятно "в готовом изделии".
В отладчике в смысле debug (то что компилируется в файл mmm.d43) ?
или симулятор.

Например нечто такое:

main.c
-----
main()
{
InitAll();
. . . .
while(1)
{
GetPeriferialAll(); // загрузить состояние периферии
mode = AnalizeAll(); // проанализировать все переменные-флаги-порты итд
Run( mode ); // выполнить действия в зависимости от режима
if( mode == 1 ) Go_LPM2();
else
if( mode == 2 ) Go_LPM3();
else
. . . . . . .

}
}
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 11 2016, 11:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(k155la3 @ Feb 11 2016, 10:45) *
Не понятно "в готовом изделии".

Я отлаживаю с MSP-FET по моему. Короче JTAG отладчик.
Вот всё работатет. Отключаю этот отладчик, передёргиваю питание, и эта же прога работает не так. Причём произвольно не так. Может запустится - всё Ок. Может после прихода прерывания всё выровняться.
Я всё пересмотрел уже 10 раз. Весь мозг сломал. Ничего найти не могу.
Цитата
Например нечто такое:

Вот именно так я и делаю.
Я вот вижу, что нет атомарности при этом выборе. Например я проанализировал что у меня режим 3.5, и только в сон входить, а тут бах прерывание, из прерывания вышел, по факту уже режим изменился, но я это не анализирую и в сон ухожу.
sad.gif
Проанализировал. Получается, что, по видимому, менять режим сна надо именно в прерывании. Если это сделать в голове, то есть шанс войти не в тот режим сна.
То есть получается в голове совсем проги не должно быть. Как у них в примерах.
Вечером осмыслю - попробую.
PS: Вообще, похоже, один режим сна должен быть. Иначе очень сложно разрулить.
Go to the top of the page
 
+Quote Post
mcheb
сообщение Feb 11 2016, 15:27
Сообщение #5


Местный
***

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



Цитата(SasaVitebsk @ Feb 11 2016, 15:04) *
Я отлаживаю с MSP-FET по моему. Короче JTAG отладчик.

В серийном изделии JTAG отладчика НЕТ. И отлаживать надо по BSL
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 22 2016, 13:02
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(mcheb @ Feb 11 2016, 18:27) *
В серийном изделии JTAG отладчика НЕТ. И отлаживать надо по BSL

Проясните пожалуйста. У меня отладчик MSP-FET USB-IF. Родной. В закладке я вижу, что есть и JTAG и SBW. Причём выбор автоматический. На плате у меня заведены сигналы JTAG 4 шт + Reset + test.
1) Что у меня ухудшится в плане отладки, если я заведу только SBW.
2) Я так понял, что для SBW мне нужны следующие ноги: Rst, Test, Usart Tx, Usart Rx? Непонятно нужны ли ещё ноги.
3) Какой прогой я смогу прошить контроллер и залочить его. MspFet мой кристалл не поддерживает.
4) Что делать в проекте с ногами JTAG, чтобы максимально защитить от взлома.

Прошлую прошивку считали китайцы. И поставляют на завод подделки. Причём открыто. Не могу утверждать что она была защищена должным образом. В этот раз попробуем защитится на всех уровнях. От китайцев поддержки никакой. Поэтому опять обратились к нам.
С уважением.
PS: Честно говоря, пока не понимаю. Раньше была прога MspFet. Мы ей пользовались. Сейчас абсолютно непонятно чем можно воспользоваться на замену.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 07:15
Рейтинг@Mail.ru


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