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

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

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

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

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

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

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

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

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

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

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

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

Ну добавьте к каждому пакету счетчик, уменьшайте его раз в секунду если он не равен 0. При получении очередного пакета ищете в своем буфере пакет с таким же идентификатором. Если найдется - перезаписываете и его счетчику присваиваете 20. Если не найдется такового, то перезаписывайте первый встретившийся со значением счетчика равным 0.
Максимальный расход памяти -(размер пакета +1)*50 байт.
Оверхед 50 байт. ИМХО терпимо.
kison вне форума  
Сказали "Спасибо" kison
Zemlyanov (30.08.2010)
Непрочитано 30.08.2010, 16:28  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 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.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
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.RU
 
Регистрация: 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.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
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, время: 17:08.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot