|
Как правильно забивать FIFO UART, например в LPC213x |
|
|
|
 |
Ответов
|
Dec 8 2010, 14:34
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 14-08-06
Пользователь №: 19 528

|
Цитата(GetSmart @ Nov 21 2010, 12:46)  Есть только простое забивание всего фифо в прерывании по THRE. У меня щас так и сделано, но могут происходить паузы в потоке символов, хотя и в несколько раз с меньшей вероятностью чем когда совсем без фифо. Но если бы была возможность читать уровень фифо, либо задавать уровень срабатывания THRE, то был бы идеальный 16550 (с буквой B  ). Буквально мелочи не хватает для полного счастья. А что бы дал вам уровень FIFO ? Ваша проблема как я понял в том, что взведенное прерывание по опустошению FIFO передатчика не обрабатывается с должной скоростью. В результате паузы. Это от того, что кто-то запрещает прерывания надолго. Но это проблема проектирования конкретного софта, и периферийный UART не виноват. Мой совет: используйте вложенные прерывания, или измените код так, чтоб никто не работал в режиме запрета прерываний дольше времени передачи одного символа по UART. Или заассайните FIQ для UARTа. Из былого, бились несколько дней с такой же проблемой, Rowley CrossWorks + CTL на LPC2387. Оказалось реализованная в CTL байтовая очередь была "слишком безопасной", и на все время копирования данных запрещала IRQ. Теперь пользуем самописную очередь.
|
|
|
|
|
Dec 8 2010, 14:45
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Perepic @ Dec 8 2010, 19:34)  Мой совет: используйте вложенные прерывания, или измените код так, чтоб никто не работал в режиме запрета прерываний дольше времени передачи одного символа по UART. Или заассайните FIQ для UARTа. Я вас умаляю. Я фанат вложенных прерываний  У меня FIQ блокирует остальные прерывания на 5-6 символов уарта. А на FIQе мне нужен нулевой джиттер (он собсно и сделан) и переносить его на IRQ тем более вложенный я не могу. Уровень фифо мне бы помог так, что в периодическом прерывании от таймера (ну скажем в районе 8 символов уарта) я бы его читал и дозабивал фифо до максимума. То есть даже не в прерывании от уарта. Вобщем-то серьёзной проблемы нет. Всё работает и малые паузы не смертельны. Но лучше было бы без них.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
Сообщений в этой теме
GetSmart Как правильно забивать FIFO UART Nov 20 2010, 10:39 kovigor Цитата(GetSmart @ Nov 20 2010, 14:39) Или... Nov 20 2010, 11:15 singlskv Передача full-duplex или half-duplex ?
чисто UART ... Nov 20 2010, 11:16 GetSmart half-duplex, RS-485.
Цитата(kovigor @ Nov 20... Nov 20 2010, 11:28 singlskv Цитата(GetSmart @ Nov 20 2010, 14:28) hal... Nov 20 2010, 11:36  GetSmart Цитата(singlskv @ Nov 20 2010, 16:36) Тол... Nov 20 2010, 11:45   singlskv Цитата(GetSmart @ Nov 20 2010, 14:45) Но ... Nov 20 2010, 11:58    GetSmart Цитата(singlskv @ Nov 20 2010, 16:58) З.Ы... Nov 20 2010, 12:15     singlskv Цитата(GetSmart @ Nov 20 2010, 15:15) А в... Nov 20 2010, 12:25     swisst Цитата(GetSmart @ Nov 20 2010, 14:15) Я о... Nov 20 2010, 12:34      GetSmart Цитата(swisst @ Nov 20 2010, 17:34) в код... Nov 20 2010, 12:40       swisst Цитата(GetSmart @ Nov 20 2010, 14:40) В о... Nov 20 2010, 12:52       singlskv Цитата(GetSmart @ Nov 20 2010, 15:40) В о... Nov 20 2010, 12:55        GetSmart Цитата(singlskv @ Nov 20 2010, 17:55) Нет... Nov 20 2010, 13:10         singlskv Цитата(GetSmart @ Nov 20 2010, 16:10) Не ... Nov 20 2010, 13:19 swisst Цитата(GetSmart @ Nov 20 2010, 13:28) В т... Nov 20 2010, 12:04 prm Похожая тема
http://electronix.ru/forum/lofiversio... Nov 20 2010, 18:48 singlskv Цитата(prm @ Nov 20 2010, 21:48) Похожая ... Nov 20 2010, 20:25  zltigo QUOTE (singlskv @ Nov 20 2010, 23:25) Сме... Nov 21 2010, 08:23   singlskv Цитата(zltigo @ Nov 21 2010, 11:23) Не на... Nov 21 2010, 10:30    GetSmart Цитата(singlskv @ Nov 21 2010, 15:30) ...... Nov 21 2010, 10:34     singlskv Цитата(GetSmart @ Nov 21 2010, 13:34) Поч... Nov 21 2010, 10:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|