|
MSP430FR4133 LPM, Прошу помощи |
|
|
|
Feb 10 2016, 14:07
|
Гуру
     
Группа: Свой
Сообщений: 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) и это решит проблему в обоих случаях. Или мне требуется анализировать из какого режима я попал в прерывание?
|
|
|
|
|
 |
Ответов
|
Feb 18 2016, 08:49
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Прошу прощения, за нерегулярность постов. 2 дня отсидел в командировке. Ещё раз подтверждаю, что данные разрушаются в LCDM.. Причину не понимаю. Все косяки, которые я нашёл, чётко описаны в даташите. Короче не устраняют, а описывают. )) Ну хотя бы так. По LCDE контроллеру перерыл всё не нашёл ничего подозрительного. Единственное, что нашёл, это многократное упоминание про "The LCD memory registers can also be accessed as word". У меня там флаги были, но на uint16_t, то есть в моём понимании, я ничего не нарушил. Я попробую просмотреть листинг, может ли при этом компилятор побайтно обращаться в конструкции типа status.bit. На текущий момент всё прекрасно работает. Вчера все тайминги вылизал и правильность включения/ отключения периферии. === 2 jcxz, из не выключенной периферии может быть только что-то включенное по умолчанию. За используемой я слежу. Удобно, когда питание узлов МК где-то отдельно включается. Как, например, в ARM. )) А здесь как-то всё разбросано по кристаллу. Закончу функционал, приступлю к вылизыванию по потреблению. У меня по умолчанию (если не трогать ничего) работает только 32768, RTC, LCD и по 3 ногам прерывания. Прерывание по RTC - раз в минуту. Так что замерить можно на прямую. Сижу в LPM3.5. По даташиту должно быть порядка 2 мкА. Старый прибор был на f415. Жрал 7-12 мкА. На новом я вижу значение 14. Пока измерено тестером, так что за достоверность данных не ручаюсь. В ближайшее время измерю выложу достоверные данные. 2 k155la3. Спасибо опробую и Вашу методику. Хотя, понятно, что она оценочная. Осцилограф неточный прибор по напряжению
|
|
|
|
|
Feb 18 2016, 09:17
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(SasaVitebsk @ Feb 18 2016, 14:49)  2 jcxz, из не выключенной периферии может быть только что-то включенное по умолчанию. За используемой я слежу. Удобно, когда питание узлов МК где-то отдельно включается. Как, например, в ARM. )) А здесь как-то всё разбросано по кристаллу. Закончу функционал, приступлю к вылизыванию по потреблению. У ARM нет включения/выключения - эти функции не включены в ядро. А у Cortex-ов разных производителей, не питание узлов обычно включается, а тактирование. А здесь (в MSP430) удобнее сделано управление тактированием. Не нужно следить какой источник тактирует какой узел, не нужно составлять бит-карту подключенных к данному источнику тактирования периферийных узлов и отключать его при обнулении карты. Здесь всё это делается аппаратно - каждый источник тактирования сам отслеживает какие есть в данный момент активные запросы тактирования от каких периферийных узлов и, если таковых нет, сам отключается. И сам включается если появляется запрос тактирования от какой-то периферии. Достаточно только изначально проинитить все источники тактирования, которые где-либо будут использоваться, а в конфигурации каждой периферии правильно прописать какой источник тактирования использовать.
|
|
|
|
Сообщений в этой теме
SasaVitebsk MSP430FR4133 LPM Feb 10 2016, 14:07 mcheb Вы хоть сами поняли, что у Вас происходит? Если Вы... Feb 10 2016, 14:54 k155la3 Извиняюсь за бестактный вопрос.
У Вас есть работаю... Feb 10 2016, 15:39 SasaVitebsk Прошу прощения. Просто сформулировать грамотно не ... Feb 11 2016, 07:29 k155la3 Цитата(SasaVitebsk @ Feb 11 2016, 11:29) ... Feb 11 2016, 07:45  SasaVitebsk Цитата(k155la3 @ Feb 11 2016, 10:45) Не п... Feb 11 2016, 11:04   mcheb Цитата(SasaVitebsk @ Feb 11 2016, 15:04) ... Feb 11 2016, 15:27    SasaVitebsk Цитата(mcheb @ Feb 11 2016, 18:27) В сери... Feb 22 2016, 13:02 jcxz Цитата(SasaVitebsk @ Feb 11 2016, 13:29) ... Feb 12 2016, 05:06  SasaVitebsk Прошу прощения. Писал ответ, но почему то не вижу ... Feb 15 2016, 11:38   jcxz Цитата(SasaVitebsk @ Feb 15 2016, 17:38) ... Feb 16 2016, 05:25 k155la3 Если у Вас программа работает с регулярным циклом,... Feb 16 2016, 07:20
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|