Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Обработка массива данных

Непрочитано 30.08.2010, 15:21  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Обработка массива данных

Еще одна проблемма
В МК поступают пакеты данных размером 20 байт из них 2 байта идентификатор пакета . Мне эти данные необходимо сохранить в массив , затем программа мк по ходу дела находит нужный ей пакет в массиве по его ID и использует его, так вот сложность в том что пакет актуален 20 секунд затем он уже не нужен и на его место можно записывать другой входящий пакет.
За 20 секунд в МК может поступить до 50 пакетов. Так что массив нужно делать больше 1000 байт .

Так вот, как отследить срок действия пакета , как вообще это лучше организовать я не знаю. Жду ваших советов
Реклама:
Zemlyanov вне форума  
Непрочитано 30.08.2010, 15:43  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Обработка массива данных

Программа занимается не только получением пакета а выполняет кучу других функций. Поэтому я хочу узнать как в моем случае организовать работу программы.
Zemlyanov вне форума  
Непрочитано 30.08.2010, 15:52  
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Обработка массива данных

Создать еще один массив в котором хранить ID пакета и время его прихода ну и переодически сравнивать с текущим временем.
_guardianangel вне форума  
Непрочитано 30.08.2010, 15:55  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Обработка массива данных

Ну добавьте к каждому пакету счетчик, уменьшайте его раз в секунду если он не равен 0. При получении очередного пакета ищете в своем буфере пакет с таким же идентификатором. Если найдется - перезаписываете и его счетчику присваиваете 20. Если не найдется такового, то перезаписывайте первый встретившийся со значением счетчика равным 0.
Максимальный расход памяти -(размер пакета +1)*50 байт.
Оверхед 50 байт. ИМХО терпимо.
kison вне форума  
Сказали "Спасибо" kison
Zemlyanov (30.08.2010)
Непрочитано 30.08.2010, 16:28  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Обработка массива данных

Сообщение от kison Посмотреть сообщение
Ну добавьте к каждому пакету счетчик, уменьшайте его раз в секунду если он не равен 0. При получении очередного пакета ищете в своем буфере пакет с таким же идентификатором. Если найдется - перезаписываете и его счетчику присваиваете 20. Если не найдется такового, то перезаписывайте первый встретившийся со значением счетчика равным 0.
Максимальный расход памяти -(размер пакета +1)*50 байт.
Оверхед 50 байт. ИМХО терпимо.
Я приблизительно так и хотел делать, только мудреней. Думаю что предложенный вами вариант самый оптимальный. Буду по таймеру в прерывании проходиться по счетчикам и отнимать. Только нужно будет учесть ситуацию когда пакет пришел а свободного места нет ,может и такая хрень получиться если из за нехватки памяти МК придётся ужать массив.

Последний раз редактировалось Zemlyanov; 30.08.2010 в 16:31.
Zemlyanov вне форума  
Непрочитано 30.08.2010, 16:43  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Обработка массива данных

Сообщение от Zemlyanov Посмотреть сообщение
когда пакет пришел а свободного места нет ,может и такая хрень получиться если из за нехватки памяти МК придётся ужать массив.
Ну тогда ищите такой же в памяти. Не найдется - перезаписывайте тот, у которого счетчик меньше. Если за 20 секунд может всего 50 пакетов придти, то затраты времени невелики.
kison вне форума  
Непрочитано 31.08.2010, 12:05  
alchem
Частый гость
 
Регистрация: 23.07.2008
Сообщений: 16
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
alchem на пути к лучшему
По умолчанию Re: Обработка массива данных

Можно не особо заморачиваясь сделать циклический буфер. Храниться будут по времени поступления. Или надо, чтобы программа не работала со слишком старыми пакетами?
Кстати, можно еще память сберечь считая сколько пакетов пришло в эту секунду, если квант времени именно секунда. 30 байт экономии получится

Последний раз редактировалось alchem; 31.08.2010 в 12:08. Причина: Добавил
alchem вне форума  
Непрочитано 31.08.2010, 12:50  
Zemlyanov
Гражданин KAZUS.RUN
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Re: Обработка массива данных

Сообщение от alchem Посмотреть сообщение
Можно не особо заморачиваясь сделать циклический буфер. Храниться будут по времени поступления. Или надо, чтобы программа не работала со слишком старыми пакетами?
Кстати, можно еще память сберечь считая сколько пакетов пришло в эту секунду, если квант времени именно секунда. 30 байт экономии получится
Программа должна обрабатывать пакет который хранился в памяти МК не более 20 секунд, в дальнейшем информация находящаяся в этом пакете не может использоваться ,потому что может возникнуть конфликт, поэтому необходимо ожидать поступления нового пакета данных с нужным ID. Данные в МК поступают не равномерно, может в секунду прийти 5 пакетов , а может за 5 секунд прийти всего 1.

Последний раз редактировалось Zemlyanov; 31.08.2010 в 12:52.
Zemlyanov вне форума  
Непрочитано 31.08.2010, 13:12  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Обработка массива данных

А что это за данные такие, что за 20 секунд устаревают? Если конечно не коммерческая тайна.
И что делать если пакет с нужным идентификатором в хранилище не найдется? Или найдется, но просроченный?
kison вне форума  
Непрочитано 31.08.2010, 13:15  
i-mir
Временная регистрация
 
Регистрация: 08.07.2010
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 19 раз(а) в 5 сообщении(ях)
i-mir на пути к лучшему
По умолчанию Re: Обработка массива данных

С точки зрения целостности данных этот алгоритм может терять актуальные пакеты. Для обеспечения безопасности, вам желательно прописать алгоритм работы при максимальной информационной нагрузке в течении нескольких периодов.

Кроме этого, неясно количество типов пакетов. В серъезных безопасных системах управления ответственными объектами - проверка на временные характеристики обязательна.
i-mir вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать преобразование данных? Zemlyanov Микроконтроллеры, АЦП, память и т.д 9 30.08.2010 16:00
Передача 8-битных данных через мобильник begun Микроконтроллеры, АЦП, память и т.д 9 12.07.2010 13:36
Контроль целостности передаваемых данных ksd034 Микроконтроллеры, АЦП, память и т.д 4 08.07.2010 21:46
Последовательный вывод данных Mitrar Микроконтроллеры, АЦП, память и т.д 9 14.05.2010 11:57
AVR USART+прерывания=потеря данных umgah Микроконтроллеры, АЦП, память и т.д 54 10.04.2010 16:22


Часовой пояс GMT +4, время: 04:54.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.