Вы все еще работаете над этим?Утверждение вашей проблемы расплывчато, но у меня есть несколько предложений / наводящих вопросов.1) Возможно, вы захотите, чтобы некоторые документы увидели, что такое регистры. Получите гигантские таблицы данных в формате PDF по адресу http://www.atmel.com/dyn/products/product_docs.asp?category_id=163&family_id=607&subfamily_id=2138&part_id=4117
2) В этом и более раннем посте вы заявляете, что в некоторых случаях вы могли принимать RX.данные.Вам нужно будет найти код инициализации USART HW из этих примеров проектов и включить их в пример проекта freeRTOS.В частности, звонки на
gpio_enable_module() with {AVR32_USART0_RXD_0_0_PIN, AVR32_USART0_RXD_0_0_FUNCTION}
Чтобы подключиться к USART к процессору, и я верю
InitRs232()
. Для того, чтобы сделать это, нужно потратить много кода - есть много зависимостей.
2) Какую функцию вы вызываете для получения данных из USART0?19 кбод - это примерно 2000 байт / с или 1 байт / 0,5 мс, поэтому опроса 50 мс недостаточно.Я бы посоветовал, чтобы ваш опрос RX проводился постоянно (никогда не спал явно), но с более низким приоритетом, чем задача TX.
3) Сконцентрируйтесь на отладке задачи RX при вызове для извлечения данных.Используйте отладчик для просмотра аппаратных регистров для usart.В частности,
USART0 cr регистр AVR32_USART_CR_RXEN_MASK должен быть установлен для включения RX
USART0 csr регистр AVR32_USART_CSR_RXRDY_MASK покажет, есть ли там новые данные. Вы также можете проверить флаг наложения, чтобы увидеть, пропустили ли вы некоторые данные.Когда происходит чтение USART0 rhr, это должен быть отправленный вами байт.
Если вы все еще работаете над этим, я могу рассмотреть это немного подробнее.