Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
30.08.2010, 15:21
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Обработка массива данных
Еще одна проблемма
В МК поступают пакеты данных размером 20 байт из них 2 байта идентификатор пакета . Мне эти данные необходимо сохранить в массив , затем программа мк по ходу дела находит нужный ей пакет в массиве по его ID и использует его, так вот сложность в том что пакет актуален 20 секунд затем он уже не нужен и на его место можно записывать другой входящий пакет.
За 20 секунд в МК может поступить до 50 пакетов. Так что массив нужно делать больше 1000 байт .
Так вот, как отследить срок действия пакета , как вообще это лучше организовать я не знаю. Жду ваших советов
|
|
|
|
30.08.2010, 15:43
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Обработка массива данных
Программа занимается не только получением пакета а выполняет кучу других функций. Поэтому я хочу узнать как в моем случае организовать работу программы.
|
|
|
|
30.08.2010, 15:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: Обработка массива данных
Создать еще один массив в котором хранить ID пакета и время его прихода ну и переодически сравнивать с текущим временем.
|
|
|
|
30.08.2010, 15:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Обработка массива данных
Ну добавьте к каждому пакету счетчик, уменьшайте его раз в секунду если он не равен 0. При получении очередного пакета ищете в своем буфере пакет с таким же идентификатором. Если найдется - перезаписываете и его счетчику присваиваете 20. Если не найдется такового, то перезаписывайте первый встретившийся со значением счетчика равным 0.
Максимальный расход памяти -(размер пакета +1)*50 байт.
Оверхед 50 байт. ИМХО терпимо.
|
|
|
|
30.08.2010, 16:28
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Обработка массива данных
Сообщение от kison
|
Ну добавьте к каждому пакету счетчик, уменьшайте его раз в секунду если он не равен 0. При получении очередного пакета ищете в своем буфере пакет с таким же идентификатором. Если найдется - перезаписываете и его счетчику присваиваете 20. Если не найдется такового, то перезаписывайте первый встретившийся со значением счетчика равным 0.
Максимальный расход памяти -(размер пакета +1)*50 байт.
Оверхед 50 байт. ИМХО терпимо.
|
Я приблизительно так и хотел делать, только мудреней. Думаю что предложенный вами вариант самый оптимальный. Буду по таймеру в прерывании проходиться по счетчикам и отнимать. Только нужно будет учесть ситуацию когда пакет пришел а свободного места нет ,может и такая хрень получиться если из за нехватки памяти МК придётся ужать массив.
Последний раз редактировалось Zemlyanov; 30.08.2010 в 16:31.
|
|
|
|
30.08.2010, 16:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Обработка массива данных
Сообщение от Zemlyanov
|
когда пакет пришел а свободного места нет ,может и такая хрень получиться если из за нехватки памяти МК придётся ужать массив.
|
Ну тогда ищите такой же в памяти. Не найдется - перезаписывайте тот, у которого счетчик меньше. Если за 20 секунд может всего 50 пакетов придти, то затраты времени невелики.
|
|
|
|
31.08.2010, 12:05
|
|
Частый гость
Регистрация: 23.07.2008
Сообщений: 16
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Обработка массива данных
Можно не особо заморачиваясь сделать циклический буфер. Храниться будут по времени поступления. Или надо, чтобы программа не работала со слишком старыми пакетами?
Кстати, можно еще память сберечь считая сколько пакетов пришло в эту секунду, если квант времени именно секунда. 30 байт экономии получится
Последний раз редактировалось alchem; 31.08.2010 в 12:08.
Причина: Добавил
|
|
|
|
31.08.2010, 12:50
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Re: Обработка массива данных
Сообщение от alchem
|
Можно не особо заморачиваясь сделать циклический буфер. Храниться будут по времени поступления. Или надо, чтобы программа не работала со слишком старыми пакетами?
Кстати, можно еще память сберечь считая сколько пакетов пришло в эту секунду, если квант времени именно секунда. 30 байт экономии получится
|
Программа должна обрабатывать пакет который хранился в памяти МК не более 20 секунд, в дальнейшем информация находящаяся в этом пакете не может использоваться ,потому что может возникнуть конфликт, поэтому необходимо ожидать поступления нового пакета данных с нужным ID. Данные в МК поступают не равномерно, может в секунду прийти 5 пакетов , а может за 5 секунд прийти всего 1.
Последний раз редактировалось Zemlyanov; 31.08.2010 в 12:52.
|
|
|
|
31.08.2010, 13:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Обработка массива данных
А что это за данные такие, что за 20 секунд устаревают? Если конечно не коммерческая тайна.
И что делать если пакет с нужным идентификатором в хранилище не найдется? Или найдется, но просроченный?
|
|
|
|
31.08.2010, 13:15
|
|
Временная регистрация
Регистрация: 08.07.2010
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 19 раз(а) в 5 сообщении(ях)
|
Re: Обработка массива данных
С точки зрения целостности данных этот алгоритм может терять актуальные пакеты. Для обеспечения безопасности, вам желательно прописать алгоритм работы при максимальной информационной нагрузке в течении нескольких периодов.
Кроме этого, неясно количество типов пакетов. В серъезных безопасных системах управления ответственными объектами - проверка на временные характеристики обязательна.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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.
|
|