Уважаемые знатоки, поясните мне разряд регистра SCS GPIOM. Как в этом режиме работает МК (LPC2366), чего с PLL происходит и от чего тактируетсся МК, как я понимаю он тактируется от внутреннего RC генератора, так? Чего то не получается мне его запустить на основном генераторе от кварца 12МГц. Конфигурирую вроде верно: частота на выходе PLL 288 Мгц, M=12, N=1, в прогу пишу на единицу меньше, соответственно M=0x0b; N=0x00; соответственно PLLCFG = 0x0000000b; предделители CCLk=4;USBclk=6; в прогу - на единицу меньше, соответвтвенно CCLKCFG = 0x00000003;USBCLKCFG = 0x00000005;
И еще, вопрос к уважаемому Kison-у, вы выложили код, что там за переменные PLL_MValue и PLL_NValue и чем они отличаются от MValue и NValue, извините если глупые вопросы задаю. Вот мой код, глянте, я не могу в нем "подерргать" пином МК, хотя когда включаю GPIOM - все работает:
unsigned int MValue=11, NValue=0, CCLKDivValue=3,USBCLKDivValue=5;
int main()
{
//SCS |= _BV(GPIOM);
if ( PLLSTAT & (1 ‹‹ 25) )
{
PLLCON = 1; /* Enable PLL, disconnected */
PLLFEED = 0xaa;
PLLFEED = 0x55;
}
PLLCON = 0; /* Disable PLL, disconnected */
PLLFEED = 0xaa;
PLLFEED = 0x55;
SCS |= 0x20; /* Enable main OSC */
while( !(SCS & 0x40) ); /* Wait until main OSC is usable */
CLKSRCSEL = 0x1; /* select main OSC, 12MHz, as the PLL clock source */
PLLCFG = MValue | (NValue ‹‹ 16);
PLLFEED = 0xaa;
PLLFEED = 0x55;
PLLCON = 1; /* Enable PLL, disconnected */
PLLFEED = 0xaa;
PLLFEED = 0x55;
CCLKCFG = CCLKDivValue; /* Set clock divider */
//#if USE_USB
USBCLKCFG = USBCLKDivValue; /* usbclk = 288 MHz/6 = 48 MHz */
//#endif
while ( ((PLLSTAT & (1 ‹‹ 26)) == 0) ); /* Check lock bit status */
MValue = PLLSTAT & 0x00007FFF;
NValue = (PLLSTAT & 0x00FF0000) ›› 16;
// while ((MValue != PLL_MValue) && ( NValue != PLL_NValue) );
PLLCON = 3; /* enable and connect */
PLLFEED = 0xaa;
PLLFEED = 0x55;
while ( ((PLLSTAT & (1 ‹‹ 25)) == 0) ); /* Check connect bit status */
// SCS |= _BV(GPIOM);
FIO1DIR = 0x00000002;
for (;
{
FIO1CLR = 0x00000002;
pause(1);
FIO1SET = 0x00000002;
pause(1);
}
}