реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> FIFO RS232, Применительно к LPC.
alexander55
сообщение Nov 1 2007, 09:09
Сообщение #1


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Вопросы касаются использования FIFO RS232 в LPC uC без использования прерывания по UARx.
1. Можно ли использовать FIFO без прерывания по UARTx.
2. Будет ли работать FIFO без защелки на прерывание.
3. Возможные подводные камни.
PS. Есть еще вопросы, но о них после ответов на эти три.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 1 2007, 09:36
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Думаю без проблем. Одно другому не мешает.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 1 2007, 09:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(alexander55 @ Nov 1 2007, 12:09) *
Вопросы

Да. Да. Никаих недокументированных нет, ибо это 550 классическое совместимое решение.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 1 2007, 09:58
Сообщение #4


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



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

Очень хорошо. smile.gif
Как я понимаю.
Используя регистр UxFCR (регистр управления буфером FIFO):
- разрешаю его использование;
- не устанавливаю или устанавливаю триггер-защелку, скажем, на 14 байт.
Прием. С некоторой периодичностью (с такой, чтобы он не переполнился по определению) снимаю с него всю принятую информацию .
Передача. Пишу в FIFO столько, сколько он может вместить с последующими добавлениями по мере освобождения буфера.
Правильно или что-то не так ?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2007, 11:14
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 1 2007, 11:34
Сообщение #6


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Сергей Борщ @ Nov 1 2007, 14:14) *
Все правильно кроме "по мере освобождения буфера". Нету там флага "есть место в FIFO" или "FIFO полон". Есть флаг "FIFO пуст". Т.е. либо ждать пока опустошится и заталкивать туда порцию до 16 байт, или заводить счетчик засунутых байт и сбрасывать его по флагу "FIFO пуст", а пока не досчитал до 16 засовывать данные по мере поступления.

Это мне как раз понятно.
Сергей, Вы обратили внимание на фразу
"- не устанавливаю или устанавливаю триггер-защелку, скажем, на 14 байт" ?
Интересно, что Вы об этом думаете ?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 1 2007, 11:55
Сообщение #7


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(alexander55)
"- не устанавливаю или устанавливаю триггер-защелку, скажем, на 14 байт" ?
Влияет только на прерывания. При их запрете ни на что не влияет.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 1 2007, 12:23
Сообщение #8


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(GetSmart @ Nov 1 2007, 14:55) *
Влияет только на прерывания. При их запрете ни на что не влияет.

Всем спасибо за ответы. Если все согласны, тему можно закрыть. smile.gif
Go to the top of the page
 
+Quote Post
Alex03
сообщение Nov 1 2007, 13:14
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



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

Ну и не забывайте про невозможность чтения некоторых регистров в частности FCR.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 1 2007, 13:44
Сообщение #10


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



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

Спасибо, учту. smile.gif
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 7 2007, 08:52
Сообщение #11


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Проверил работу FIFO под ModBus. Никаких нюансов и глюков не обнаружено . Все, что написано выше, правда. smile.gif
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Nov 14 2007, 06:39
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Разрешите продолжить тему, так ка у меня остался вопрос. Если в буфере FIFO имеются принятые или непрочитанные байты, количеством меньше установленного уровня FIFO, тогда прерывания от FIFO можно и дождаться. Подскажите как в таком случае можно поступить, не хотелось бы постоянно опрашивать состояние флага пустого буфера.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 14 2007, 06:46
Сообщение #13


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



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

Произойдет прерывание по таймауту на 3,5 или 4,5 символа. Вы должны взять весь FIFO (пусть и не полностью заполненный).
Еще можете по этому факту определять, что пакет закончен.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01458 секунд с 7
ELECTRONIX ©2004-2016