не поможете ли разобраться в чем может быть проблема.. LPC2148, Keil
создал протокол общения между МК и ПК - отсылаю с Пк кадры по 9 байт данных...
в итоге приходит только 1-2 кадра, а дальше толи контроллер виснет, толи с настройками UARTa что-то, принимаю по 1 байту через прерывания
Код
Настройки UART
PINSEL0 = 0x05;
U0FDR = 0xCD;
U0LCR = 0x83;
U0DLL = 0x19;
U0LCR = 0x03;
U0IIR = 0xC5;
U0FCR = 0x01;
U0IER = 0x01;
VICVectCntl2 = 0x00000026;
VICVectAddr2 = (unsigned)UART_IRQ; //Configure UART interrupt
VICIntEnable |= 0x00000040;
PINSEL0 = 0x05;
U0FDR = 0xCD;
U0LCR = 0x83;
U0DLL = 0x19;
U0LCR = 0x03;
U0IIR = 0xC5;
U0FCR = 0x01;
U0IER = 0x01;
VICVectCntl2 = 0x00000026;
VICVectAddr2 = (unsigned)UART_IRQ; //Configure UART interrupt
VICIntEnable |= 0x00000040;
Код
Прием данных:
unsigned count = 0;
unsigned count_ff = 0;
void UART_IRQ(void) __irq
{
Read_Data[count] = UARTReadChar();
if(Read_Data[count_ff] == 0xFF)
{
if(count_ff != 2)
count_ff++;
count++;
}
else
{
count_ff = 0;
count = 0;
}
if((count_ff == 2) && (count == 8))
{
count = 0;
count_ff = 0;
function(Read_Data); --- выполняемая функция с данных кадра
Delay(100);
}
VICVectAddr = 0x00;
}
unsigned count = 0;
unsigned count_ff = 0;
void UART_IRQ(void) __irq
{
Read_Data[count] = UARTReadChar();
if(Read_Data[count_ff] == 0xFF)
{
if(count_ff != 2)
count_ff++;
count++;
}
else
{
count_ff = 0;
count = 0;
}
if((count_ff == 2) && (count == 8))
{
count = 0;
count_ff = 0;
function(Read_Data); --- выполняемая функция с данных кадра
Delay(100);
}
VICVectAddr = 0x00;
}