Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FIFO RS232
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
alexander55
Вопросы касаются использования FIFO RS232 в LPC uC без использования прерывания по UARx.
1. Можно ли использовать FIFO без прерывания по UARTx.
2. Будет ли работать FIFO без защелки на прерывание.
3. Возможные подводные камни.
PS. Есть еще вопросы, но о них после ответов на эти три.
GetSmart
Думаю без проблем. Одно другому не мешает.
zltigo
Цитата(alexander55 @ Nov 1 2007, 12:09) *
Вопросы

Да. Да. Никаих недокументированных нет, ибо это 550 классическое совместимое решение.
alexander55
Цитата(zltigo @ Nov 1 2007, 12:48) *
Да. Да. Никаих недокументированных нет, ибо это 550 классическое совместимое решение.

Очень хорошо. smile.gif
Как я понимаю.
Используя регистр UxFCR (регистр управления буфером FIFO):
- разрешаю его использование;
- не устанавливаю или устанавливаю триггер-защелку, скажем, на 14 байт.
Прием. С некоторой периодичностью (с такой, чтобы он не переполнился по определению) снимаю с него всю принятую информацию .
Передача. Пишу в FIFO столько, сколько он может вместить с последующими добавлениями по мере освобождения буфера.
Правильно или что-то не так ?
Сергей Борщ
Цитата(alexander55 @ Nov 1 2007, 12:58) *
с последующими добавлениями по мере освобождения буфера.
Правильно или что-то не так ?
Все правильно кроме "по мере освобождения буфера". Нету там флага "есть место в FIFO" или "FIFO полон". Есть флаг "FIFO пуст". Т.е. либо ждать пока опустошится и заталкивать туда порцию до 16 байт, или заводить счетчик засунутых байт и сбрасывать его по флагу "FIFO пуст", а пока не досчитал до 16 засовывать данные по мере поступления.
alexander55
Цитата(Сергей Борщ @ Nov 1 2007, 14:14) *
Все правильно кроме "по мере освобождения буфера". Нету там флага "есть место в FIFO" или "FIFO полон". Есть флаг "FIFO пуст". Т.е. либо ждать пока опустошится и заталкивать туда порцию до 16 байт, или заводить счетчик засунутых байт и сбрасывать его по флагу "FIFO пуст", а пока не досчитал до 16 засовывать данные по мере поступления.

Это мне как раз понятно.
Сергей, Вы обратили внимание на фразу
"- не устанавливаю или устанавливаю триггер-защелку, скажем, на 14 байт" ?
Интересно, что Вы об этом думаете ?
GetSmart
Цитата(alexander55)
"- не устанавливаю или устанавливаю триггер-защелку, скажем, на 14 байт" ?
Влияет только на прерывания. При их запрете ни на что не влияет.
alexander55
Цитата(GetSmart @ Nov 1 2007, 14:55) *
Влияет только на прерывания. При их запрете ни на что не влияет.

Всем спасибо за ответы. Если все согласны, тему можно закрыть. smile.gif
Alex03
Цитата(alexander55 @ Nov 1 2007, 17:23) *
Всем спасибо за ответы. Если все согласны, тему можно закрыть. smile.gif

Ну и не забывайте про невозможность чтения некоторых регистров в частности FCR.
alexander55
Цитата(Alex03 @ Nov 1 2007, 16:14) *
Ну и не забывайте про невозможность чтения некоторых регистров в частности FCR.

Спасибо, учту. smile.gif
alexander55
Проверил работу FIFO под ModBus. Никаких нюансов и глюков не обнаружено . Все, что написано выше, правда. smile.gif
Vladimir_T
Разрешите продолжить тему, так ка у меня остался вопрос. Если в буфере FIFO имеются принятые или непрочитанные байты, количеством меньше установленного уровня FIFO, тогда прерывания от FIFO можно и дождаться. Подскажите как в таком случае можно поступить, не хотелось бы постоянно опрашивать состояние флага пустого буфера.
alexander55
Цитата(Vladimir_T @ Nov 14 2007, 09:39) *
Разрешите продолжить тему, так ка у меня остался вопрос. Если в буфере FIFO имеются принятые или непрочитанные байты, количеством меньше установленного уровня FIFO, тогда прерывания от FIFO можно и дождаться. Подскажите как в таком случае можно поступить, не хотелось бы постоянно опрашивать состояние флага пустого буфера.

Произойдет прерывание по таймауту на 3,5 или 4,5 символа. Вы должны взять весь FIFO (пусть и не полностью заполненный).
Еще можете по этому факту определять, что пакет закончен.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.