Реклама

Home style lasertag (самодельный лазертаг)

Обсуждение технических нюансов лазертаговского оборудования потребительского и HSL классов

Модераторы: lll, Steavi

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение Botsman » 18 июл 2011, 14:20

KorSar писал(а):Я решил, что если полностью не избавится, то полумера ни к чему.

Да вроде полностью решена проблема срабатывания свет/тень - надеваю на голову, хожу по всему участку под солнцем и тень от дома - ни одного срабатывания. Дети в листве прячутся, тоже мельтешение свет\тень - тоже все ок. Может быть в уменьшенном питании на TSOP дело? Надо проверить.
Думаю, что прошивка, как та, что мне прислал trener, с пофиксеной "1" на звуке + питание TSOP до стабилизатора будет то, что доктор прописал.... Ну и патронов до 4-5 обойм ограничить.
Botsman
Рядовой
Рядовой
 
Сообщений: 32
Зарегистрирован: 27 июн 2011, 08:48

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 18 июл 2011, 14:24

Фмрменный TSOP работает от 2,7в , китайский нонейм нормально начинает работать от 4,3в ( проверенно )

78L05 - drop 1,7в
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение KorSar » 18 июл 2011, 15:01

jong73 писал(а):Кого напрягает 1 на выходе PB.1 строки с 27 по 51 замените на этот код и будет Вам счастье

inline void InitSound(unsigned char snd)
{
//TCCR1A=0x40; не надо
//TCCR1B=0x0C; не надо
//TCCR1B=0x08; не надо

DDRB.1 = 1;
PORTB.1 = 0;

TCNT1H=0x00; TCNT1L=0x00;
ICR1H=0x00; ICR1L=0x00;
OCR1BH=0x00; OCR1BL=0x00;

OCR1AH=0x00; // Тон Звука
OCR1AL = snd; // Достаточно пользоватся только младшим байтом
}

// Делитель N = 14387 / SoundF
#define frq600 23 // Обоймы
#define frq440 32 // Попадания
#define frq1900 12 // Выстрел
#define frq210 68 // Осечка

#define onSound TCCR1B=0x0C; TCCR1B = 0x40; // ВКлючить Звук PB.1; C
#define offSound TCCR1B=0x00; TCCR1B = 0x00; PORTB.1 = 0; // ВЫключить Звук + PB.1 = 0;


строки

#define onIRx TCCR2 =0x19; // ÂÊëþ÷èòü 36KHz íà ÈÊ ñâåòîäèîäå PB.3
#define offIRx TCCR2 =0x00; // ÂÛêëþ÷èòü + PB3 = 0

как я понимаю нужно оставить. Так, что менять нужно строки с 27 по 48.

Я тока тока задал - звук пропал вообще.

единица, как и ранее появляется по какому-то странному закону то через выстрел, то после 3-х, то после звука попадания.
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 18 июл 2011, 15:21

KorSar писал(а):
строки

#define onIRx TCCR2 =0x19; // ÂÊëþ÷èòü 36KHz íà ÈÊ ñâåòîäèîäå PB.3
#define offIRx TCCR2 =0x00; // ÂÛêëþ÷èòü + PB3 = 0

как я понимаю нужно оставить. Так, что менять нужно строки с 27 по 48.

Я тока тока задал - звук пропал вообще.

единица, как и ранее появляется по какому-то странному закону то через выстрел, то после 3-х, то после звука попадания.



Я выложил 25 строк начиная с 27 получается 51 ( по любому )

желательно принудительное выключение и ИК диода а не просто отключение ноги таймера потому как СТС может тормознуться и на 1 и 1 будет висеть на светодиоде что неприменно его запортит.

Ты проверяешь на устройстве или в протеусе? Протеус некорректно обрабатывает режимы таймера ( уже на эти грабли наступил )

Посмотрю еще раз может чего упустил окнечно но все должно работать
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 18 июл 2011, 15:35

inline void InitSound(unsigned char snd)
{
//TCCR1A=0x40; Это не надо потому как для инициаллизации достаточно поределить частоту аргументом snd и все
//TCCR1B=0x0C;
//TCCR1B=0x08;

DDRB.1 = 1; // Вывод 1 порта В - выход
PORTB.1 = 0; // На выходе порта 0 до команды onSound

TCNT1H=0x00; TCNT1L=0x00; // Это тоже можно было не писать в принципе все 0 с инициаллизации
ICR1H=0x00; ICR1L=0x00;
OCR1BH=0x00; OCR1BL=0x00;

OCR1AH=0x00; // Старший байт не трогаем и он нас не трогает
OCR1AL = snd; // В младший байт загружаем аргумент
}

// Äåëèòåëü N = 14387 / SoundF
#define frq600 23 // Препроцессорное определение разных тональностей звука
#define frq440 32
#define frq1900 12
#define frq210 68

#define onSound TCCR1B=0x0C;TCCR1B = 0x40; // А вот тут запускаем таймер в режиме СТС с предделителем на 256 ( должен быть звук )
#define offSound TCCR1B=0x00;TCCR1B = 0x00;PORTB.1 = 0; // Остонавливаем таймер выключаем СТС отключаем ногу PB.1 ( обязательно ) и
//принудительно записываем 0 в PORTB.1

Все должно работать. У меня по этому принципу формируется модуляция на ИК и ШИМ для воспроизведения звуков выстрела.
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение trener » 18 июл 2011, 18:16

У меня тоже звук вообще пропадает если заменяю эти строки.
Но и "1" тоже пропадает ))))

И как я понимаю править нужно не в этом месте а примерно с 294 строки.

Код: выделить все
294 // Звуки генерятся прямо тут, без автомата Sound,
295 // все имеющиеся задания на звуковые сигналы не сбрасываются и проигрываются после
296 //
297 //      0 ----- 16мс-------288мс
298 //  ИК  ххххххххх
299 //  Звк хххххххххххххххххххх
300 //              400        7200 цыклов автомата


"1" появляется только при выстреле или осечке, при остальных звуках на выходе сохраняется то состояние которое зафиксировалось после выстрела, а оно там меняется через раз "1" потом "0" потом опять "1" и так по кругу.
trener
Рядовой
Рядовой
 
Сообщений: 40
Зарегистрирован: 02 апр 2011, 18:53
Откуда: Донецк

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 18 июл 2011, 21:09

скиньте кто нить на jong73@mail.ru текущий исходник а то похоже я даю рекомендации по старому и естественно получается все не в попад.

потому как приведенная Тренером вырезка из исходника в моем отсутсвует. Этот исходник мне прислал Корсар месяца 2 назад.

Кстати Тренер ты из украинского донецка или ростовского?
Последний раз редактировалось jong73 18 июл 2011, 21:18, всего редактировалось 1 раз.
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение trener » 18 июл 2011, 21:15

jong73 писал(а):скиньте кто нить на jong73@mail.ru текущий исходник а то похоже я даю рекомендации по старому и естественно получается все не в попад.



Отправил.
Из Украинского.
Когда-то жил в твоём городе )))
trener
Рядовой
Рядовой
 
Сообщений: 40
Зарегистрирован: 02 апр 2011, 18:53
Откуда: Донецк

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 18 июл 2011, 22:00

Прошивка мало чем отличается от моей и гиморой именно там где я указл. Попробую откоментить попнятней.




// ------------------------------------------------------------------------
// Процедуры управления Таймерами-генераторами ИК и Звука

