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

 
 
> Кольцевой буфер не успевает себя сдвигать до прихода нового байта.., Помогите найти решение.
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
Ответов
_Ivana
сообщение Jan 12 2012, 20:00
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Цитата
Что за прерывания без флагов, просветите.

Был бы специалистом - просветил бы. А так только на задворках памяти осталось что-то типа прерываний по высокому/низкому уровню на ногах.

Цитата
Согласен именно ":)"

Спасибо за науку и пример. Буквально несколько часов назад обсуждали с тем же руководителем проекта применение именно такой особенности AVR (и не только их) - возможность сделать enable interrupt внутри прерывания, запретив только этот же источник - для вынесения "параллельных потоков" наружу уже готового линейного кода без переделки последнего, сохранение при этом в стек адресов возвратов из прерываний очень вдохновляет.

Цитата
Да, хорошо быть начальником: он по определению и не дурак и мат часть знает.

Ну, это в данном случае не следствие а наоборот причина, почему он начальник rolleyes.gif

Цитата
Я так понял что у вас а не мегаАВР, а недоАВР какой-то. Но "невытесняющая многозадачность с планировщиком" при этом влазит (какая ОСь кстати?).
ИМХО, отлаживаться правильней/удобней на большем камне, а не на меньшем (я про ОЗУ).

В финальном проекте будет.... не знаю что, но AVR побольше. А отлаживаю я свой блок на AT90USB162 с 512 байт ОЗУ rolleyes.gif На что начальник говорит - если ты уложишься в эти 512 байт, то в готовом проекте я буду уверен, что ОЗУ не переполнится даже если все задачи начнут работать одновременно (условно). А у меня там ещё и конвертор USB<->COM с приемом команд и выдачей отладочной информации в терминал на комп sm.gif
ОС нет, самонаписанный нами же шедуллер, который по кругу запускает задачи, каждая из которых написана НЕ как при ОС - как будто других задач нет и все время её, а в виде "зашел, проверил готовность предыдущего шага - начал следующий - вышел", если я понятно объяснил sm.gif

Цитата
Это смотря как делать.
См. ссылка

Спасибо за полезные прямые ссылки, буду изучать и пытаться понимать.
ЗЫ: если в прерывании по приему очередного символа не делать ничего. кроме того как класть его в кольцевой буфер, то конечно даже в этом случае можно исхитриться и обойтись буфером меньше длины посылки (отрезая уже проверенные символы и считая контрольную сумму), но мне было проще анализировать имея строку целиком. Я подозреваю, что при анализе буфера я много раз пробегаю от начала посылки до конца буфера - и если посылка ещё не вся пришла, то делаю это зря... Но таков сейчас мой алгоритм анализа. Можно конечно придумать флаг - пришел конец посылки и тогда анализировать буфер, а после анализа сбрасывать...

Сообщение отредактировал _Ivana - Jan 12 2012, 20:20
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
- - Flexz   Цитата(demiurg_spb @ Nov 11 2011, 11:29) ...   Nov 11 2011, 09:47
|- - demiurg_spb   Цитата(Flexz @ Nov 11 2011, 12:47) что, к...   Nov 11 2011, 10:12
|- - 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, 22:00) Был б...   Jan 12 2012, 22:10


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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 23:10
Рейтинг@Mail.ru


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