|
SAM7S проблема с PLL, При выключении PLL проц виснет... |
|
|
|
Jan 13 2010, 04:44
|

Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 24-05-05
Из: Москва
Пользователь №: 5 354

|
 Возникла проблема с зависанием SAM7S256 при выключении PLL , проц виснет глухо - перезагружается по вдт... Думали проблемы с фильтр или кварцем, на плате олимекс их проверили все нормально(и обратно с олимекса ставили на свою проблема осталась)... Софт работает без сбое на олимексовой плате... Питание и питание ядра в норме. Че только не думали, уже и мыслей нет... До этого плл работала всегда, вопрос этот не вылезал, но начался бой за потребление и на тебе... Единственное отличие по железу корпус сама маленьких... Плата многослойка - проблема по питание и т.д. и т.п. маловероятна... Еще сложность в том что плата миниатюрная , житага нет грузим через самбу... Возник вопрос не может ли, как с самбой, как то влиеть на старт или останов PLL внешние ножки???? Может кто подскажет, где посмотреть или кто сталкивался с такой проблемой... Заранее буду признателен..
--------------------
BST RGDS, Aquatik...
|
|
|
|
|
 |
Ответов
|
Jan 13 2010, 08:15
|

Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 24-05-05
Из: Москва
Пользователь №: 5 354

|
Цитата(aaarrr @ Jan 13 2010, 09:02)  Это похоже на ситуацию, описанную в еррате для 58818C: Чип ревизии B. Привожу исходный код, написанный в иаре. По включению и выключению ПЛЛ. CODE Включение PLL __disable_interrupt(); AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK; // Wait until the master clock is established while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
AT91C_BASE_PMC->PMC_PLLR = AT91C_CKGR_USBDIV_1 | (16 << 8) | (AT91C_CKGR_MUL & (72 << 16)) | (AT91C_CKGR_DIV & 14); // Wait for PLL stabilization while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK) ); // Wait until the master clock is established for the case we already // turn on the PLL while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; // Wait until the master clock is established while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK; // Wait until the master clock is established while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) ); __enable_interrupt(); Выключение PLL __disable_interrupt(); AT91F_PMC_CfgMCKReg (AT91C_BASE_PMC, AT91C_PMC_CSS_MAIN_CLK); while(!(AT91F_PMC_GetStatus(AT91C_BASE_PMC) & AT91C_PMC_MCKRDY)); AT91F_CKGR_CfgPLLReg(AT91C_BASE_CKGR, 0); __enable_interrupt(); Возможно, где то не корректно написал....  За замечание буду благодарен!!!
--------------------
BST RGDS, Aquatik...
|
|
|
|
|
Jan 13 2010, 18:31
|

Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 24-05-05
Из: Москва
Пользователь №: 5 354

|
Цитата(aaarrr @ Jan 13 2010, 11:30)  По инструкции нельзя менять PRES и CSS в одну итерацию, как это делается здесь: Код AT91F_PMC_CfgMCKReg (AT91C_BASE_PMC, AT91C_PMC_CSS_MAIN_CLK); Согласен... Некорректно запись в регистр была сделана... Исправил.. Стало более устойчиво работать... Но проблема осталась... Причем на нескольких платах работает без зависания, не остальных виснет сразу... Железо, блин.... Хотя на автомате собрано.. куда смотреть хз... Интересно с чем еще может быть связано, именно зависание при выключении плл... Фильтр плл, питание или петля земли где то по питанию, токовая есть... Почему именно выключение, плл.. если б вообще не запускался, а то именно при выключениии...
--------------------
BST RGDS, Aquatik...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|