[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
У меня сложилось впечатлениеЮ что 5402 не всегда верно устанавливает коэффициент умножения PLL, особенно при больших коэффициентах умножения. Во всяком случае, раньше система тактировалась от внешнего 7,3728 MHz, с умножением на 13, сейчас перешли на 32,768 с умножением на 3 и стало гораздо лучше. Возможно сей эффект связан с недостаточно хорошим качеством платы (двухслойка).
А перед сменой частоты внешнего генератора, я бы посоветовал все-же выключать PLL. И даже при этом я не уверен, что переход всегда будет осуществляться без сбоев, даже интересно.
На всякий случай: фрагмент кода включения PLL после старта:
#define SetMMR(addr, val) (* (int *) addr) = (val)
#define GetMMR(addr) (* (int *) addr)
do {
do {
SetMMR(CLKMD, 0x0000);
for(i=0; i<50; i++);/*Pause*/
} while(CHECKBIT(CLKMD, 0));
SetMMR(CLKMD, 0x2007); /* F= 98,304 MHz, PLL=F(32.768)*3 */
for (i=0; i<50; i++);/*Pause*/
} while( GetMMR(CLKMD) != 0x2007 );
E-mail: info@telesys.ru