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

LTAscetik
http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1565
Страница 255 из 532

Автор:  Jumpy [ 10 апр 2013, 12:23 ]
Заголовок сообщения:  Re: LTAscetik

Цитата:
Я уже давно грузы гоняю через транспортные. Куда надежней и быстрее чем Почта и ЕМС.


Спасибо, буду иметь ввиду

Автор:  Pingvin [ 10 апр 2013, 12:26 ]
Заголовок сообщения:  Re: LTAscetik

Jumpy писал(а):
Цитата:
Я уже давно грузы гоняю через транспортные. Куда надежней и быстрее чем Почта и ЕМС.


Спасибо, буду иметь ввиду

Мне с Новосибирска платы отправляют транспортной компанией "Энергия".
Тут от конторы их база в 5 минутах ходьбы, и очереди редкость.

Автор:  Jumpy [ 10 апр 2013, 12:38 ]
Заголовок сообщения:  Re: LTAscetik

У нас я было нашел парочку попробовать, но они находились в таких местах, где я не бываю, а ехать туда тратя 2ч на туда-обратно это слишком.
Заказ курьера возможен, но тогда цена посылки возрастает в более чем 1.5 раза.

Автор:  Pingvin [ 10 апр 2013, 12:50 ]
Заголовок сообщения:  Re: LTAscetik

Jumpy писал(а):
У нас я было нашел парочку попробовать, но они находились в таких местах, где я не бываю, а ехать туда тратя 2ч на туда-обратно это слишком.
Заказ курьера возможен, но тогда цена посылки возрастает в более чем 1.5 раза.

Да отлично все, просто я и сам не знал что EMS это отдельная песня. :?
А знал бы - уже давно бы забрал.

Автор:  Pingvin [ 10 апр 2013, 15:28 ]
Заголовок сообщения:  Re: LTAscetik

Пришло таки извещение! :)

Автор:  furhunter [ 10 апр 2013, 17:01 ]
Заголовок сообщения:  Re: LTAscetik

Балансир
http://www.zajic.cz/omezovac/omezovac.htm

Автор:  mail_robot [ 10 апр 2013, 18:31 ]
Заголовок сообщения:  Re: LTAscetik

схема известная, в том числе и своими недостатками. Рекомендую копнуть в сторону трехфазных зарядных на отдельных микрухах. Они куда интереснее

Автор:  hexFF [ 10 апр 2013, 23:07 ]
Заголовок сообщения:  Re: LTAscetik

Pingvin писал(а):
hexFF писал(а):
не успевает прерывание отработать, тут гадать не надо. компилятор на прерывание минимум 70-80 тактов хоронит, на сохранение и восстановление РОН. на ассемблере- самое оно, тактов 25-30 вместе с уходом на вектор и возвратом.