// Timer/Counter 1 initialization
// Clock source: System Clock Clock value: 31,250 kHz
// Mode: CTC top=OCR1A OC1A output: Toggle
inline void InitSound(unsigned char snd)
{
TCCR1A=0x40; // Подключается вывод OCR1A ( он же PORTB.1 ) к схеме сравнения таймера TCNT1
TCCR1B=0x0C; // Здесь включатся режим сравнени и запускается таймер с предделителем 256 ( 31250кгц )
TCCR1B=0x08; // А вот здесь таймер останавливается оставляя включенным схему сравнения

// Нафига все это непонятно? все эти запуски и остановки.... Нам всего лишь надо закинуть в схему сравнения значение которое будет определять тон
//сигнала

TCNT1H=0x00; TCNT1L=0x00; // Тут все ясно эти регистры нам не нужны мы их и не трогаем.
ICR1H=0x00; ICR1L=0x00;
OCR1BH=0x00; OCR1BL=0x00;

OCR1AH=0x00; // Тон Звука
OCR1AL = snd; // Достаточно пользоватся только младшим байтом. И это собственно все что нам было нужно в этой процедуре
}

// Делитель N = 14387 / SoundF
#define frq600 23 // Обоймы // Тут то-же все понятно. Определяет символьное имя для величин которые
#define frq440 32 // Попадания // в дальнейшем будут загружаться в схему сравнения.
#define frq1900 12 // Выстрел
#define frq210 68 // Осечка

// А вот тут начинается самое интересное
// Для включения звука нам как бы необходимо запустит таймер что собственно и делается присвоение значения 0х0С регистру TCCR1B
#define onSound TCCR1B=0x0C; // ВКлючить Звук PB.1; C
// А для остановки генерации необходимо остановить таймер присвоением значения 0х08 регистру TCCR1B
#define offSound TCCR1B=0x08; // ВЫключить Звук + PB.1 = 0;

// все бы ничего да только схема сравнения остается подключена к выводу OC1A ( PORTB.1 ) и не известно в каком состоянии мы остановили таймер
// и соответственно на ОС1A может присутствовать как 0 так и 1 ( дело случая ). Выходит нам надо отвязать ногу привыключении звука

#define offSound { TCCR1B=0x08; TCCR1A = 0; PORTB.1 = 0 } // (лучше в скобках) Записывая 0 в TCCR1A отвязываем ножку от схемы сравнения
// а записью 0 в PORTB.1 гарантированно устанавливаем уровень 0

// но теперь раз при выключении звука мы отвязали ножку при включении нам необходимо её привезать

#define onSound { TCCR1B = 0x0C; TCCR1A = 0x40 } // Надо не только запустить таймер но и подключить OC1A и делаем это записью 0х40 в TCCR1A


Вот примерно этим и надо руководствоваться потому как в программе четко определены запуск воспроизведения и остановка и больше нигде не ничего другого не используется связаное с включением и выключением звука.

Плохо что уехал. Могли бы на пару замутить, а так приходится все самому в основном. Мало кто верит что это кого то заинтересует да и обленился что от народ в городе. Я сам не Шахтинец я приехал из г Белая-Калитва
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение KorSar » 19 июл 2011, 06:13

jong73 писал(а):
Я выложил 25 строк начиная с 27 получается 51 ( по любому )

желательно принудительное выключение и ИК диода а не просто отключение ноги таймера потому как СТС может тормознуться и на 1 и 1 будет висеть на светодиоде что неприменно его запортит.

Ты проверяешь на устройстве или в протеусе? Протеус некорректно обрабатывает режимы таймера ( уже на эти грабли наступил )

Посмотрю еще раз может чего упустил окнечно но все должно работать


Я зашивал в живое устройство (один автоматик у меня специально для опытов :) )
Пользую программы Кодевисион и VMLAB, К аврстудио еще не привык. Протеус есть но не пользую.

"1" висящую на ИК диоде также как-то наблюдал.
Попробую вечерком поправить еще раз и зашить проверить

Пока не понял со строками ик сигнала нужно что-то делать
#define onIRx TCCR2 =0x19; //
#define offIRx TCCR2 =0x00; //
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение MidnightDreamer » 19 июл 2011, 08:21

trener писал(а):Для любителей ММГ, вот нашел интересный образец не дорогой, пневматической, китайской винтовки.
Вот что о ней пишут :

" BAM XS B3-1 – одна из самых продаваемых китайских пневматических винтовок...



На российских сайтах что-то не такая уж она и дешевая :( Видел аж за 15800!! Когда на украинских она 65 баксов в среднем стоит (чуть меньше 2000р). Мдя... Интересно сколько встанет заказывать ее с Украины?
MidnightDreamer
Майор
Майор
 
Сообщений: 1054
Зарегистрирован: 17 сен 2010, 15:00

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение KorSar » 19 июл 2011, 09:54

to jong73

продолжая свой вопрос по ИК выводу
В программе записано:

#define onIRx TCCR2 =0x19; // ВКлючить 36KHz на ИК светодиоде PB.3
#define offIRx TCCR2 =0x00; // ВЫключить + PB3 = 0
Посмотрел по datasheet Atmega8
No bit 76543210
0х19 это 00011001

биты 2,1 и 0 отвечают за предделитель
биты 6 и 3 отвечают за форму сигнал/подключение к таймеру
биты 5 и 4 отвечают за подключение к OC2 (до конца не разобрался что это)
если 5 - 0, а 4 - 1, то Toggle OC2 on Compare Match (по таблице 43)
если 5 - 1, а 4 -0, то Clear OC2 on Compare Match

а у нас сейчас 5- 0 и 4-0 Normal port operation, OC2 disconnected.
т.е. просто отключается а режимы не переводит.

Я правельно рассуждаю?

Если правельно, то нужно записать так
#define offIRx TCCR2 =0x20 // или bi 00100000
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение Botsman » 19 июл 2011, 10:49

Насколько я понял из вашего разговора "1" может зависнуть не только на звуке но и на ИК диоде?
Часто ли такое бывает? Ведь это или очень быстрый разряд батареи, или убитый ИК диод....
И еще вопрос к спецам: в будущем можно будет к существующей плате прикрутить отдельную плату со звуками, например, из контры? Вопрос к тому, стоит ли в макетах рассчитывать место под еще одну плату? Или там замена всей схемы?
Botsman
Рядовой
Рядовой
 
Сообщений: 32
Зарегистрирован: 27 июн 2011, 08:48

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение KorSar » 19 июл 2011, 11:01

Botsman писал(а):Насколько я понял из вашего разговора "1" может зависнуть не только на звуке но и на ИК диоде?
Часто ли такое бывает? Ведь это или очень быстрый разряд батареи, или убитый ИК диод....

Да, теоретически, возможно, но на практике я такое обнаружил только когда начал играться с длиной посылки в прошивке. А так в существующих прошивках такого не наблюдалось. За время эксплуатации 5-ти схем, не один ик диод не пострадал. :D

Botsman писал(а):И еще вопрос к спецам: в будущем можно будет к существующей плате прикрутить отдельную плату со звуками, например, из контры? Вопрос к тому, стоит ли в макетах рассчитывать место под еще одну плату? Или там замена всей схемы?


Желающие доработать схему есть но вот когда ждать. Также возможен вариант с заменой платы. Если на перспективу то, от места под существующую электронику бери коэффициент 1,5 (думаю так.)

зы ждем отчетик.
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение MidnightDreamer » 19 июл 2011, 11:26

Botsman писал(а):Насколько я понял из вашего разговора "1" может зависнуть не только на звуке но и на ИК диоде?
Часто ли такое бывает? Ведь это или очень быстрый разряд батареи, или убитый ИК диод....
И еще вопрос к спецам: в будущем можно будет к существующей плате прикрутить отдельную плату со звуками, например, из контры? Вопрос к тому, стоит ли в макетах рассчитывать место под еще одну плату? Или там замена всей схемы?


Плата второй версии со встроенной функцией записи звуков уже существует. Размеры KorSar может точно линейкой обмерить и сказать ;)
MidnightDreamer
Майор
Майор
 
Сообщений: 1054
Зарегистрирован: 17 сен 2010, 15:00

Пред.След.

Вернуться в Оборудование потребительского / HSL классов: технические вопросы

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

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

cron