|
Кольцевой буфер не успевает себя сдвигать до прихода нового байта.., Помогите найти решение. |
|
|
|
Nov 9 2011, 19:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Добрый день. Столкнулся с задачей, которую никак не могу решить. Имеется кольцевой буфер UART на 150 байт. По приходу байта вызывается прерывание, где происходит его запись и сдвиг всего буфера. Но вот незадача, скорость UART 115200, а частота МК 9216кГц. В результате я имею запас всего 80 тактов, которых естественно не хватает на сдвиг этого буфера. Что можно придумать? Спасибо. P.S. на данной скорости UART работает стороннее устройство и ее изменять нельзя. Частота МК почти максимальная, т.к. питание 3В.
|
|
|
|
|
 |
Ответов
|
Nov 11 2011, 09:47
|
Местный
  
Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797

|
Цитата(demiurg_spb @ Nov 11 2011, 11:29)  Оценим на пальцах ДОБАВОЧНУЮ латентность, возникающую при использовании фифо. Максимум один цикл основной программы в случае ТУПОГО суперлупа, а при использовании планировщика или чуть более внятного суперлупа много меньше. Большая задержка? С Вас примеры где это действительно важно... что, как других дилетантами обзывать так запросто, а как вас, так и обиделись?  Примеры, да пожалуста: 1. Принимаем команды по наложению OSD, шина RS485 абонентов много, при получении команды не позже чем через нцать мкс (точное число ен помню больше 100 но меньше 500) следует отправить подтверждение приема. Других задач не выполняем. Формирование картинки работает не быстро - суперлуп длинный. Ну и? ради великой самоцели "малосидения в прерывании" делать еще и планировщик с тиком 100мкс? 2. Резервное устройство на батарейном питании, по команде дергаем клапан. Тут ключевой момент даже не время реакции, а потребление, проц работает ТОЛЬКО в прерывании, остальное время дрыхнет, вынос обработки в суперлуп увеличит потребление на величину отличную от нуля. Реальные примеры из практики, а не тупые суперлупы в вакууме. PS продолжим холивар или дадим ТСу решать свою задачу?
|
|
|
|
|
Nov 11 2011, 10:12
|

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

|
Цитата(Flexz @ Nov 11 2011, 12:47)  что, как других дилетантами обзывать так запросто, а как вас, так и обиделись?  Вовсе нет. Вас лично я и не пытался задеть. Цитата 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.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|