www.open-tager.ru http://www.open-tager.ru/forum/ |
|
прошивки на систему LTagKirov http://www.open-tager.ru/forum/viewtopic.php?f=5&t=417 |
Страница 7 из 36 |
Автор: | Pingvin [ 22 апр 2012, 09:41 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
DiBor писал(а): KorSar писал(а): А я не понял в чем разница между двумя схемами. Разве, что на верхней 12-2 и 11-3 соединены. так у меня так и сделано. и резисторы у меня тоже стоят. т.е. у меня по первой схеме. Какой программой прошил то? Левый шил только прошивку через понипрок, правый стал менять фюзы но понипрок его видеть перестал , вот разница Вложение: Безымянный.png А может, это глюки "Семёрки"? Поменяли чего-нибудь в работе с портами? Я шил атмегу 16 ПониПрогом через 5 проводков (упрощённый вариант) под XP - не было проблем! Питал плату от БП компа. |
Автор: | KorSar [ 25 апр 2012, 08:37 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
тогда у меня вариант 5-ти проводов как у LTagKirov на XP |
Автор: | KorSar [ 12 июл 2012, 08:10 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
Хочется попросить уважаемых программистов помочь довести прошивку LTK от 13.12.11 Необходимо найти ошибку в прошивке. Связался с tommy - у него сейчас совсем нет времени, да и на форуме он пропал Сама прошивка тут http://www.open-tag.ru/download/ltk_miles_13_12_11.rar Из переговоров с tommy выяснил, что ошибка где-то в самом приеме сигнала в p_miles.c, вот текст кода (может кто сразу увидит): /***************************************************** File: p_miles.c - milestag protocol ToDo: - убрать мусор от p_simple; - дописать хоть какие-нить команды; *****************************************************/ //http://www.lasertagparts.com/mtformat-2.htm #include "globals.h" #ifdef PROTOCOL_MILES #include "p_common.h" #include <util/delay.h> uint g_bSigInProcess=0; //флаг, что мы в процессе приёма uchar bOvertime=0; //было-ли переполнение таймера (нужно лишь чтобы выключить приём, когда таймер переполнится дважды uchar nPrevTime=0; //предыдущее значение таймера uint nRecievingInfo=0; //формируемый пакет (в процессе) uchar nBitsCount; //кол-во принятых бит (для отладки/проверки или учета принятого пакета) uint nPrevBit; //всё прерывание по переполнению счетчика0 нужно лишь для сброса флага принятой информации после как минимум одного периода простоя ISR (TIMER0_OVF_vect) { if (g_bSigInProcess!=0) { if (bOvertime==1) { g_bSigInProcess = 0; bOvertime = 0; } else { bOvertime++; }; }; g_nTime++; } // Процедура приёма IR. вызывается из прерывания, SIGNAL (SIG_INTERRUPT0) { uchar nCurTime = TCNT0; uchar nCurBit = 0; if (PinIRR) { nCurBit = 1; }; uchar dTime; dTime = nCurTime - nPrevTime; nPrevTime = nCurTime; //интересуют только перепады с 0 на 1 (концы ШИМ отрезков) //в простом (этом - без учета помех) случае надо было сменить инициализацию прерывания на возрастание уровня, //но по уму надо просто считать длительности нулевых и единичных отрезков с игнорированием всплесков от солнца, //тогда можно и без всяких crc обойтись. но то как солнце фонит надо сначала снять и посмотреть, да //т.ч. пускай такое будет прерывание if (nCurBit) { if (g_bSigInProcess!=0) { if ((dTime>13)&&(dTime<25)) { // 0 - 448us..832us nRecievingInfo <<= 1; nRecievingInfo |= 0; nBitsCount++; } else if ((dTime>32)&&(dTime<48)) { // 1 - 1056us..1568us nRecievingInfo <<= 1; nRecievingInfo |= 1; nBitsCount++; } else { //пришел мусор. не считаем за бит и прекращаем приём ("пуля прошла рядом"?) g_bSigInProcess = 0; nBitsCount = 0; }; //приняли 14 бит. заканчиваем приём и обрабатываем что вышло if (nBitsCount==14) { g_bSigInProcess = 0; if (nIRPackage==0) { //проверка чтоб успеть обработать предыдущий, прежде чем задавать новый (надо подумать) if (nRecievingInfo & 0b10000000000000) { //пришла команда - надо дождаться ещё пару бит и сделать трансляцию команд во внутреннее представление //сейчас просто игнорируем это. } else { //разбираем майлс-выстрел на составляющие uchar weapon = nRecievingInfo&0b00001111; uchar team = (nRecievingInfo>>4)&0b00000011; uchar id = (nRecievingInfo>>6)&0b01111111; //и собираем обратно в свой формат, заодно обрезаем id до 6бит nIRPackage = (id&0b00111111)<<7|team<<4|weapon; }; }; }; } else { //2400us - это 75 тиков с частотой 31250Гц //запас +-480us на всякий случай if ((dTime>60)&&(dTime<90)) { g_bSigInProcess = 1; nBitsCount = 0; nRecievingInfo = 0; }; }; }; bOvertime=0; } // конец автомата обработки ИК датчика void SendStart() { onIRx; _delay_us(2400); offIRx; _delay_us(600); }; void Send1() { onIRx; _delay_us(1200); offIRx; _delay_us(600); }; void Send0() { onIRx; _delay_us(600); offIRx; _delay_us(600); }; void SendBits (uchar data, uchar mask) { while (mask) { if (data&mask) { Send1(); } else { Send0(); }; mask>>=1; }; }; //14бит //0ppppppppttwwww void SendIRFire (uchar team, uchar id, uchar weapon) { SendStart(); Send0(); SendBits(id, 1<<6); SendBits(team, 1<<1); SendBits(weapon, 1<<3); offIRx; }; //17бит //1 mmmm mmmm pppp pppp - команда _m_ с параметром _p_ void SendIRCommand (uchar cmd, uchar param) { }; void InitIR () { // Fout = Кварц/(2*(N+1)) => N = Кварц/(2*Fout) - 1; // соотв. при Кварц=8000КГц, значения N: // 36Кгц, N = 110 // 40Кгц, N = 99 // 56Кгц, N = 70 OCR2 = 99; }; #endif |
Автор: | LTagKirov [ 22 июл 2012, 18:37 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
Примеры приёма ИК пакетов http://radiokot.ru/forum/viewtopic.php? ... view=print |
Автор: | Nestr [ 16 ноя 2012, 01:29 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
Подскажите схему собирал вот Ету прошивку использую с сайта http://ltagkirov.narod.ru/sxema.html С этой прошивкой которая тут в мастерской лежит вопще не заработал. иметирую попадание замыкая 4ногу на землю. срабатывает диод "попадание". Сначала 8 раз пришлось с иметировать попадание чтоб плата ушла в режим "игрок убит" следуйщий 4 раза. рандом чтоли ? Чтоб плату вернуть опять в режим "готов к бою" замыкаю 23 ногу на землю но схема не реагирует и остается в режиме "игрок мертв". помогает только отключение питания и разряд конденсатора С1. Проблема в прошивке или в схеме? Схему проверял несколько раз. да и схема не очень сложная чтоб ошибок наделать. Для прошивки МК использую Вот етот программатор и программу PonyProg фьюзы Выставлял так 1й раз убрал все CKSEL схема работала не корректно при включении загорался диод пустой обоймы и попадание. кнопка огонь не работала. 2й раз поставил птичку во всех CKSEL кроме CKSEL0 все заработало. но схему не могу вывести из режима "убит" в режим "новая игра" только отключением питания. Схема что с кварцем что без кварца работает одинаково. Не правильно выставил фьюзы ? Или так и должно быть? |
Автор: | tommy [ 16 ноя 2012, 09:41 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
Nestr писал(а): Подскажите там не то чтоб рандом - там важна длительность, ведь предполагается, что данные идут от датчика. по поводу фьюзов подсказать сейчас не могу (доков под рукой нет, но там всё просто - важно лишь поставить тактирование от внешнего кварца. вечером дополню ответ, но наверняка раньше уже подскажут), а вот по прошивке: попробуйте поставить http://www.open-tag.ru/download/ltk_miles_13_12_11.rar , если всё верно собрано, то при включении питания должна проигрываться мелодия (как на видео http://www.youtube.com/watch?v=2gizPYzVLSc ).
схему собирал вот Ету прошивку использую с сайта http://ltagkirov.narod.ru/sxema.html С этой прошивкой которая тут в мастерской лежит вопще не заработал. иметирую попадание замыкая 4ногу на землю. срабатывает диод "попадание". Сначала 8 раз пришлось с иметировать попадание чтоб плата ушла в режим "игрок убит" следуйщий 4 раза. рандом чтоли ? |
Автор: | tommy [ 16 ноя 2012, 17:11 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
до доков не добрался, но ответ про фьюзы есть в этой теме две страницы назад: Pingvin писал(а): Вам надо считать фьюзы с нового контроллера и убрать галочки у всех CKSEL
Код: CKSEL3 [ ] CKSEL2 [ ] CKSEL1 [ ] CKSEL0 [ ] Затем нажать "Записать" и будет Вам счастье! |
Автор: | Nestr [ 16 ноя 2012, 20:45 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
в ponyprog птичка стоит значеть выклю чено. птичка не стоит знач включено. если нужно отключить CKSEL3 значет везде ставим птички? |
Автор: | Pingvin [ 16 ноя 2012, 21:05 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
Nestr писал(а): в ponyprog птичка стоит значеть выклю чено. птичка не стоит знач включено. если нужно отключить CKSEL3 значет везде ставим птички? Можете считать ваши фьюзы и выложить скриншот? Только, ради Бога, ничего не записывайте! Интересует такая вкладка В поньке галочки надо убрать. Почитайте http://easyelectronics.ru/vnutrisxemnaya-otladka-avr-cherez-jtag-ice.html Там есть таблица с фьюзами. |
Автор: | Nestr [ 16 ноя 2012, 21:54 ] |
Заголовок сообщения: | Re: прошивки на систему LTagKirov |
Вот Фьюзы такие |
Страница 7 из 36 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |