Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2129 UART и Rx FIFO
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Andy Mozzhevilov
Пытаюсь включить RxFifo и настроить порог по которому будет генерится прерывания приемника. Регистр FCR сначала, как и положено
устанавливается в 1, а потом уже пишутся остальные биты:

U0FCR = 0x01; // enable fifo
U0FCR = 0x81; // trigger level 2 = 8 chars

Тем не менее, в прерывание приема попадаю каждый раз при приеме очередного символа. Символы передаю специально 1 раз в секунду,
по скопу вижу, что в прерывание падаю примерно в конце каждого стоп-бита. Пробовал любые другие настройки U0FCR, фигня та же.
Что я не так делаю?
ElectronicsLT
Ты палучаеш по таимауту. Посмотри U0IIR 1:3 bit , и будет ясно.
Ты должен слать симвалы с промежутком между ними не менше 3.5
character times , тогда преривание получеш после 8 символоф.

ЭТО ИЗ pdf :

Minimum of one character in the Rx FIFO and no character
input or removed during a time period depending on how many
characters are in FIFO and what the trigger level is set at (3.5
to 4.5 character times).
The exact time will be:
[(word length) X 7 - 2] X 8 + {(trigger level - number of
characters) X 8 + 1] RCLKs
LeshaL
А вот как узнать сколько было принято символов в RX FIFO, после чего произошло прерывание таймаута?
Alexey Bishletov
Цитата(LeshaL @ Sep 20 2006, 15:12) *
А вот как узнать сколько было принято символов в RX FIFO, после чего произошло прерывание таймаута?


IMHO, только вынув их всех из FIFO.
diwil
Были те же грабли - при приеме надо вытаскивать все символы из очереди, пока она не будет пуста.
LeshaL
Цитата(diwil @ Sep 20 2006, 17:41) *
Были те же грабли - при приеме надо вытаскивать все символы из очереди, пока она не будет пуста.


Я так и делаю. Считываю весь FIFO буфер. Поэтому и возник вопрос.
Есть ли все таки техническая возможность узнать сколько принятых символов находится в ФИФО при возникновении прерывания по таймауту приема?

Цитата(Alexey Bishletov @ Sep 20 2006, 17:25) *
Цитата(LeshaL @ Sep 20 2006, 15:12) *

А вот как узнать сколько было принято символов в RX FIFO, после чего произошло прерывание таймаута?


IMHO, только вынув их всех из FIFO.


Дак в этом и вопрос smile.gif
Размер ФИФО - 16 символов.
Допустим, пришло 3 символа.
Возникло прерывание по таймауту приемника.
Как мне считать только эти 3 символа, а не считывать все 16? По какому признаку? Если таковой есть.
aaarrr
Цитата(LeshaL @ Sep 20 2006, 15:59) *
Как мне считать только эти 3 символа, а не считывать все 16? По какому признаку? Если таковой есть.

При чтении смотрите бит RDR в регистре LSR.
LeshaL
Цитата(aaarrr @ Sep 20 2006, 18:06) *
Цитата(LeshaL @ Sep 20 2006, 15:59) *

Как мне считать только эти 3 символа, а не считывать все 16? По какому признаку? Если таковой есть.

При чтении смотрите бит RDR в регистре LSR.


Вот спасибо. И правда, все описано в мануале.
abcdefg
Цитата(ElectronicsLT @ May 18 2005, 09:42) *
The exact time will be:
[(word length) X 7 - 2] X 8 + {(trigger level - number of
characters) X 8 + 1] RCLKs



Кстати, что такое RCLK? Из диаграммы в мануале (213x) сигнал приходит извне smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.