А помочь сможете?
Я в AVR-овском ассемблере ни бум-бум... :( :?
Как то же ещё значения из переменных в регистры передать надо. :?
Вот, собственно, код прерывания
Код:
/**************************************************************************************
* Обработчик прерываний таймера
***************************************************************************************/

ISR(TIMER2_COMP_vect){
static volatile uint8_t prt;
prt = TSOP_IN&TSOP_PIN;
if (prt==0) //На ножке ИК-приемника низкий уровень сигнала (пойман сигнал несущей)
   {
       low_level_counter++;//Увеличиваем счетчик длительности низкоуровнего сигнала на ножке ИК-приемника
   }
else  //На ножке ИК-приемника высокий уровень сигнала (пойман сигнал несущей)
   {
       high_level_counter++;///Увеличиваем счетчик длительности высокоуровнего сигнала на ножке ИК-приемника
      if((start_bit_received)&&(high_level_counter > IR_ZERO*8))
      {//Фиксируем окончание приема по таймауту
         start_bit_received   = false;    //отменяем прием
         rx_event = RX_COMPLETE;         //Генерим событие "принят пакет"
         receiver_on = false;//выключаем приемник
         if (ir_transmitter_on==false) TIMSK &=~_BV(OCIE2); //если передача не ведётся - выключаем прерывания
      }
      if((high_level_counter > IR_ZERO*8)&&(ir_transmitter_on==false))
      {
         receiver_on = false;//выключаем приемник
         TIMSK &=~_BV(OCIE2);
      }
   
   }
if (ir_transmitter_on==true)
   {//Если передача разрешена

      if (ir_pulse_counter > 0)      //необходимая длительность пачки импульсов
      {                        //ещё не достигнута, "мигаем" дальше
         IR_LED_INVERT;           //необходимая длительность пачки
         ir_pulse_counter--;
      }
      else                     //пачка импульсов была отправлена,
      {
         IR_LED_OFF;         //тушим ИК-диод
         if ( ir_space_counter > 0)   //проверим, выдержан ли промежуток между импульсами
         {                     //нет, промежуток не выдержан
         
               IR_LED_OFF;   //тушим ИК-диод
               ir_space_counter--;   //уменьшаем обратный счетчик паузы на один "тик"      
         }
         else //Пакет импульсов и промежуток между битами переданы
         {    //нужно формировать следующую пачку (передаваемый бит)
            
            
            if (data_packet.data[cursor_position]!=0) //если указатель указывает не на пустую ячейку
            {
               ir_pulse_counter =data_packet.data[cursor_position++] ; //передадим импульс указанной длительностью
               ir_space_counter = IR_SPACE;      //и про паузу не забудем
            }
            else //Все данные переданы (элемент, на который ссылается указатель, равен 0)
            {
               ir_transmitter_on=false; //выключаем передатчик
               FIRE_LED_OFF;
               display_bullets_update_now++;
            // если    
               if (!receiver_on) //если нет приема пакета
               {
                  TIMSK &=~_BV(OCIE2);          // Запрещаем прерывания по захвату/сравнению
                  
               }   
            }   
         }            
      }
   }
else    {//Если передача запрещена

      }


}




по коду едва ли, в Си я не бум-бум совершенно, но алгоритмом помогу. Так понял, что у вас ножка ИК- диода по прерыванию инвертируется. Думал над этим вариантом, выбрал другой подход. По порядку:

у меня процессор ATmega328 (выбрал из-за маленького корпуса и 32 кб флеш- памяти- её больше половины уйдет на бинарники звуков), такт 8 МГц.

алгоритм передачи "пули":
таймер 1 настраивается в режим СТС по значению в OCR1A (подбираем так, чтоб прерывание выскакивало каждые 17,7 мкс - для частоты несущей 56 килогерц), в OCR1B закидываем значение OCR1A деленное на 2. Оба прерывания (по совпадению OCR1A и OCR1B) разрешаем.

теперь самое интересное - обработчики.
по совпадению OCR1B самый простой- только одно действие- выставить неактивный уровень на ножке ИК- светодиода.

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

на ассемблере летает на ура, на Си не знаю, пойдет ли- там компилятор есть...

таймер 2 будет для вывода звука, таймер 0- для приема пуль и как системный таймер.

Автор:  hexFF [ 10 апр 2013, 23:16 ]
Заголовок сообщения:  Re: LTAscetik

Pingvin писал(а):
Завтра обещали посылку с платой от LW курьером доставить.
Постреляем! ;) :)

извиняюсь, а что за плату брали?

Pingvin писал(а):
В принципе, уже можно добавить в настройки выбор частоты несущей ИК-пакета. ;) :)

можно, только есть одно НО- частоту несущей выстрела программно изменить труда не составит, а вот с TSOP- ами повязки как быть? На "родной" частоте они очень хороши, сместить её- чуствительность резко падает.

Экспериментировал с TSOP4836, у них пик на частоте 36 кГц. Сигнал с несущей 56 кГц со 100 метров (ИК- диод + кусок канализационной трубы + длиннофокусная лупа диаметром 40 мм) кое- как принял. Кое- как- это неуверенно, плюс очень плавают (до 40%) тайминги. Протоколы MilesII и Laserwar4 предусматривают период Т сигнала 600 мкс, а на практике с TSOP4836 от 430 до 800 вышло. TSOP4856 - идеально, до муллиметра. Программно это можно победить, но делать ТАКОЕ не очень хочется. Самый очевидный выход- две повязки (просто подключить нужную), либо съемные датчики (как крепить? в бою не отвалятся?).

Автор:  MidnightDreamer [ 11 апр 2013, 00:16 ]
Заголовок сообщения:  Re: LTAscetik

hexFF писал(а):
... Самый очевидный выход- две повязки (просто подключить нужную), либо съемные датчики (как крепить? в бою не отвалятся?).


Однозначно либо две повязки, либо повязку с двумя типами датчиков. А съемные датчики на липучках практикуются как за границей, так в Полигоне 64, так что ничего никуда не отваливается ;) Сам так же свои повязи сделал )

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