Подключаю UART на ножки RC0 - Rx, RC1 - Tx. Настраиваю на вход и выход, хоть в даташите сказано, что настройка автоматическая. Делаю ремап, инициализирую на скорость 115200, обрабатываю прерывание(в него заходит проверял), но вот в итоге буфер чтения всегда пустой. Не могу понять куда копать.
Код: Выделить всё
procedure interrupt;
var delim:string[2];
begin
if PIR3.RC2IF=1 then begin //Прерывание от GPS
delim:=chr($0D)+chr($0A);
if UART_Remappable_Data_Ready()<>0 then
begin
RC6_bit :=1;
UART_Remappable_Read_Text(gps_buff1,delim,200);
end;
PIR3.RC2IF:=0;
end;
end;Код: Выделить всё
procedure InitKernel();
begin
pmpen_bit := 0; // Отключаем паралельный порт
CM1CON := 0; // Отключаем анаоговые компараторы
CM2CON := 0;
//Настройка портов Аналог/Цифра Все порты цифра
ANCON0 := %11111111;
ANCON1 := %11111111;
//Инициализация портов ввода вывода 1 - вход 0 - выход
LATA:=0;
TRISA:=%00101100;
PORTA:=0;
LATB :=0;
TRISB := %11100001;
PORTB := %00000000;
LATC := 0;
TRISC := %00100001;
PORTC:= 0;
LATD :=0;
TRISD := 0;
PORTD:=0;
//RE2 изначально равен 1 (дешифратор не активен)
LATE :=0;
TRISE := %00000000;
PORTE:= %00000100;
// Ремапим UART2
Unlock_IOLOCK();
PPS_Mapping(12, _OUTPUT, _TX2_CK2);
PPS_Mapping(11, _INPUT, _RX2_DT2);
Lock_IOLOCK();
//Инициализируем UART2
UART_Remappable_Init(115200);
//U2OD_bit :=1;
delay_ms(100);
// sim68_Sleep(); // Отправляем в сон навигатор
//запуск часов
Clock_write($0C,0);
//Тестируем карту памяти
FS_SDSel();
// инициализируем карточку если ошибка выдаём сообщение и выключаемся
if FS_SDinit()<>0 then begin
repeat until PORTA.B5<>1;
delay_ms(200);
PowerOff;
end;
// включаем подсветку
Filename := 'regul.cfg';
pregLigth := FS_Config_Read(0);
SendToWK2(0x01,pregLigth);
delay_ms(500); //Делаем задержку перед включением подсветки
// Сброс и инициализация LCD дисплея
InitDisplay();
end;

