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

 
 
 
Reply to this topicStart new topic
> Изменение частоты LPC1768
Пришелец
сообщение Mar 4 2011, 08:24
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272



Добрый день! rolleyes.gif
в процессе работы для управления энергопотреблением меняю частоту LPC1768
путём изменения делителя
SC->CCLKCFG = div; /* Setup Clock Divider */
затем подстраиваю скорость перефирии под новую тактовую
и ещё некоторые меры по uart
процессор работает от кварца 12 мгц PLL0 включен usb от PLL1
flash акселератор установлен под тактовую частоту до 100 мгц 0x0000403A
Всё вроде работает. Но часто после переключений частоты бывает HardFault_Handler
на одном и том же месте кода где вроде бы нет ничего особенного.
Вопрос - использовал ли кто переключение частоты таким способом? Можно ли так делать?

Сообщение отредактировал IgorKossak - Mar 4 2011, 15:42
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Mar 4 2011, 08:37
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Вообще-то в мануале четко описан способ установки частоты.
"Изменение частоты" - это просто частный случай установки...


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Пришелец
сообщение Mar 4 2011, 08:45
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272



Цитата(DpInRock @ Mar 4 2011, 11:37) *
Вообще-то в мануале четко описан способ установки частоты.
"Изменение частоты" - это просто частный случай установки...

Полностью согласен rolleyes.gif
читал.
я всего лишь меняю делитель рассчитывая на эти слова:
"
An 8-bit divider allows a range of options, including slowing CPU operation to a low
rate for temporary power savings without turning off PLL0.
"
но при этом возникает описанная выше проблема. (про неё в мануале не сказано rolleyes.gif )

Сообщение отредактировал IgorKossak - Mar 4 2011, 15:42
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Mar 4 2011, 08:54
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Вы делаете поперек мануала и удивляетесь проблеме.
Да еще перестариваете перИферию на ходу.

Я также меняю частоту для снижения потребления. Но делаю это честно. И проблем никогда не возникало.
---
Чисто объясняю.
PLL - это сложное устройство.
Если вот так резко поменять частоту на входе - поведение PLL плохо предсказуемо.
Именно поэтому она отключается в момент перестройки.
И вот когда локдетект, то включается.
И уж после этого включаются блоки периферии.



Сообщение отредактировал DpInRock - Mar 4 2011, 09:02


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Пришелец
сообщение Mar 4 2011, 09:06
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272



Цитата(DpInRock @ Mar 4 2011, 11:54) *
Вы делаете поперек мануала и удивляетесь проблеме.
Да еще перестариваете перИферию на ходу.

Я также меняю частоту для снижения потребления. Но делаю это честно. И проблем никогда не возникало.
---
Чисто объясняю.
PLL - это сложное устройство.
Если вот так резко поменять частоту на входе - поведение PLL плохо предсказуемо.
Именно поэтому она отключается в момент перестройки.
И вот когда локдетект, то включается.
И уж после этого включаются блоки периферии.

я PLL вообще не трогаю делитель стоит после него - это быстрый и простой способ изменения частоты процессора без отключения PLL
цитату из мануала я приводил выше

Сообщение отредактировал IgorKossak - Mar 4 2011, 15:43
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 4 2011, 09:11
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Пришелец @ Mar 4 2011, 11:24) *
в процессе работы для управления энергопотреблением меняю частоту LPC1768
путём изменения делителя
SC->CCLKCFG = div; /* Setup Clock Divider */
затем подстраиваю скорость перефирии под новую тактовую
и ещё некоторые меры по uart

Код - в студию. Одна строчка не катит. Есть мнение, что там нехорошие вещи делаются.
Go to the top of the page
 
+Quote Post
Пришелец
сообщение Mar 4 2011, 09:21
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272



Цитата(scifi @ Mar 4 2011, 12:11) *
Код - в студию. Одна строчка не катит. Есть мнение, что там нехорошие вещи делаются.

Код
SystemFrequency*=(old_div + 1);
SC->CCLKCFG   = div;          /* Setup Clock Divider                */
SystemFrequency/=(div+ 1);

rs485_ini_speed();
uart_modem_ini_speed();
uart_nmea_ini_speed();
can_ini_speed();

//SSP_ini(SSP_CLK);

пожалуйста rolleyes.gif
вроде без перенастройки частоты SSP не грохается уже rolleyes.gif
и тогда уж в тему
Код
#if ((CCLKCFG_Val != 0) && (((CCLKCFG_Val - 1) % 2)))
   #error "CCLKCFG: CCLKSEL field does not contain only odd values or 0!"
#endif

почему в библиотечном файле такое ограничение на значение делителя - только нечётные
в мануале говорится чтобы было больше 1 rolleyes.gif

Сообщение отредактировал IgorKossak - Mar 4 2011, 15:43
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Mar 4 2011, 09:54
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



А у LPC такая хитрая фича.
В даташите могу предложить к примеру делитель X = 5 (абстрактно).
И сказать, что вот только нечетные.
А в регистр пишется (в описании на поле регистра) X-1. (Типа записывается значение делителя на 1 меньше - или больше).
В итоге делитель как бы нечетный, но записываешь в поле - уже четный.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Пришелец
сообщение Mar 4 2011, 14:02
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272



Цитата(DpInRock @ Mar 4 2011, 12:54) *
А у LPC такая хитрая фича.
В даташите могу предложить к примеру делитель X = 5 (абстрактно).
И сказать, что вот только нечетные.
А в регистр пишется (в описании на поле регистра) X-1. (Типа записывается значение делителя на 1 меньше - или больше).
В итоге делитель как бы нечетный, но записываешь в поле - уже четный.

да случается у них такая фича.
но здесь другое.
наверное осталось в исходниках от другого какого-то процессора т.к. и с чётными и с нечётными работает.
в общем дело было в делителе частоты ssp - выходила за допустимый максимум для некоторых внешних микросхем (у fram 20 mhz)
Спасибо всем за советы rolleyes.gif

Сообщение отредактировал IgorKossak - Mar 4 2011, 15:43
Go to the top of the page
 
+Quote Post

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

 


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


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