winniethepooh 0 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Здравствуйте. Работаю с FreeRTOS +CLI (для Сortex -M3 под FreeRTOS соответственно) и VT100 терминалом. В случае передачи escape последовательности сursor move (стрелочка вправо ,в лево и т.д.), все приложение виснет. Может кто то знает причину? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 15 октября, 2016 Опубликовано 15 октября, 2016 · Жалоба Здравствуйте. Работаю с FreeRTOS +CLI (для Сortex -M3 под FreeRTOS соответственно) и VT100 терминалом. В случае передачи escape последовательности сursor move (стрелочка вправо ,в лево и т.д.), все приложение виснет. Может кто то знает причину? А на отладчике что видно ? Смотрите размер буферов USART. Если сбой только на "цепочечных" посылках, когда пакет из ESC итд идет без паузы - в отличие от тыкания пальцем по отдельным кодам (тогда между каждым прилетающим в приемник символом идет бОООльшая пауза). Что-то не феншуй с приемом и векторах прерываний. Получается критична скорость обработки пришедшего символа. смотрите настройки соотв-го вектора по прерывания по Rx и его увязку с обработчиком ОС. Сбой только на <0x1B> <...> <...> ? Зашлите из терминальной программы с помощью макроса пакет другого содержания из нескольких байт. Будет ли сбой-завес. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
winniethepooh 0 17 октября, 2016 Опубликовано 17 октября, 2016 · Жалоба А на отладчике что видно ? Смотрите размер буферов USART. Если сбой только на "цепочечных" посылках, когда пакет из ESC итд идет без паузы - в отличие от тыкания пальцем по отдельным кодам (тогда между каждым прилетающим в приемник символом идет бОООльшая пауза). Что-то не феншуй с приемом и векторах прерываний. Получается критична скорость обработки пришедшего символа. смотрите настройки соотв-го вектора по прерывания по Rx и его увязку с обработчиком ОС. Сбой только на <0x1B> <...> <...> ? Зашлите из терминальной программы с помощью макроса пакет другого содержания из нескольких байт. Будет ли сбой-завес. На отладчике ошибка переполнения регистра приема uart, обработчик явно не успевает (если поставить задержку передачи символа в терминалке на 1мс/символ все работает), в случае передачи нескольких символов сразу ситуация повторяется как и для ESC. Наверное причин может быть много, но задача обработчика ввода с консоли самая высокоприоритетная, приоритет обработчика прерываний configMAX_SYSCALL_INTERRUPT_PRIORITY задача обработчика консоли одна и выполняется на высокопроизводительном 32 разрядном cortex m3 что может замедлять обработчик? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 32 17 октября, 2016 Опубликовано 17 октября, 2016 · Жалоба Только работа мозга. Проверьте без OS. Загрузите проект на github - тогда что-то конкретное будет. RTS/CTS XON/XOFF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
winniethepooh 0 17 октября, 2016 Опубликовано 17 октября, 2016 · Жалоба Только работа мозга. Проверьте без OS. Загрузите проект на github - тогда что-то конкретное будет. RTS/CTS XON/XOFF без OS все ОК RTS/CTS не вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 32 17 октября, 2016 Опубликовано 17 октября, 2016 · Жалоба без OS все ОК RTS/CTS не вариант. Загрузите проект на github - тогда что-то конкретное будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
winniethepooh 0 18 октября, 2016 Опубликовано 18 октября, 2016 · Жалоба причина неправильной обработки ESC обнаружилась в неправильной инициализации uart. он был установлен в режим "asynchronous multi-processor" (а нужен был "asynchronus normal serial mode"). при получении трех символов ESC последовательности (непрерывно), происходило считывание дополнительного (9-го) бита. т.е. имело место некорректное чтение символа (обработчик прерывания сбрасывал принятый "мусорный" символ, очищал ошибку переполнения в Serial Status Register и на этом заканчивал свою часть работы) Особенности работы задачи-обработчика принятых символов я пока не понял (вместо переданной ESC последовательности терминалка выводила "мусор", хотя обработчик прерываний данные в задачу-обработчик не отправлял..). Однако понятно, что данная глупая ошибка связана с невнимательностью при инициализации uart. Спасибо k155la3 и x893 за участие. хорошего дня. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться