www.open-tager.ru http://www.open-tager.ru/forum/ |
|
АРМейский лазертаг http://www.open-tager.ru/forum/viewtopic.php?f=5&t=2171 |
Страница 31 из 34 |
Автор: | LTagKirov [ 27 мар 2014, 17:18 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
Sapienti sat http://chibios.org/dokuwiki/doku.php?id ... _rt_how-to |
Автор: | Pingvin [ 27 мар 2014, 17:51 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
А в чем преимущества Chibios/RT перед FreeRTOS? У меня шаблон то уже готов, собственно - SD card+FAT+FreeRTOS. Wav-чики с карточки воспроизводятся на ура! Как же я хотел реалистичный качественный звук в неограниченном, практически, количестве! Сбылось! Сейчас за генерацию несущей возьмусь (все не получается светодиод запаять, чтобы хоть как то на железе проверить). |
Автор: | LTagKirov [ 27 мар 2014, 18:19 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
Pingvin писал(а): А в чем преимущества Chibios/RT перед FreeRTOS? У меня шаблон то уже готов, собственно - SD card+FAT+FreeRTOS. Там уже готовы к тому что у вас есть: PWM, i2C, USB, NestedIRQ, Таймеры, RTC, UART и ещё куча страшных слов. Всё равно это придётся писать, а жизнь коротка - зачем делать велосипед, когда есть готовый автомобиль, который спонсирует контора ST, для меня лично последний аргумент самый важный А ещё встроенная поддержка в этой ОС графической библиотеки http://ugfx.org/, цветные экранчики сейчас везде. ЗЫ. Для лазертага конечно всё это ненужно: игрушки должны оставатся игрушками |
Автор: | LTagKirov [ 27 мар 2014, 18:29 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
LTagKirov писал(а): Там уже готовы к тому что у вас есть: PWM, Вот пример генерации ШИМ в Чибисе, читабельность отменная. Мне глубоко наплевать на потраченную память, главное читабельный код для человека. Сравните со своим вариантом на CMSIS, или ещё хуже на StdPeriph. Код: static PWMConfig pwmcfg = { 10000, /* 10Khz PWM clock frequency */ 10000, /* PWM period 1 second */ NULL, /* No callback */ /* Only channel 4 enabled */ { {PWM_OUTPUT_DISABLED, NULL}, {PWM_OUTPUT_DISABLED, NULL}, {PWM_OUTPUT_DISABLED, NULL}, {PWM_OUTPUT_ACTIVE_HIGH, NULL}, }, 0 }; int main(void) { halInit(); chSysInit(); /* Enables PWM output (of TIM4, channel 4) on blue LED connected to PD15 */ palSetPadMode(GPIOD, GPIOD_LED6, PAL_MODE_ALTERNATE(2)); pwmStart(&PWMD4, &pwmcfg); pwmEnableChannel(&PWMD4, 3, 5000); while (TRUE) { chThdSleepMilliseconds(5000); } } ЗЫ. Почти ардуина, но многозадачная и собирается под любым разумным компилятором. |
Автор: | Pingvin [ 27 мар 2014, 19:14 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
Здорово, интересно. Но, все же, попробую сначала с тем, что уже есть, а там - посмотрим. |
Автор: | Pingvin [ 01 апр 2014, 05:45 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
Для генерации несущей ИК сигнала планирую использовать timer 4 в режиме ШИМ. Две его канала - для Low_Power_IR и High_Power_IR. Как настроить таймер - вроде разобрался. А как идеологически правильно включать и выключать ШИМ? LTagKirov, как Вы это делали, если не секрет? |
Автор: | LTagKirov [ 01 апр 2014, 11:37 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
Pingvin писал(а): А как идеологически правильно включать и выключать ШИМ? LTagKirov, как Вы это делали, если не секрет? Делал так - заводил таймер с периодом 100мкс (10кгц), в нулевой момент времени включал шим, отсчитывал 600мкс (6 прерываний таймера) и выключал затем отмерял паузу и тд. Частота прерываний 10 кгц, это меньше чем 56кгц, и у процессора меньше накладных расходов на обработку прерываний. Дополнительно это единственное прерывание ещё и принимает сигнал опрашивает клавиатуру, играет звук и тд. Сейчас это бы назвал квант времени в РТОС. Для STM с его ресурсами можно и просто импульсы в каждой пачке посчитать. Тактовой 168МГц на всё хватит. Код: // Обработка прерывания, частота 10кгц
ISR(TIMER0_OVF_vect) { // Timer 0 overflow ISR TCNT0 = TCNT0_VAL; // reload Timer 0 counter // ставим первым минимальный разброс задержки при передаче update_tx(); // передача ИК пули // нет пули одно условие flFire = 0 update_remote(); // update remote, приём ИК кодов // много условий update_sound(); // воспроизведение звука // нет звука одно условие snd_current = 0 tmr_flags_upd(); // update timing flags // ЗДЕСЬ выставляются флаги для медленных задач, // задачи работают в основном теле программы // и не занимают время прерывания // опрос клавиатуры, зарядка АКБ, контроль АКБ, // логика работы игры и тд update_mic(); // микрофон } |
Автор: | Pingvin [ 01 апр 2014, 11:55 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
Меня интересует, как именно "заткнуть" ШИМ - вырубить тактирование или как лучше и правильней? |
Автор: | mail_robot [ 01 апр 2014, 12:28 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
наверное задав нулевую длительность ) |
Автор: | kindats [ 01 апр 2014, 12:39 ] |
Заголовок сообщения: | Re: АРМейский лазертаг |
Pingvin писал(а): Меня интересует, как именно "заткнуть" ШИМ - вырубить тактирование или как лучше и правильней? Не знаю как в АРМ, в ПИКах достигается подачей логического нуля на ногу вывода ШИМ. |
Страница 31 из 34 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |