Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-ноя-17 06:27

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 2018-май-28 10:57 
Не в сети

Зарегистрирован: 2018-янв-19 07:44
Сообщения: 42
FIFO нужен в первую очередь для приёма. У меня FIFO разрешен и граница FIFO передатчика установлена на 2 байта.
При этом передатчик UART не начинает выдавать наружу до тех пор, пока я в FIFO передатчика не положу 4 байта. А если мне надо передать только 1/2/3?
Пытаюсь понять почему так сделано, но не могу, фантазии не хватает.
Фразы из спецификации оптимизма не внушают:
Цитата:
Для занесения данных в буфер FIFO передатчика необходимо записать данные в буфер либо перед разрешением работы приемопередатчика и прерываний, либо после разрешения работы приемопередатчика и прерываний.


Последний раз редактировалось Dimonira 2018-май-29 09:10, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-май-28 11:04 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1178
Откуда: Тула
Dimonira писал(а):
передатчик UART не начинает выдавать наружу до тех пор, пока я в FIFO передатчика не положу 4 байта.

Как вы определяете когда передаёт передатчик?

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-май-28 12:59 
Не в сети

Зарегистрирован: 2018-янв-19 07:44
Сообщения: 42
prostoRoman писал(а):
Dimonira писал(а):
передатчик UART не начинает выдавать наружу до тех пор, пока я в FIFO передатчика не положу 4 байта.

Как вы определяете когда передаёт передатчик?

Когда компьютер принимает.

-------------------------------
Правда, подключение не напрямую, а на USB через CP2102. Возможно, что причина и в ней. Возникло ощущение, что где-то сидят ранее не переданные данные, которые потом даже после сброса выдаются перед нормально переданными данными. Причём, даже при отключении демо-платы. Завтра принесу из дома MiniPC с настоящими RS-232 и попробую с ним.
Хотя, если изменить порог, то данных надо ещё больше в фифо засовывать, а в этом CP2102 точно не виновата. Придётся по одному отметать подозрительные вещи.
Пока, если передавать не менее 4 байт, то всё надёжно работает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-май-29 09:07 
Не в сети

Зарегистрирован: 2018-янв-19 07:44
Сообщения: 42
Проверил с помощью MiniPC. Зря только тащил на работу. Всё сразу стало понятно, никаких чудес обнаружено не было.
Я слишком поздно вспомнил, что консольная программа, которую я использовал для обмена, работает не посимвольно, а построчно, т.е. ждёт получения CR/LF и только после этого отображает принятые символы строки в консоли. Видимо, жара сказалась, мозги оплавились.
Так что всё нормально и с контроллером, и конвертером CP2102. Другая консольная программа показала, что как только в FIFO передатчика задвинут байт, так он сразу начинает выдаваться наружу.
Другой момент, который я тут не освещал, оказался в том, что для появления прерываний от передатчика надо сначала превысить порог заполнения его FIFO. А у меня именно обработчик прерывания делает работу по передаче оставшихся данных из буфера. Поэтому при пороге FIFO в 2 байта надо обязательно записать в FIFO как минимум 4 байта: первый сразу уйдёт в передатчик, а оставшиеся три обеспечат превышение порога, а при опустошении FIFO - условие для прерывания. Поэтому, когда мало данных (не более 4 байт или, точнее, не более размера FIFO), передача делается просто записью данных в FIFO передатчика (прерывания не нужны), а когда данных больше, тогда они копируются во временный буфер и далее организуется передача по прерываниям.
Тревога была ложной.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-июн-01 12:22 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1178
Откуда: Тула
Dimonira писал(а):
для появления прерываний от передатчика надо сначала превысить порог заполнения его FIFO.

Вы, может, опять не поверите, но и эта информация есть в СП.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-окт-24 08:06 
Не в сети

Зарегистрирован: 2018-янв-19 07:44
Сообщения: 42
prostoRoman писал(а):
Dimonira писал(а):
для появления прерываний от передатчика надо сначала превысить порог заполнения его FIFO.

Вы, может, опять не поверите, но и эта информация есть в СП.

А что, я оспаривал сие утверждение? И причём тут "опять не поверите"?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB