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

 
 
> STM32L151 MSI переключение частот, Делюсь наблидениями.
MiklPolikov
сообщение Jun 15 2012, 22:47
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Делюсь наблюдениями :

Изменять частоту генератора MSI надо так
Код
int RCC_ICSCR_MASK;

RCC_ICSCR_MASK=RCC->ICSCR;
RCC_ICSCR_MASK&=~RCC_ICSCR_MSIRANGE;
RCC_ICSCR_MASK|=RCC_ICSCR_MSIRANGE_64KHz;
RCC->ICSCR=RCC_ICSCR_MASK;


Т.е сначала копировать весь регистр в переменную, изменять биты в переменной, и потом копировать обратно.

Если менять биты прямо в регистре , даже если при этом недопустимых комбинаций битов не образуется, и даже если в это время
от MSI ничего не тактируется, возникают удивительные глюки :
У меня , при выполении условия : вышли из спящего режима + изменили частоту MSI глохнет генератор LSE !
Причём глохнет он на строчке
RCC->ICSCR|=RCC_ICSCR_MSIRANGE_64KHz; // RCC_ICSCR_MSIRANGE_64KHz==0 !

C битами SW в CFGR наблюдаю в точности такую же ситуацию. Если после выхода из спячки переключать
биты в самом регистре RCC_CFGR то LSE глохнет, бит LSERDY сбрасывается.

Очень долго и мучительно отлавливал глюк : у меня программа всё время переключает частоты и входит/выходит из спящего режима.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
KnightIgor
сообщение Jun 17 2012, 16:56
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Чисто формальный подход - результат достигается за две операции: сначала сброс (группы) битов, затем установка части из них. При операции непосредственно над регистром он примет некое промежуточное состояние сразу после & и прежде, чем будут установлены требуемые биты операцией |. Возникает предположение, что аппаратуре не нравятся сброшенные биты. Когда же операция производится с привлечением временной переменной, сам регистр "мгновенно" меняет биты на "правильные", без промежуточного состояния. Вывод: видимо, есть-таки некая "недопустимая комбинация битов".

Сообщение отредактировал IgorKossak - Jun 17 2012, 18:12
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post

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

 


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


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