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

 
 
> Кольцевой буфер не успевает себя сдвигать до прихода нового байта.., Помогите найти решение.
Alt.F4
сообщение Nov 9 2011, 19:43
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Добрый день.
Столкнулся с задачей, которую никак не могу решить.
Имеется кольцевой буфер UART на 150 байт. По приходу байта вызывается прерывание, где происходит его запись и сдвиг всего буфера. Но вот незадача, скорость UART 115200, а частота МК 9216кГц. В результате я имею запас всего 80 тактов, которых естественно не хватает на сдвиг этого буфера.
Что можно придумать? 05.gif
Спасибо.

P.S. на данной скорости UART работает стороннее устройство и ее изменять нельзя. Частота МК почти максимальная, т.к. питание 3В.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Flexz
сообщение Nov 11 2011, 09:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Цитата(demiurg_spb @ Nov 11 2011, 11:29) *
Оценим на пальцах ДОБАВОЧНУЮ латентность, возникающую при использовании фифо.
Максимум один цикл основной программы в случае ТУПОГО суперлупа, а при использовании планировщика или чуть более внятного суперлупа много меньше.
Большая задержка? С Вас примеры где это действительно важно...

что, как других дилетантами обзывать так запросто, а как вас, так и обиделись? sm.gif
Примеры, да пожалуста:
1. Принимаем команды по наложению OSD, шина RS485 абонентов много, при получении команды не позже чем через нцать мкс (точное число ен помню больше 100 но меньше 500) следует отправить подтверждение приема. Других задач не выполняем. Формирование картинки работает не быстро - суперлуп длинный. Ну и? ради великой самоцели "малосидения в прерывании" делать еще и планировщик с тиком 100мкс?
2. Резервное устройство на батарейном питании, по команде дергаем клапан. Тут ключевой момент даже не время реакции, а потребление, проц работает ТОЛЬКО в прерывании, остальное время дрыхнет, вынос обработки в суперлуп увеличит потребление на величину отличную от нуля.
Реальные примеры из практики, а не тупые суперлупы в вакууме.

PS продолжим холивар или дадим ТСу решать свою задачу?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 11 2011, 10:12
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Flexz @ Nov 11 2011, 12:47) *
что, как других дилетантами обзывать так запросто, а как вас, так и обиделись? sm.gif
Вовсе нет. Вас лично я и не пытался задеть.
Цитата
PS продолжим холивар или дадим ТСу решать свою задачу?
Можем продолжить.
1. У ТС протокол без жёских временных ограничений (и таких протоколов несоизмеримо больше).
2. Кто мешает поставить команду sleep в тело суперлупа и просыпаться по тем же прерываниям уарта?

Цитата(Nixon @ Nov 11 2011, 13:07) *
Проще закруглять. Одной командой &.
Или % что современные компиляторы хорошо оптимизируют.
Код
#define FIFO_SIZE 32
i = (i+1) % FIFO_SIZE; // никремент индекса fifo
что будет эквивалентно
Код
i = (i+1) & (FIFO_SIZE-1); // никремент индекса fifo
в случае когда FIFO_SIZE кратно степени 2.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alt.F4   Кольцевой буфер не успевает себя сдвигать до прихода нового байта..   Nov 9 2011, 19:43
- - ILYAUL   Проц -то какой? И зачем сдвигать весь буффер?   Nov 9 2011, 19:49
- - GinRider   Зачем сдвигать буфер? Не проще ли писать по следую...   Nov 9 2011, 19:49
- - DpInRock   А зачем его сдвигать? Есть такое понятие - голова ...   Nov 9 2011, 19:51
- - rx3apf   Цитата(Alt.F4 @ Nov 9 2011, 23:43) Имеетс...   Nov 9 2011, 19:52
- - ILYAUL   Много не понятного , сразу все 150 принимаются и п...   Nov 9 2011, 20:00
- - silverio   Здесь доходчиво написано: http://chipenable.ru/in...   Nov 9 2011, 21:01
- - Alt.F4   Дело в том, что мне надо вылавливать из этих 150ба...   Nov 10 2011, 07:07
|- - Сергей Борщ   QUOTE (Alt.F4 @ Nov 10 2011, 10:07) Таким...   Nov 10 2011, 07:30
|- - xemul   Цитата(Alt.F4 @ Nov 10 2011, 11:07) Дело ...   Nov 10 2011, 08:33
|- - ILYAUL   Цитата(Alt.F4 @ Nov 10 2011, 11:07) Дело ...   Nov 10 2011, 09:46
- - esaulenka   Цитата(Alt.F4 @ Nov 9 2011, 23:43) Но вот...   Nov 10 2011, 09:04
|- - demiurg_spb   Размер кольцевого буфера лучше иметь кратным степе...   Nov 10 2011, 09:40
|- - Demeny   Цитата(demiurg_spb @ Nov 10 2011, 13:40) ...   Nov 11 2011, 10:03
- - Alt.F4   Данные в этих 150байтах лежат не в строгом порядке...   Nov 10 2011, 14:46
|- - demiurg_spb   У вас идеология неверная. Уарт заполняет фифо и то...   Nov 11 2011, 05:05
|- - barabek   Цитата(demiurg_spb @ Nov 11 2011, 15:05) ...   Nov 11 2011, 05:53
|- - demiurg_spb   Цитата(barabek @ Nov 11 2011, 08:53) А ес...   Nov 11 2011, 06:18
- - Flexz   При желании разбирать входные данные можно вообще ...   Nov 11 2011, 06:25
|- - demiurg_spb   Цитата(Flexz @ Nov 11 2011, 09:25) При же...   Nov 11 2011, 06:35
- - Flexz   Все относительно и ситуационно. Дилетантский подхо...   Nov 11 2011, 06:52
|- - ILYAUL   Цитата(Flexz @ Nov 11 2011, 10:52) Все от...   Nov 11 2011, 08:11
|- - demiurg_spb   Цитата(Flexz @ Nov 11 2011, 09:52) Часто ...   Nov 11 2011, 08:29
- - DpInRock   Для простых программ (относительно простых), с кра...   Nov 11 2011, 07:47
|- - _Pasha   Цитата(DpInRock @ Nov 11 2011, 10:47) Но ...   Nov 11 2011, 09:24
- - Genadi Zawidowski   Автору уже советовали конечный автомат - так как о...   Nov 11 2011, 09:19
|- - ILYAUL   Цитата(Flexz @ Nov 11 2011, 13:47) что, к...   Nov 11 2011, 10:18
- - Nixon   Проще закруглять. Одной командой &.   Nov 11 2011, 10:07
- - Alt.F4   Обрабатываю NMEA. Сделал следующим образом: В памя...   Nov 11 2011, 10:15
|- - demiurg_spb   Цитата(Alt.F4 @ Nov 11 2011, 13:15) В ито...   Nov 11 2011, 10:30
|- - xemul   Цитата(Alt.F4 @ Nov 11 2011, 14:15) Обраб...   Nov 11 2011, 10:59
|- - Сергей Борщ   QUOTE (Alt.F4 @ Nov 11 2011, 13:15) В пам...   Nov 11 2011, 11:41
|- - _Pasha   Цитата(Alt.F4 @ Nov 11 2011, 13:15) Обраб...   Nov 11 2011, 13:38
|- - kolobok0   Цитата(Alt.F4 @ Nov 11 2011, 14:15) ...В ...   Nov 11 2011, 19:15
- - Flexz   Как хотите) 1. У ТС проблемы с временем выполнения...   Nov 11 2011, 10:25
- - Flexz   Цитата(ILYAUL @ Nov 11 2011, 13:18) 1. Та...   Nov 11 2011, 10:30
|- - demiurg_spb   Пис, братья!:)   Nov 11 2011, 10:36
|- - ILYAUL   Цитата(Flexz @ Nov 11 2011, 14:30) зачем ...   Nov 11 2011, 10:43
|- - demiurg_spb   Цитата(ILYAUL @ Nov 11 2011, 13:43) Я об ...   Nov 11 2011, 11:52
|- - ILYAUL   Цитата(demiurg_spb @ Nov 11 2011, 15:51) ...   Nov 11 2011, 11:56
- - Alt.F4   ЦитатаПозволю себе усомниться в последнем утвержде...   Nov 11 2011, 10:40
|- - demiurg_spb   Цитата(Alt.F4 @ Nov 11 2011, 13:40) Специ...   Nov 11 2011, 11:45
|- - ILYAUL   Цитата(demiurg_spb @ Nov 11 2011, 15:45) ...   Nov 11 2011, 11:49
- - Alt.F4   xemul, спасибо, я уже решил задачу. Из всех NMEA о...   Nov 11 2011, 11:08
- - Flexz   ILYAUL Пятница, вечер, кому-то пора отдыхать. И не...   Nov 11 2011, 12:46
|- - ILYAUL   Цитата(Flexz @ Nov 11 2011, 16:46) Ясно н...   Nov 11 2011, 14:50
|- - AHTOXA   Цитата(ILYAUL @ Nov 11 2011, 20:50) Цитат...   Nov 11 2011, 18:19
|- - ILYAUL   Цитата(AHTOXA @ Nov 11 2011, 22:19) Расши...   Nov 11 2011, 18:45
|- - AHTOXA   Цитата(ILYAUL @ Nov 12 2011, 00:45) Попро...   Nov 11 2011, 20:50
|- - ILYAUL   Цитата(AHTOXA @ Nov 12 2011, 00:50) Мда. ...   Nov 11 2011, 21:44
|- - aaarrr   Цитата(ILYAUL @ Nov 12 2011, 01:44) Что и...   Nov 11 2011, 22:01
|- - Allregia   Цитата(ILYAUL @ Nov 11 2011, 23:44) Для т...   Nov 12 2011, 09:46
- - Flexz   Каверкать чужие слова, и выдавать свои мысли за чу...   Nov 11 2011, 16:46
|- - ILYAUL   Цитата(Flexz @ Nov 11 2011, 20:46) Каверк...   Nov 11 2011, 17:01
- - ILYAUL   Allregia , aaarrr Спасибо, за Выше прочтение , но...   Nov 12 2011, 10:24
|- - AHTOXA   Цитата(ILYAUL @ Nov 12 2011, 16:24) Спаси...   Nov 12 2011, 12:59
- - _Ivana   О как интересно! Примерно в то же время, что р...   Jan 10 2012, 17:01
|- - _Артём_   Цитата(_Ivana @ Jan 10 2012, 19:01) добил...   Jan 12 2012, 12:24
- - _Ivana   ЦитатаЧто за прерывания без флагов, просветите. Бы...   Jan 12 2012, 20:00
- - _Артём_   Цитата(_Ivana @ Jan 12 2012, 22:00) Был б...   Jan 12 2012, 22:10


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

 


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


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