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

Вопросы по компилятору avr-gcc (WinAVR).
http://www.open-tager.ru/forum/viewtopic.php?f=5&t=330
Страница 3 из 4

Автор:  Pingvin [ 16 ноя 2011, 09:41 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

timach писал(а):
а чо у тебя после фигурной скобки точка с запятой идут :shock: ну и код у тебя лапша, писал бы в одном стиле :roll: и еще лучше было бы работать с объектами

Так это я уже начал пробовать различные варианты.
И откуда в Си объекты? Это же не объектно-ориентированный язык.
Может, структуры имелись в виду?

Автор:  tommy [ 16 ноя 2011, 10:20 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

ох, ну и суровый код. а есть вероятность, что пока вы этот код дебажите прерывание успевает срабатывать ещё раз и вы уже смотрите на следующий вызов прерывания? а так - хз, синтаксически вполне себе валидный си код, только непонятный :)[offtop] - как-то странно в прерывании пульки считать, да ф-ции всякие вызывать.[/offtop]

Автор:  Pingvin [ 16 ноя 2011, 14:57 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

tommy писал(а):
ох, ну и суровый код. а есть вероятность, что пока вы этот код дебажите прерывание успевает срабатывать ещё раз и вы уже смотрите на следующий вызов прерывания? а так - хз, синтаксически вполне себе валидный си код, только непонятный :)[offtop] - как-то странно в прерывании пульки считать, да ф-ции всякие вызывать.[/offtop]

Функции объявлены как inline (встраиваемые), так что разницы особой нет.
Прерывание формирует звук выстрела.
Два режима огня, соответственно, звук для них нужно воспроизводить по разному.
Если очередь - производим часть звука и смотрим, нажат ли курок.
Если нажат - делаем выстрел (посылаем ИК-пакет, количество пулек уменьшаем) и звук выстрела воспроизводим с начала.
Если курок отпустили - надо звук проиграть полностью до конца.
Да и светодиодом вспышки надо помигать (тут ещё косяк вылез, но это отдельная тема)! :)
Потому и if else полно!
А вот про прерывания - надо старую версию потестить, где не разрешал глобально прерывания - как там работает.
Сегодня не успел (в конторе код пишу, дома нет такой возможности).
И даже если я смотрю на следующее прерывание, то переменные тоже должны поменять значение, а я за ними слежу.
И код в else выполняется даже когда bullets>0.

Автор:  tommy [ 16 ноя 2011, 15:35 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

тяжеловато всё одно такой подход в коде читать (эт я про общий стиль и про вызов ф-ций и про имена их (CUT_OFF_SOUNT, fire_mode() vs get_keyboard_status() vs BULLETS_OUT_LED_ON)). но эт не сильно важно - наверняка всё ещё поменяется к релизу. а вот с точки зрения обывателя нет ведь разницы между стрельбой очередью и одиночными. выстрел и так громкий плюс затухает быстро, что нет смысла его в микшер запихивать, а лучше просто прекратить воспроизведение выстрела и начать с начала. ведь можно и одиночными стрелять довольно быстро, чтоб получилась по звуку очередь. зачем тогда разделять одно от другого?

Автор:  tommy [ 16 ноя 2011, 15:37 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

а по поводу выполнения else блока - посмотрите .lss файлик. там наверняка есть подсказка отчего так.

Автор:  Pingvin [ 16 ноя 2011, 16:19 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

tommy писал(а):
тяжеловато всё одно такой подход в коде читать (эт я про общий стиль и про вызов ф-ций и про имена их (CUT_OFF_SOUNT, fire_mode() vs get_keyboard_status() vs BULLETS_OUT_LED_ON)). но эт не сильно важно - наверняка всё ещё поменяется к релизу. а вот с точки зрения обывателя нет ведь разницы между стрельбой очередью и одиночными. выстрел и так громкий плюс затухает быстро, что нет смысла его в микшер запихивать, а лучше просто прекратить воспроизведение выстрела и начать с начала. ведь можно и одиночными стрелять довольно быстро, чтоб получилась по звуку очередь. зачем тогда разделять одно от другого?

Со звуком я так и делаю!
Никакого микшера нет.
Именно
Цитата:
просто прекратить воспроизведение выстрела и начать с начала
так и делаю.
Но пули то вылетать должны очередью?
Или предлагаете просто звук изменить, а стрелять так же одиночными?
P.S. Надеюсь, более подробные коментарии помогут легче понять код.
Про SOUNT (опечатка, имелось в виду, конечно, SOUND), знаю, лень было исправлять. :)
Сейчас в автаматик интегрирую платку.
Потом хочу на виде снять, как работает, да выложить куда-нибудь.

Автор:  tommy [ 16 ноя 2011, 22:53 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

про микшер - эт я загнал про космические корабли в театрах. ну, хз. этож не rocket science - тут как угодно будет работать. мне щас вот кажется, что обработка кнопок, пусть даж и стрельбы, нафик в прерывании не нужна :)

больше фоток и видео!

Автор:  Pingvin [ 27 фев 2012, 08:22 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

Побаловался с ЖК-индикатором.
Возникла проблема с отображением символов кириллицы! :(
По идее, нужно передавать код символа в кодировке ASCII (она же DOS-овская cp866).
Но редактор AVR-студии то работает с виндовой кодировкой CP-1251, и, понятно, что вместо кириллических символов отображается чётре что! :(
Как заставить редактор студии работать с ДОСовской кодировкой?
Или таки придется писать функцию-конвертер кодировок? :? :(

Автор:  Pacifist [ 27 фев 2012, 10:25 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

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

Вложения:
LCDconvert.zip [203.39 KiB]
Скачиваний: 383

Автор:  Pingvin [ 27 фев 2012, 11:34 ]
Заголовок сообщения:  Re: Вопросы по компилятору avr-gcc (WinAVR).

Pacifist писал(а):
Я себе такую прогу написал.
В интернете скрипты есть готовые, но я как-то не пользовал, предпочитаю вручную.

Спасибо - уже скачал подобную софтинку.
Но все это как то "не кошерно". :(
Тут бы макрос какой-нибудь мудрёный придумать ... :?

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