www.open-tager.ru
http://www.open-tager.ru/forum/

прошивки на систему LTagKirov
http://www.open-tager.ru/forum/viewtopic.php?f=5&t=417
Страница 10 из 36

Автор:  Nestr [ 10 дек 2012, 23:26 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

Вот что пишет новый проект

Изображение

Автор:  tommy [ 11 дек 2012, 09:11 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

Nestr писал(а):
Установил с офф сайта 4,18 билд 684. все прекрасно дебажится.
но нажимая на кнопку "компилировать" (Alt+F7)
вылазит такое сообщение в поле Билд
если дебажится, то и прошивка значит нормально собирается. плюс build - это клавиша F7 (без альт), вроде. вечером на виртуалку с нуля поставлю всё, попробуем повторить то что происходит.

Автор:  Nestr [ 11 дек 2012, 13:09 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

чтоб собрать проект в файл *hex нужно нажать F7 ?

Автор:  tommy [ 11 дек 2012, 20:01 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

Alt+F7 - компиляция текущего .c файла
F7 - сборка проекта (компиляция, линковка).

открытие проекта в 5-й студии, аналогично 6-й: File->Import->AVR Studio4 Project, проект конвертируется и собирается без ошибок (так же клавишей F7).

Автор:  Nestr [ 11 дек 2012, 20:35 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

tommy писал(а):
Alt+F7 - компиляция текущего .c файла
F7 - сборка проекта (компиляция, линковка).

открытие проекта в 5-й студии, аналогично 6-й: File->Import->AVR Studio4 Project, проект конвертируется и собирается без ошибок (так же клавишей F7).

Во! все заработало.
Как выставить чтоб очередь одиночные переключались кнопкой.
Комментировал
Цитата:
#define SQMODE_SWITCH

очередью все время стреляет

Автор:  tommy [ 11 дек 2012, 20:57 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

надо пин ещё раскомментить на кнопку переключения - PinSQ

Автор:  tommy [ 11 дек 2012, 20:58 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

SQMODE_SWITCH - задаёт как ведёт себя переключатель огня (как кнопка или как переключатель)

Автор:  tommy [ 13 дек 2012, 09:55 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

надо, да, довести прошивку до стабильного состояния, чтоб потом уже не трогать. если кто подправил чего - делитесь. ну или какие предложения по коду есть (может стиль кривой или "архитектура" и править просто не удобно).

Автор:  LTagKirov [ 13 мар 2013, 21:52 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

Есть новая версия, но схема сильно изменилась, практически это новая версия оборудования несовместимая по железу с первым вариантом. Соответственно и прошивка не подойдёт. К сожалению пока не могу выложить код полностью. Есть ли желание у кого-нибудь паять схему для закрытых исходников ?


Архитектура программы довольно простая - приведённый кусок кода полностью описывает поведение прошивки для выстрела.

Код:
#include "fire.h"


void setup_fire(void) {
   
   StateFire = 0;
   ots_cnt = 0;

   make_bullet();   // подготовить пулю по cfg параметрам
}

// Логическое поведения оборудования для выстрелов  100Гц
void LogicFire(void)
{

   switch (StateFire)
   {
      case WantPula:

      // флаг BtFire кнопка Огонь отфильтованная от дребезга
         if (( btFire > 0) || (btMIC > 0 ))  {

            StateFire = NeedPula;   // запрос на выстрел обработан

         
         }
      break;

      case NeedPula:

      // Проверить наличие патронов в обойме и состояние жизни игрока
       if ((0 == ammo_clip_in_game)||(1 == flOutGame))   {

           // Вне игры или нет патронов
         StateFire = OneFire;       // отпусти курок :)
         need_sound(SND_OSECHKA);   

      } else {
         // есть патроны и в игре
         StateFire = OutPula;

         // между этими состояниями можно вставить
         // паузу накачки лазера, определить тип выстрела
         // (дольше держим сильнее выстрел и тд)
         // или ещё какое нибудь расширение  игры
      };
      break;

       case OutPula:

         // вычесть патрон из магазина
         ammo_clip_in_game--;
      
         // запуск пули только здесь
         // и сюда можем попасть только с  0 == flFire

         // биты пули выгружаются
         // из remote_tx_data с мл разрядов
         remote_tx_data = bullet_data;

         // инициировать ИК выстрел
         // передача в прерывании
         remote_tx_state = TX_NEED;
         flFire = 1;          

//         need_sound(SND_FIRE);   // запускаем звук

// Звук и пуля могут мешать друг другу flFire = 1;
// на время выстрела работу со звуком останавливать
// неменять состояние подключения вЫходов таймеров

         StateFire = EndPula;    

      break;


       case EndPula:
      
      // Пуля должна улететь полностью,
      // чтобы начать следующую ИК посылку
      if (1 == flFire) {
         
         StateFire = EndPula;   

      } else  {    

         // Пуля улетела, проверяем нет ли поражений

            need_sound(SND_FIRE);      // запускаем звук пули

         if (1 == flEnemyFire) {      // Да Получена Чужая пуля
         
         //  отработать паузу невозможности стрельбы
            shok_time_cnt = 0;
            StateFire = EnemyFireShok;

         } else {

         //    Пуля улетела, и нет поражений 
         //    отрабатываем темп стрельбы
            temp_fire_cnt = 0;
            StateFire = TempFire;
         }
      }
      break;

   case TempFire:
            
      temp_fire_cnt++;
      if (temp_fire_cnt > temp_fire)
      {   // пауза кончилась, определяем режим стрельбы
         // автомат, полуавтомат, кнопка внешняя

         if ( rifle == RIFLE_AVTO){
            StateFire = SequFire;
         } else {
            
         }
      }
      break;

   case EnemyFireShok:

         shok_time_cnt++;
      if (shok_time_cnt > shok_time) {
                           // пауза кончилась
            flEnemyFire = 0;    // сбросить флаг

         //  Нужно обязательно отпустить курок, после шока
            StateFire = OneFire;       
      }

      break;

   case OneFire:

      if ( btFire > 0 ) {
          StateFire = OneFire;    // Нужно обязательно отпустить курок
      } else {
          StateFire = WantPula;    // Ожидание
          btMIC = 0;    // сбрасываем флаг микрофона
      };
          ots_cnt = 0;          // сбросить счётчик отсечки
      break;

   case SequFire:

      if ( btFire > 0 ) {

         if (ots_cnt > otsechka) {    // отсечка кончилась
                 
               StateFire = OneFire;
         } else  {   
               StateFire = NeedPula;
               ots_cnt ++;
#if DEBUG_TX == 1    
            putchar_(' '); // в начало строки
            putchar_('o');putchar_(ots_cnt);putchar_(' ');
#endif

         };
      } else {
         StateFire = WantPula;       // отпустили курок
         ots_cnt = 0;              // сбросить счётчик отсечки
         btMIC = 0;                // сбрасываем флаг микрофона
      };

      break;

   }; // case end

} // конец автомата выстрела

Автор:  LTagKirov [ 13 мар 2013, 22:21 ]
Заголовок сообщения:  Re: прошивки на систему LTagKirov

kicuene писал(а):
А почему для закрытых исходников?


Писал на заказ, потому есть ограничение на распространение. Кусков кода для иллюстрации "надёргать" могу, но целиком проект открывать пока никак невозможно. Получилось что-то вроде библиотеки (a'la Arduino) заточеной для лазертаг прошивок: например есть поддержка нескольких зон поражения, с любых свободных выводов (без прерываний), звуковая активация(петарды), контроль питания и тд.

Страница 10 из 36 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/