www.open-tager.ru

открытый лазертаг форум
Текущее время: 25 ноя 2024, 11:15

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


Реклама

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


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



Начать новую тему Ответить на тему  [ Сообщений: 71 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
СообщениеДобавлено: 22 сен 2011, 11:39 
Не в сети
Местный

Зарегистрирован: 09 июн 2011, 11:32
Сообщений: 366
Откуда: Шахты
Посмотри выше я и код накрапал формирования данных для передачи. Ты Просто как то изначально усложнил структуру данных. Глянь что не ясно я в поясню

_________________
Неважно откуда у тебя растут руки если они золотые.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 11:52 
Не в сети
Местный

Зарегистрирован: 13 июл 2011, 17:05
Сообщений: 475
Откуда: Perm
Pingvin писал(а):
А как же Вы протестировали код?
И как вы "рисуете" logicdata файлики?
скомпилировал, залил в мк, подключил два канала анализатора на ноги а5 и а7, в saleae утилитке поставил условие включения записи на высокое значение на а5, вот оно так и нарисовалось.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 11:55 
Не в сети
Местный

Зарегистрирован: 09 июн 2011, 11:32
Сообщений: 366
Откуда: Шахты
а че за утилита такая и к чему она подвязывается? или это ISIS?

_________________
Неважно откуда у тебя растут руки если они золотые.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 12:03 
Не в сети
Местный

Зарегистрирован: 13 июл 2011, 17:05
Сообщений: 475
Откуда: Perm
а я уже давал ссылку на неё - для просмотра данных работает и без железки-анализатора.
tommy писал(а):
работает. файл logicdata с анализатора (http://www.saleae.com/downloads/ ) выложил на http://thesimplestone.net/ltag_pingv.logicdata
у меня не оригинальный анализатор, а китайский 30$ клон (который ещё умеет переключаться в режим USBee AX-Pro без режима осцилографа). удобная штукенция + софт простой, понятный и быстрый.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 12:27 
Не в сети
Местный

Зарегистрирован: 09 июн 2011, 11:32
Сообщений: 366
Откуда: Шахты
Как варик можно в протеусе погонять

А железко на DX покупал вот бы ссылу или хоть примерные координаты где ты выкладывал ссылки, а то у меня цифровик то есть но в качестве запоминающего он работает как то стремно. Тут как бы анализатор рулит.

_________________
Неважно откуда у тебя растут руки если они золотые.


Последний раз редактировалось jong73 22 сен 2011, 12:34, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 12:30 
Не в сети
Местный

Зарегистрирован: 09 июн 2011, 11:32
Сообщений: 366
Откуда: Шахты
to Pingvin

Посмотрел добавления? Согласен что так гораздо проще чем страница переключателей и побитная подготовка данных?

_________________
Неважно откуда у тебя растут руки если они золотые.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 12:45 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
jong73 писал(а):
tommy писал(а):
суровые свитчи, блин. и работа с битами отправки тож бескомпромиссная :)
в milesI передаются сначала старшие. возможно, что и в II тож старшие вперёд.


И бессмысленные. Гораздо проще работать с индексами массивов чем с enum и потом switch

GunDamage[16] = {1,2,4,5,7,10,15,17,20,25,30,35,40,50,75,100} индекс массива определяет уровень ущерба

можно и символьные имена добавить

enum GunDamage { Damage_1, Damage_2, Damage_4, Damage_5,
Damage_7, Damage_10, Damage_15, Damage_17,
Damage_20, Damage_25, Damage_30, Damage_35,
Damage_40, Damage_50, Damage_75, Damage_100 };

и обращаться к массиву не по индексу а по нумерованному символьному имени. Тогда отпадает необходимость в длинных switch


В итоге подготовка даннах к выстрелу будет представлять из себя

unsigned char TeamColor; // Цвет команды
unsigned char id_gamer // Номер игрока в команде
unsigned char SourceDamage] // Номер индекса уровня поражения
unsigned char bufer_ir_tx[2] // Буфер данных излучателя

// Процедура подготовки данных для выстрела
void load_tx_data( void )
{
bufer_ir_tx[0] = id_gamer;
bufer_ir_tx[1] = TeamColor;
bufer_ir_tx[1] = bufer_ir_tx[1] << 4;
bufer_ir_tx[1] += GunDamage[ SourceDamage ];
bufer_ir_tx[1] = bufer_ir_tx[1] << 2;
}


/*
Данные готовы можно отправлять указатель на буфер данных излучателя
и методом сдвига влево передаем сначало 8 бит даныых из масиива по индексу [0] а затем
6 байт из массива по индексу [1]
*/


Можно еще проще. Прямо ничего не формировать а при програмировании ( смене ) i_gamer и Team_Color + GunDamage просто занести в EEprom в виде двух байтов

eeprom unsigned char id_gamer = 01010101; // Игрок с номером 85 ( 0x55 )
eeprom unsigned char Team_Color + GunDamage = 10010100; // Цвет команды 2 ( желтые по твоей нумерации ) и ущерб составит 10% индекс массива [5]

как бы так.


Теперь понял! :) Вы предлагаете работать на уровне бит. Я и такой вариант рассматривал, но пока не стал реализовывать, так как в прерывании придется крутить-вертеть битами, а это дополнительное процессорное время, что для прерывания не есть хорошо.
Но я и это вариант не исключаю ни коем образом. Сперва именно так и хотел сделать. Поживем - увидим. Пока делаю как проще (лично для меня).
Что касается хранения установок eeprom - разумеется! Так и будет, дайте срок.
И меняться значения будут по команде через COM-порт и/или посредством кнопок управления.
Пока нужно сделать основные вещи - обеспечить транспортный уровень (прием/передача), потом и до остального доберёмся.

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


Последний раз редактировалось Pingvin 22 сен 2011, 12:52, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 12:48 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
jong73 писал(а):
to Pingvin

Посмотрел добавления? Согласен что так гораздо проще чем страница переключателей и побитная подготовка данных?

1. Посмотрел
2. Не согласен. :) (хотя с индексами и массивами можно попробовать, в этом что то есть). Сложнее будет код в прерывании, нужно будет сдвигать биты, потом брать следующий байт и по новой. А если длинна структуры не постоянна (например пакет с командой - длиннее)? Как определить конец структуры?
Подготовка пакета может и будет проще, но передача усложнится!

И менее наглядно в коде (читабельность хуже).

Я Вас не "слабо" не развожу (Боже упаси), но ...

Может "сбацаете" - посмотрим, сравним ... ;)

P.S. И смотреть надо не сколько строчек кода (целая страница) в исходниках, а сколько байт это займет в памяти программ, а тут корреляция весьма сложная. :)

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


Последний раз редактировалось Pingvin 22 сен 2011, 14:04, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 13:06 
Не в сети
Местный

Зарегистрирован: 09 июн 2011, 11:32
Сообщений: 366
Откуда: Шахты
Pingvin писал(а):
Теперь понял! :) Вы предлагаете работать на уровне бит. Я и такой вариант рассматривал, но пока не стал реализовывать, так как в прерывании придется крутить-вертеть битами, а это дополнительное процессорное время, что для прерывания не есть хорошо.
Но я и это вариант не исключаю ни коем образом. Сперва именно так и хотел сделать. Поживем - увидим. Пока делаю как проще (лично для меня).
Что касается хранения установок eeprom - разумеется! Так и будет, дайте срок.
И меняться значения будут по команде через COM-порт и/или посредством кнопок управления.
Пока нужно сделать основные вещи - обеспечит транспортный уровень (прием/передача), потом и до остального доберёмся.


Не бит а байт :oops: и ничего крутить не надо. Передаем в прерывание сначала байт с id_gamer ( это данные в буфере передатчика по индексу 0 ) последовательно сдвигая вправа а затем точно так же байт с цветом команды и ущербом. Время нахождение в прерывании равно толко времени инициаллизации передачи одного бита и установки идентификатора окончания передачи. У меня это около 8-10 циклов. Ниже написана процедура отправки бита в прерывание.



for( count_byte = 0; count_byte < length; ++count_byte )
{
for( count_bit = 0; count_bit < 8; ++count_bit )
{
if( bufer_ir_tx[count_byte] & 0x80 )
// передаю 1 ( в прерывании )
else // передаю 0
bufer_ir_tx[count_byte] <<= 1;
++count_bit;
while( // ожидание передачи бита )
}
}

_________________
Неважно откуда у тебя растут руки если они золотые.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 сен 2011, 13:10 
Не в сети
Местный

Зарегистрирован: 13 июл 2011, 17:05
Сообщений: 475
Откуда: Perm
jong73 писал(а):
Как варик можно в протеусе погонять

А железко на DX покупал вот бы ссылу или хоть примерные координаты где ты выкладывал ссылки, а то у меня цифровик то есть но в качестве запоминающего он работает как то стремно. Тут как бы анализатор рулит.
чёт я туплю и слабо въехал, что тут написано. но, да - как вариант, можно и в протеусе прогнать. анализатор брал здесь - http://www.aliexpress.com/product-gs/40 ... alers.html


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 71 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 8  След.

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


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

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


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

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