DanGion писал(а):
Помниться я обещал затестить прошивку на работу с 56кГц. Ещё актеально?
Можно последнюю версию пошивки под "зеленую" плату? А то у крестников д.р. намечается надо заделать подарки!
Актуально, конечно!
Но, похоже - с понедельника сам начну совместимость тестить - пришла (пока на почте лежит) плата LW, присланная
Jumpy!
Спасибо ему огроменное!
Датчики под 56 кГц также в наличии.
Так что заняться будет чем!
Что касается "последней" версии- даже не знаю, как сказать.
Дело в том, что их как бы две...
Есть та, которая под 56 кГц, но в ней остался баг с неяркой вспышкой выстрела.
Есть другая - с пофиксенным багом, но не подойдет под 56 кГц - прерывания не стопоряться.
Вот из из этих двух и надо собрать "ванильную" прошивочку - с пофиксенным багом и с остановкой прерывания.
Но Вам, ИМХО, пока нужна та, что под 56 кГц (с остановкой прерываний).
http://www.open-tag.ru/forum/download/file.php?id=1824Меняем в файле miles_protocol.h всего два параметра
Код:
#define IR_F0 36000 меняем на #define IR_F0 56000
и #define ERROR_TOLERANCE 14 меняем на #define ERROR_TOLERANCE 22
Да и вторую выкладывал.
Интерфейс же обмена конфигуратора и девайса предельно простой.
Конфигуратор посылает
protocol?
Девайс вываливает описание параметров
Код:
название_параметра;тип(минимальное_значение,максимальное_значение);команда_на_чтение;команда_на_присвоение
Вот как описан протокол в файле commands.h
Код:
const unsigned char protocol[] PROGMEM = "Количество патронов в магазине;int(0,90);bullets_in_clip?;bullets_in_clip=\r\n"
"Магазинов;int(0,100);clips?;clips=\r\n"
"Идентификатор игрока;int(0,127);player_id?;player_id=\r\n"
"Цвет команды;enum(Красная,Синяя,Желтая,Зеленая);team_id?;team_id=\r\n"
"Наносимый урон;enum(1%,2%,4%,5%,7%,10%,15%,17%,20%,25%,30%,35%,40%,50%,75%,100%);damage_index?;damage_index=\r\n"
"Дружественный огонь;enum(Нет,Да);friendly_fire?;friendly_fire=\r\n"
"Мощность ИК излучения;enum(Для игры в помещении,Для игры на улице);ir_power?;ir_power=\r\n"
"Напряжение заряж. батареи мВ;int(5000,45000);batt_full_voltage?;batt_full_voltage=\r\n"
"Напряжение разряж. батареи мВ;int(4500,45000);batt_low_voltage?;batt_low_voltage=\r\n";
Для чтения значения ИД игрока посылаем соответствующую команду на чтение
Код:
player_id?
В ответ получим
Код:
1
OK
Присваиваем новый ИД
Код:
player_id=2
В ответ получим
Код:
OK
А если
Код:
player_id=255
То получим
Код:
ERROR:parameter out of range
Так как 255 больше максимального значения
С перечисляемым типом удобнее работать через индексы.
Например
Код:
team_id=0
Это будет красная команда.
Все строки заканчиваются служебными символами возврата корретки и новой строки
\r\n
Протокол будет расширен - есть задумки добавить и команды без параметров, например - стереть из память ключ Тач мемори.
Но принцип, надеюсь, понятен?
Призываю всех прошивкописателей, коммерческих производителей и персонально LTagKirov придерживаться вышеописанных правил описания параметров и конфигуратор сможет работать и с вашими девайсами!!! Разумеется, что при этом ваши девайсы должны понимать и адекватно реагировать на команды, описанные в вашем протоколе.
Следовать именно
ПРАВИЛАМ ОПИСАНИЯ ПАРАМЕТРОВ - протокол можете делать какой угодно (названия параметров и команды могут отличаться).
Все тонкости и детали реализации обсуждаемы!