Перейти к содержанию
    

Проблема с PLLA в AT91RM9200

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

 

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

 

Разница насколько я понимаю только в процессорах. У меня стоит в корпусе PQFP на родной в BGA, но это не должно влиять. Кварцы такие-же. Уже третий день бьюсь, решил у народа спросить может кто сталкивался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотри п.28 в Errate. Сам сталкивался с этим, проблема была в том, что одни и те же значения битов CSS, PRES в регистре PMC_MCKR нужно записывать разными записями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотри п.28 в Errate. Сам сталкивался с этим, проблема была в том, что одни и те же значения битов CSS, PRES в регистре PMC_MCKR нужно записывать разными записями.

 

Смотрел. Чето не помогло мне это. Да и на другой то плате работает ведь, вот в чем прикол.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лучше 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

 

ЗЫ: На частоты не смотри, там превышение по МСК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Точно работает, завтра буду подробнее разбираться. У меня вообщем-то примерно так же было, только вот я в начале не трогал PMC_MCKR (перед настройкой PLL).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В этом коде заложены два ключевых момента с которыми я возился:

 

1. LOCK-и PLL-ей не вставали, если писать туда значения, которые уже были записаны. А это частый случай при внутрисхемной отладке, когда питание не снимается. Поэтому пишем туда то что не могло раньше быть и потом нужное значение.

 

2. Ваш случай в чистом виде. Errata 26. MDIV, PRES и CSS менять надо отдельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ндя, изврат там изрядный, по сути там необходимо менять не более одного бита за раз и причем этот бит не должен совпадать с текущим содержимыми регистра. Пока настроишь нужную конфигурацию, напрыгаешься как шимпанзе на сковородке...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да ладно, зато какой сатисфэкшин и экспириенс поимеваешь когда всё начинает работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...