www.open-tager.ru

открытый лазертаг форум
Текущее время: 29 апр 2024, 09:37

Часовой пояс: UTC + 3 часа [ Летнее время ]


Реклама

Правила форума


В разделе запрещены - обсуждение оборудования не поддерживающего открытых протоколов, реклама и ссылки на готовые продукты лазертага, обсуждение политики производителей и самих производителей. Виден всем.



Начать новую тему Ответить на тему  [ Сообщений: 158 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12, 13, 14 ... 16  След.
Автор Сообщение
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 07 янв 2013, 17:55 
Не в сети
Новосел
Аватар пользователя

Зарегистрирован: 07 янв 2013, 17:48
Сообщений: 68
А вот алгоритмы работы действительно бы не помешали. Для универсальности. А там кто какой чип будет брать - его дело.
Для начала нужен общий алгоритм. А потом можно и подъалгоритмы тоже написать (как например для анализа ошибок в пакетах). НО общий точно нужен. Пусть даже текстом, в блок-схему переделаем...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 07 янв 2013, 18:16 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
KEROL писал(а):
А вот алгоритмы работы действительно бы не помешали. Для универсальности. А там кто какой чип будет брать - его дело.
Для начала нужен общий алгоритм. А потом можно и подъалгоритмы тоже написать (как например для анализа ошибок в пакетах). НО общий точно нужен. Пусть даже текстом, в блок-схему переделаем...

У меня алгоритм простой до безобразия.
Прием:
Настраиваем порт INT0 чтобы он вызывал прерывание по спаду.
Как только TSOP ловит несущую, образуется спад и вызывается прерывание.
В прерывании
- перенастраиваем INT0 чтобы следующее прерывание было уже по фронту,
- обнуляем счетчик длительности низкого уровня на входе INT0.
- проверяем счетчик длительности высокого уровня на входе INT0. Если он, с учетом погрешности, соответствует длительности паузы и старт-бит принят - выходим из прерывания. Если не соответствуе - фиксируем ошибку приема пакета.
выходим из прерывания

Когда TSOP перестанет фиксировать несущую ИК, получается фронт, вновь вызывается тот же обработчик.
В прерывании
- перенастраиваем INT0 чтобы следующее прерывание было по спаду,
- обнуляем счетчик длительности высокого уровня на входе INT0.
- проверяем длительность импулься - сравниваем его с эталоном (Старт бит, единичка или ноль переданы) с учетом погрешности, если не соответствует ни одному из этих эталонов - фиксируем ошибку. Если это старт бит - выставляем флаг "старт бит принят", если это единичка или ноль и старт-бит принял, ложим эту единичку или ноль в буфер приема.

Окончание приема фиксируется по тайм-ауту - нет прерываний INT0 определенное время.

Для измерения длительности пакетов используется прерывание таймера с частотой вдвое большей частоты несущей ИК - 72 кГц.

Кратко так, подробней - будет время, опишу.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 08 янв 2013, 14:18 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
LTagKirov писал(а):
Pingvin писал(а):
перенастраиваем INT0 чтобы следующее прерывание было по спаду,
Для измерения длительности пакетов используется прерывание таймера с частотой вдвое большей частоты несущей ИК - 72 кГц.


У вас в программе крутится таймер на 72КГц, все проверки наверное можно сделать вообще без прерываний. Почему было выбранно решение с прерыванием? Какие приемущества получаются и какие недостатки ?

Выбрано были из-за простоты.
Да, как раз хочу заняться оптимизацией, постоянно "долбящее" перывание ни к чему!
Много ресурсов сжирает!
Но и совсем без прерывания сложно - счетчик таймера по кругу считает, как узнать, сколько он уже в действительности насчитал, если прерывания по переполнению не использовать?
Только с железом разберусь маленько, возьмемся за прошивку ...

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 08 янв 2013, 15:06 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 27 ноя 2011, 00:22
Сообщений: 1569
Откуда: Україна
Pingvin писал(а):
LTagKirov писал(а):
Pingvin писал(а):
перенастраиваем INT0 чтобы следующее прерывание было по спаду,
Для измерения длительности пакетов используется прерывание таймера с частотой вдвое большей частоты несущей ИК - 72 кГц.

Но и совсем без прерывания сложно - счетчик таймера по кругу считает, как узнать, сколько он уже в действительности насчитал, если прерывания по переполнению не использовать?

Так не пойдет:
If (Tnow>Tprev) then T=Tnow-Tprev else T=Tnow+255-Tprev

_________________
Нет предела совершенству, но ресурсы заканчиваются быстро.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 08 янв 2013, 15:45 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Pacifist писал(а):
Так не пойдет:
If (Tnow>Tprev) then T=Tnow-Tprev else T=Tnow+255-Tprev


А если на момент сравнения таймер десять раз уже успел переполниться?

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 08 янв 2013, 16:05 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 15 окт 2012, 12:24
Сообщений: 1246
чую алгоритму приема надо посвятить отдельную тему. Уж больно важный это момент в работе контроллера в целом

2 Pingvin
Я бы ловил только спады и сравнивал их не с эталоном, а просто с длительностью нуля или единицы + запас. Фронты по сути нафик не нужны. А если таймер переполнился, то это можно как то же прерывание по таймеру отработать и все дела )

Я тут на досуге разжился программатором и в качестве тренировки пишу обработчик ИК сигнала от пульта, чтобы медиа-центр дистанционно включать и выключать. Скорость моей работы конеш удручает, но учитывая, что я только начал, она просто реактивная помойму. Спаял контроллер, мучаю потихой. Жду VS-ку. Олени бегут через северный полюс

Спасибо за внимание, всегда ваш - капитан улитка :lol:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 08 янв 2013, 22:16 
Не в сети
Местный

Зарегистрирован: 13 июл 2011, 17:05
Сообщений: 475
Откуда: Perm
Pingvin писал(а):
Pacifist писал(а):
Так не пойдет:
If (Tnow>Tprev) then T=Tnow-Tprev else T=Tnow+255-Tprev


А если на момент сравнения таймер десять раз уже успел переполниться?
для этого АВР значение таймера на момент срабатывания прерывания в регистр сохраняет. надо только перетащить вход с int0 на icp.

кстати, зацените:
http://we.easyelectronics.ru/electro-and-pc/svetodiody-knopki-i-bluetooth-hc-05-chast-01.html писал(а):
Функция передает сообщение процессу в случае изменения состояния пина.... В сообщение также передаются данные о изменение порта (state), времени (time) как долго это состояние продолжалось (?), и состояние остальных портов с 16 по 32 (state16to31) если они есть


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 08 янв 2013, 22:23 
Не в сети
Местный

Зарегистрирован: 13 июл 2011, 17:05
Сообщений: 475
Откуда: Perm
tommy писал(а):
кстати, зацените:
http://we.easyelectronics.ru/electro-and-pc/svetodiody-knopki-i-bluetooth-hc-05-chast-01.html писал(а):
Функция передает сообщение процессу в случае изменения состояния пина.... В сообщение также передаются данные о изменение порта (state), времени (time) как долго это состояние продолжалось (?), и состояние остальных портов с 16 по 32 (state16to31) если они есть
сорри, прочитал статью по диагонали и неправильно понял :( думал речь о прерываниях идёт и можно одним блютус модулем обойтись в повязке.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 13 янв 2013, 11:14 
Не в сети
Новосел
Аватар пользователя

Зарегистрирован: 07 янв 2013, 17:48
Сообщений: 68
Вот, как я понимаю алгоритм выстрела. ШИМ реализован программно. Считаю важним разобраться с прерываниями от повязки, чтобы не пропустить попадания.
Изображение


Вложения:
Комментарий к файлу: Схема в ПоверПоинте.
алгоритм1.rar [57.62 KiB]
Скачиваний: 336
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: В погоне за аскетизмом (LTKhv)
СообщениеДобавлено: 13 янв 2013, 12:08 
Не в сети
Новосел
Аватар пользователя

Зарегистрирован: 07 янв 2013, 17:48
Сообщений: 68
И вот еще сразу вопрос: Может стоит передачу от приема разделить на аппаратном уровне - два чипа вместо одного? Чип на передачу вообще поставить слабенький какой-нибудь. Зато "анализ повязки" будет вне "выстрела"....


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 158 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12, 13, 14 ... 16  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23


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

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB