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

 
 
> Проблема с PLLA в AT91RM9200, PLLA не выбирается как входное для MCK
SergeyL
сообщение Jul 14 2005, 10:02
Сообщение #1


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

Группа: Свой
Сообщений: 98
Регистрация: 28-06-04
Пользователь №: 199



Проблема такая. На моей самодельной плате не выбирается сигнал с PLLA как входной для Master clock. Эта же программа на атмеловской плате AT91RM9200-EK работает. Когда настраиваю на работу от PLLA он как будто от Main Clock. А вот на PLLB переключается.

Причем я на PCK1 выводил все сигналы и Main clock и PLLA и PLLB все нормально.

Разница насколько я понимаю только в процессорах. У меня стоит в корпусе PQFP на родной в BGA, но это не должно влиять. Кварцы такие-же. Уже третий день бьюсь, решил у народа спросить может кто сталкивался.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VladislavS
сообщение Jul 14 2005, 11:02
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Лучше Errata 26 смотри. А то что на другой работает - не показатель. Оно даже на одном чипе может раз от раза то работать, то не работать.

Вот этот код всегда включается:

//Настройка генераторов и PLL.Все настройки для кварца 18.432 МГц
//Включить главный генератор и задать время запуска 6/32768= 0,18 мс
PMC_MOR = 1 | (6<<8); // MOSCEN | OSCOUNT
while(!PMC_SR_bit.MOSCS); //Ждем пока генератор стабилизируется
//Переводим процессор на главный генератор
PMC_MCKR = 1 | (0<<2) | (0<<8); // MCK = MAIN PRES=0 MDIV=0
//Настроим PLLA на 196,6 МГц
//Действуем согласно ERRATA
PMC_PLLAR = (1<<29) | (32<<16) | (2<<14) | (28<<8) | 4; // MULA | OUTA | PLLACOUNT | DIVA
while(!PMC_SR_bit.LOCKA); //Ждем пока PLLA захватится
PMC_PLLAR = (1<<29) | (32<<16) | (2<<14) | (28<<8) | 3; // MULA | OUTA | PLLACOUNT | DIVA
while(!PMC_SR_bit.LOCKA); //Ждем пока PLLA захватится
//Настроим PLLB на 95,8464 МГц
//Действуем согласно ERRATA
PMC_PLLBR = (1<<28) | (24<<16) | (28<<8) | 5;
while(!PMC_SR_bit.LOCKB); //Ждем пока PLLB захватится
PMC_PLLBR = (1<<28) | (25<<16) | (28<<8) | 5; // USB96M | MULB | PLLBCOUNT | DIVB
while(!PMC_SR_bit.LOCKB); //Ждем пока PLLB захватится
#ifdef _TEST_
//Выведем PLLA/64 на 122-ю ногу (PB27)
PIOB_PDR= (1<<27); // PB27 на Funck A
PMC_SCER = (1<<8); PMC_PCK0=2 | (6<<2);
#endif // _TEST_
//Переключим процессор на PLLA и MCK на PLLA/2
//Действуем согласно ERRATA
PMC_MCKR_bit.MDIV=1; //MCK = PCK/2
PMC_MCKR_bit.PRES=0; PMC_MCKR_bit.CSS=2; //PCK = PLLA

ЗЫ: На частоты не смотри, там превышение по МСК.
Go to the top of the page
 
+Quote Post



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

 


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


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