Есть плата от МТ. Все работает, тикает и мигает.
Помогите разобраться с UART.
Подключаю PLL:
//Документ UM_LPC21XX_LPC22XX_2.pdf, стр.80
//Расчет PLL
//Частота кварца - Fosc = 11,059200 МГц
//Fcclk = 60 МГц
//M = Fcclk / Fosc = 5,42 (=5) В соответствии с табл. в рег-р записываем - 4
//Fcclk = 11,059200 * 5 = 55,296 МГц
//Fcco выбираем из интервала: 156МГц - 320МГц
//Fcco = 156 МГц
//P = 156 / (2*55,296)=1,41 (=2) В соответствии с табл. врег-р записываем 1.
//Fcco = 2*2*55.96=223.84МГц
PLLCFG_bit.MSEL=4;
PLLCFG_bit.PSEL=1;
feed();
PLLCON_bit.PLLE=1; // Enable the PLL
feed();
while(!(PLLSTAT & PLOCK)); // Wait for PLL to lock
//Init MAM & Flash memory fetch
MAMCR_bit.MODECTRL=2;
MAMTIM_bit.CYCLES=4;
VPBDIV_bit.VPBDIV=1;
Затем инициализирую UART:
unsigned int divisor = getperipheralClockFreq() / (16 * baud);
U0LCR_bit.DLAB=1; //Enable DLAB
U0LCR_bit.WLS=3; //8 bits
U0LCR_bit.SBS=1; //1 stop bit
U0DLL = (divisor&0xFF);//LSB(divisor);
U0DLM = ((divisor>>8)&0xFF);//MSB(divisor);
U0LCR_bit.DLAB=0; //Disable DLAB
PINSEL0 = PINSEL0 & ~0xF | 0x5;
Проблема в том, что когда работа без PLL - все работает, на компе с UART данные снимаю правильно. Как только пробую работать с PLL - UART выдает ошибки, вернее какую-то лобуду. Понимаю, что где-то в этих настройках (PLL или UART) я баг прописал. Но где не найду. Смотрел примеры и в даташите - так вроде все правильно. Да, то что регистры прописаны, как структуры - взял пример от IAR, там файл макросов есть - iolpc2129.h