Make_Pic 0 24 июля, 2018 Опубликовано 24 июля, 2018 · Жалоба Вопросы спецам по MSP430 (сильно не пинайте, с MSP430 раньше не работал, доки читаю): 1) После сброса MSP430F2274 потребляет ток ~150мкА. - Какие биты установлены в DCOCTL, BCSCTL1,2,3 после сброса? Пытаюсь получить такой же ток установкой регистров - то ~600мкА. Как правильно запрограммировать эти регистры для 1МГц MCLK с минимальным потреблением? void SetLowPowerMode() { BCSCTL1 |= XT2OFF | DIVA_3; // ACLK =8/8 =1МГц // BCSCTL1 &= ~XTS; // LFXT1 = LF XTAL BCSCTL2 |= DCOR; // Rosc BCSCTL1 &= ~(RSEL1 + RSEL0); // RSEL = 4 } 2) И здесь же: необходимо периодически включать внешний кварц на 8МГц для формирования синуса PWM и потом опять включать DCO 1МГц - Как это правильно сделать? 3) И последнее: необходимо в режиме тактирования от внешнего кварца 8МГц по прерываниям таймера 5-10мс выходить из LPM3 опрашивать состояние портов и обратно возвращаться в LPM3 для низкого потребления. Как лучше это реализовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 25 июля, 2018 Опубликовано 25 июля, 2018 (изменено) · Жалоба 1. Если есть отладчик, то можно посмотреть значение DCO сразу после сброса, из той программы разработки, которой пользуетесь. Если нет отладчика - просто в первых строках программы считать значение DCO и вывести его на какое-то устройство вывода, которым располагаете (LCD, последовательный порт подключенный к ПК, и т.п.) Именно MSP430F2274 я не программировал, но насколько помню, в младших (F2013, G2xxx) и старших сериях (F5xxx) - DCO был сразу настроен на 1МГц, и как-то ещё его настраивать не было нужды. Сравните частоту процессора тактируемого от DCO и от XT1=8МГц. Например какую-нить мигалку светодиодом запустите. Если частота мигания отличается в 8 раз - значит всё нормально, DCO настроен на 1МГц. Повышенный ток потребления может ещё возникнуть от оставленных не подключенными PIN-ов, которые настроены на ввод. Нужно все неиспользуемые PIN-ы настраивать на вывод, и в этом случае ток потребления может упасть до тех значений что указаны в даташите. 2) И здесь же: необходимо периодически включать внешний кварц на 8МГц для формирования синуса PWM и потом опять включать DCO 1МГц - Как это правильно сделать? 2. И DCO и XT1 быстро отключаются и включаются в регистре статуса процессора SR. Для переключения между ними, нужно чтобы оба были активны. Убеждаемся, что сигнал на который будем переключаться - стабилизировался, и переключаем MCLK на него. А тот сигнал что больше не нужен - выключаем в регистре статуса процессора. Внизу картинка, где приведены биты, которые быстро выключают DCO, XT1, CPU и SMCLK. Выключаются только те источники сигнала, которые не тактируют MCLK или SMCLK. 3) И последнее: необходимо в режиме тактирования от внешнего кварца 8МГц по прерываниям таймера 5-10мс выходить из LPM3 опрашивать состояние портов и обратно возвращаться в LPM3 для низкого потребления. Как лучше это реализовать? Просто настроить прерывание от таймера, и включить режим LPM3. По прерыванию в стеке сохранятся настройки режима LPM3, произойдёт переключение в активный режим, и процессор отработает прерывание. При выходе из прерывания, из стека автоматически восстановятся настройки LPM3 и контроллер опять "уснёт". Никаких дополнительных действий по сохранению LPM3 после завершения прерывания, в обработчике делать не нужно. Изменено 25 июля, 2018 пользователем controller_m30 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба PS. Если что, примеры настроек DCO есть в даташите на странице 26. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 26 июля, 2018 Опубликовано 26 июля, 2018 · Жалоба . . .Пытаюсь получить такой же ток установкой регистров - то ~600мкА. . . . Возможно Вы все нестройки делаете правильно. Для замера тока в режиме LPM программатор-отладчик должен быть отключен от контроллера. Иначе замер может быть существенно завышен из-за перетока контроллер-JTAG (за SBW не скажу, но тоже возможно). Частота по умолчанию для DCO у меня полчалась около 1.4 МГц. В даташите на Ваш контроллер есть таблица, как настроить DCO на нужную частоту-дипазон. Main DCO Characteristics SLAS504G Pg 35 ТУТ. Кроме того, для установки DCO могут быть (или не быть для F2274) калибровочные константы, которые прописываются в флеш по определенным адресам. Они прописаны с завода. Если их затереть, то будут проблемы - надо будет запускать спец. утилиту-пример для калибровки и записи их "обратно". Для контроля, на какой реально частоте работает контроллер, можно DCO подключить на SMCLK, а его вывести на порт-ногу контроллера (настроить в начале программы порт как выход и альтернативную ф-ю выдачи SMCLK, для F2274 это P2.1 и P1.4). Смотреть осцилографом. При этом будет хорошо виден уход в LPM с отключением DCO по командам LPM, и включение DCO по аппаратным прерываниям. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться