www.open-tager.ru http://www.open-tager.ru/forum/ |
|
Прошивка. Реализация протокола Miles Tag II http://www.open-tager.ru/forum/viewtopic.php?f=5&t=293 |
Страница 2 из 8 |
Автор: | jong73 [ 22 сен 2011, 11:39 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
Посмотри выше я и код накрапал формирования данных для передачи. Ты Просто как то изначально усложнил структуру данных. Глянь что не ясно я в поясню |
Автор: | tommy [ 22 сен 2011, 11:52 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
Pingvin писал(а): А как же Вы протестировали код? скомпилировал, залил в мк, подключил два канала анализатора на ноги а5 и а7, в saleae утилитке поставил условие включения записи на высокое значение на а5, вот оно так и нарисовалось.
И как вы "рисуете" logicdata файлики? |
Автор: | jong73 [ 22 сен 2011, 11:55 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
а че за утилита такая и к чему она подвязывается? или это ISIS? |
Автор: | tommy [ 22 сен 2011, 12:03 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
а я уже давал ссылку на неё - для просмотра данных работает и без железки-анализатора. tommy писал(а): работает. файл logicdata с анализатора (http://www.saleae.com/downloads/ ) выложил на http://thesimplestone.net/ltag_pingv.logicdata у меня не оригинальный анализатор, а китайский 30$ клон (который ещё умеет переключаться в режим USBee AX-Pro без режима осцилографа). удобная штукенция + софт простой, понятный и быстрый.
|
Автор: | jong73 [ 22 сен 2011, 12:27 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
Как варик можно в протеусе погонять А железко на DX покупал вот бы ссылу или хоть примерные координаты где ты выкладывал ссылки, а то у меня цифровик то есть но в качестве запоминающего он работает как то стремно. Тут как бы анализатор рулит. |
Автор: | jong73 [ 22 сен 2011, 12:30 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
to Pingvin Посмотрел добавления? Согласен что так гораздо проще чем страница переключателей и побитная подготовка данных? |
Автор: | Pingvin [ 22 сен 2011, 12:45 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
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:48 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
jong73 писал(а): to Pingvin Посмотрел добавления? Согласен что так гораздо проще чем страница переключателей и побитная подготовка данных? 1. Посмотрел 2. Не согласен. (хотя с индексами и массивами можно попробовать, в этом что то есть). Сложнее будет код в прерывании, нужно будет сдвигать биты, потом брать следующий байт и по новой. А если длинна структуры не постоянна (например пакет с командой - длиннее)? Как определить конец структуры? Подготовка пакета может и будет проще, но передача усложнится! И менее наглядно в коде (читабельность хуже). Я Вас не "слабо" не развожу (Боже упаси), но ... Может "сбацаете" - посмотрим, сравним ... P.S. И смотреть надо не сколько строчек кода (целая страница) в исходниках, а сколько байт это займет в памяти программ, а тут корреляция весьма сложная. |
Автор: | jong73 [ 22 сен 2011, 13:06 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
Pingvin писал(а): Теперь понял! Вы предлагаете работать на уровне бит. Я и такой вариант рассматривал, но пока не стал реализовывать, так как в прерывании придется крутить-вертеть битами, а это дополнительное процессорное время, что для прерывания не есть хорошо. Но я и это вариант не исключаю ни коем образом. Сперва именно так и хотел сделать. Поживем - увидим. Пока делаю как проще (лично для меня). Что касается хранения установок eeprom - разумеется! Так и будет, дайте срок. И меняться значения будут по команде через COM-порт и/или посредством кнопок управления. Пока нужно сделать основные вещи - обеспечит транспортный уровень (прием/передача), потом и до остального доберёмся. Не бит а байт и ничего крутить не надо. Передаем в прерывание сначала байт с 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( // ожидание передачи бита ) } } |
Автор: | tommy [ 22 сен 2011, 13:10 ] |
Заголовок сообщения: | Re: Прошивка. Реализация протокола Miles Tag II |
jong73 писал(а): Как варик можно в протеусе погонять чёт я туплю и слабо въехал, что тут написано. но, да - как вариант, можно и в протеусе прогнать. анализатор брал здесь - http://www.aliexpress.com/product-gs/40 ... alers.html
А железко на DX покупал вот бы ссылу или хоть примерные координаты где ты выкладывал ссылки, а то у меня цифровик то есть но в качестве запоминающего он работает как то стремно. Тут как бы анализатор рулит. |
Страница 2 из 8 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |