www.open-tager.ru http://www.open-tager.ru/forum/ |
|
LTAscetik http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1565 |
Страница 315 из 532 |
Автор: | Nestr [ 26 сен 2013, 20:51 ] |
Заголовок сообщения: | Re: LTAscetik |
Урон 1 % фиксирует |
Автор: | Nestr [ 26 сен 2013, 20:53 ] |
Заголовок сообщения: | Re: LTAscetik |
Залью прошивку для 3го релиза та которая на гитхабе лежит. попробую с ней. |
Автор: | ВовВовыч [ 26 сен 2013, 20:53 ] |
Заголовок сообщения: | Re: LTAscetik |
Пока писал,уже почти ответили) Там явно по питанию модуляция идёт какая-то.ТСОПы на ебее видел такие.Поищи.Там и даташиты найдёшь. |
Автор: | Pingvin [ 26 сен 2013, 20:58 ] |
Заголовок сообщения: | Re: LTAscetik |
Вот тут можно добавить банальную проверку количества принятых бит. Код: ISR(TIMER2_COMP_vect){ timer1++; volatile uint8_t prt; prt = TSOP_IN&TSOP_PIN; if (prt==0) //На ножке ИК-приемника низкий уровень сигнала (пойман сигнал несущей) { // PORTA &= ~(1 << 0); //включаем вспомогательный светодиод low_level_counter++;//Увеличиваем счетчик длительности низкоуровнего сигнала на ножке ИК-приемника if (chit_detected_counter < (IR_ZERO*1000)) chit_detected_counter++; if (chit_detected_counter >= (IR_ZERO*1000)) chit_detected=true; } else //На ножке ИК-приемника высокий уровень сигнала (пойман сигнал несущей) { // PORTA |=(1<<0); //выключаем вспомогательный светодиод chit_detected_counter = 0; if (chit_detected) chit_detected=false; high_level_counter++;///Увеличиваем счетчик длительности высокоуровнего сигнала на ножке ИК-приемника if((start_bit_received)&&(high_level_counter > IR_ZERO*8)) {//Фиксируем окончание приема по таймауту start_bit_received = false; //отменяем прием rx_event = RX_COMPLETE; //Генерим событие "принят пакет" } В "выстреле" их 14. Вроде в последующих прошивках я такую проверку добавлял. |
Автор: | Pingvin [ 26 сен 2013, 21:02 ] |
Заголовок сообщения: | Re: LTAscetik |
Nestr писал(а): Урон 1 % фиксирует Логично! Старт-бит принят, зафиксирован таймаут (конец приема), а количество принятых бит никто не проверил. А вместо принятых бит - нули (или предыдущее значение, если буфер не обнуляется), вот и урон 1% Исправим. |
Автор: | Pingvin [ 26 сен 2013, 21:20 ] |
Заголовок сообщения: | Re: LTAscetik |
В прошивке 3.1 этот баг пофиксен Код: if((start_bit_received)&&(high_level_counter > IR_ZERO*8)/*&&(bit_in_rx_buff>=13)*/) {//Фиксируем окончание приема по таймауту start_bit_received = false; //отменяем прием if (bit_in_rx_buff>=13) rx_event = RX_COMPLETE; //Генерим событие "принят пакет" else rx_event = RX_ERROR; //генерируем событие - "ошибка приёма" receiver_on = false;//выключаем приемник if (ir_transmitter_on==false) TIMSK &=~_BV(OCIE2); //если передача не ведётся - выключаем прерывания } Надо добавить пару сток Код: if (bit_in_rx_buff>=13) rx_event = RX_COMPLETE; //Генерим событие "принят пакет" else rx_event = RX_ERROR; //генерируем событие - "ошибка приёма" То есть для 3 версии должно быть так Код: ISR(TIMER2_COMP_vect){ timer1++; volatile uint8_t prt; prt = TSOP_IN&TSOP_PIN; if (prt==0) //На ножке ИК-приемника низкий уровень сигнала (пойман сигнал несущей) { // PORTA &= ~(1 << 0); //включаем вспомогательный светодиод low_level_counter++;//Увеличиваем счетчик длительности низкоуровнего сигнала на ножке ИК-приемника if (chit_detected_counter < (IR_ZERO*1000)) chit_detected_counter++; if (chit_detected_counter >= (IR_ZERO*1000)) chit_detected=true; } else //На ножке ИК-приемника высокий уровень сигнала (пойман сигнал несущей) { // PORTA |=(1<<0); //выключаем вспомогательный светодиод chit_detected_counter = 0; if (chit_detected) chit_detected=false; high_level_counter++;///Увеличиваем счетчик длительности высокоуровнего сигнала на ножке ИК-приемника if((start_bit_received)&&(high_level_counter > IR_ZERO*8)) {//Фиксируем окончание приема по таймауту start_bit_received = false; //отменяем прием if (bit_in_rx_buff>=13) rx_event = RX_COMPLETE; //Генерим событие "принят пакет" else rx_event = RX_ERROR; //генерируем событие - "ошибка приёма" } Попробуйте. Не получится - сам сделаю. И спасибо за помощь в ловле багов! |
Автор: | Nestr [ 26 сен 2013, 21:33 ] |
Заголовок сообщения: | Re: LTAscetik |
Только что проверил. С прошивкой та которая на гитхабе 3,0 Если на тагере 100%, в тагер не разу не стреляли. Засветов нет! Если в тагер стреляешь и наносишь урон 2%. Все засветы наносят урон 2%. Если выставляешь урон 10%. Стреляешь с тагера наносишь урон 10%. Все остальные засветы наносят тоже 10%. Видать значени с буфера попадает |
Автор: | Pingvin [ 26 сен 2013, 21:37 ] |
Заголовок сообщения: | Re: LTAscetik |
Nestr писал(а): Только что проверил. С прошивкой та которая на гитхабе 3,0 Если на тагере 100%, в тагер не разу не стреляли. Засветов нет! Если в тагер стреляешь и наносишь урон 2%. Все засветы наносят урон 2%. Если выставляешь урон 10%. Стреляешь с тагера наносишь урон 10%. Все остальные засветы наносят тоже 10%. Видать значени с буфера попадает Все верно! Лекарство в постах, что выше! |
Автор: | Nestr [ 26 сен 2013, 21:57 ] |
Заголовок сообщения: | Re: LTAscetik |
Я не понял что это за строки. Щас перекомпилирую и попробую. Поставил функцию "в помещение" и в квартире войну немного устроил. Рикошеты очень сильные, понимаю что в квартире много лакированых и зеркальных поверхностей, но в помещение играть видать не получится. На улице рикошетов не было тагер работал отлично. Дело еще наверно в тубусе наверно. пластмассовая линза с фонарика. Тубус сделан из фонарика. |
Автор: | Pingvin [ 26 сен 2013, 22:00 ] |
Заголовок сообщения: | Re: LTAscetik |
Nestr писал(а): Я не понял что это за строки. Щас перекомпилирую и попробую. Поставил функцию "в помещение" и в квартире войну немного устроил. Рикошеты очень сильные, понимаю что в квартире много лакированых и зеркальных поверхностей, но в помещение играть видать не получится. На улице рикошетов не было тагер работал отлично. Дело еще наверно в тубусе наверно. пластмассовая линза с фонарика. Тубус сделан из фонарика. Сейчас так Цитата: if((start_bit_received)&&(high_level_counter > IR_ZERO*8)) {//Фиксируем окончание приема по таймауту start_bit_received = false; //отменяем прием rx_event = RX_COMPLETE; //Генерим событие "принят пакет" } А надо, чтобы было так Цитата: if((start_bit_received)&&(high_level_counter > IR_ZERO*8)) {//Фиксируем окончание приема по таймауту start_bit_received = false; //отменяем прием if (bit_in_rx_buff>=13) rx_event = RX_COMPLETE; //Генерим событие "принят пакет" else rx_event = RX_ERROR; //генерируем событие - "ошибка приёма" } Увеличте сопротивление в коллекторе полевика, что зацеплен на LOW_IR_POWER |
Страница 315 из 532 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |