-
Сообщения
-
By Андрей Гараж · Posted
Как говорили коллеги, да и по коду так похоже, что задний ИК просто светит или не светит. (строки 698 - 707) И еще в паре мест он включается, но там тоже тупо на on/off. // STOP RED SIGNALS ***************************************************************************** if ((clcstopsignals==0)&&(stopsignalson==0)) { PORTD&=0b11111101; // Stop RED led OFF } if ((clcstopsignals>=stopsignals)||(stopsignalson==1)) { PORTD|=0b00000010; // Stop RED led ON clcstopsignals=stopsignals; } Отличная мысль! Прочитал сейчас статью на вики, и да, очень похоже на то, что вы написали в разделе "Кодирование". Только этих кодировок сейчас на одной вики, вон, штук 15 написано. Но все равно спасибо, надо глянуть. И да. Светофор посылает пакеты с частотой примерно 3 Гц. Конечно логично иметь какой-то байт синхронизации, т.к. если машинка выезжает из за поворота, то может поймать только кусок пакета. Но я в упор не нахожу по коду место, где он определяется как "стартовый" или как-либо еще. Тут очень здорово, что код написан чисто на регистрах, безо всяких кастомных библиотек, исходники которых ушли вместе с челом который это придумывал) По коду я вижу вот что (строки 226 - 259): while (1) { // НАЧИНАЕМ БЕСКОНЕЧНЫЙ ЦИКЛ y=ACSR&0b00100000; // IR start Read FrontIR ******************************************************** // ПОДСКАЗКА ЧТО НАЧИНАЕМ ЧИТАТЬ ПЕРЕДНИЙ ПРИЕМНИК НА ТАЧКЕ if (y==0) { // НАЧИНАЕМ ЗДОРОВЕННЫЙ if (НА 300 СТРОК, НО ЭТО НЕ ВАЖНО) adr=0; // ОБНУЛЯЕМ ПЕРЕМЕННУЮ adr В КОТОРУЮ БУДЕМ СОХРАНЯТЬ ПОЛУЧЕННЫЕ БИТЫ x1=0; // х1 и х2 ПОТОМ СКЛЕЯТСЯ В ОДИН (х1 - СТАРШИЙ БИТ HIGH, х2 - МЛАДШИЙ LOW) x2=0; _delay_us(19775); // ЗАДЕРЖКА 20 мс КРАТНА 2мс, Т.Е. МЫ ПРОПУСКАЕМ "СТАРТОВЫЕ" 10 БИТ? ТАК ЧТО ЛИ? y=ACSR&0b00100000; // bit 0 // ВООБЩЕ НА СКОЛЬКО Я ПОНЯЛ ASCR ЭТО РЕГИСТР ВНУТРЕННЕГО КОМПАРАТОРА, МЫ ЕГО ЧИТАЕМ... if (y==0) adr|=0b00000001; // И ЕСЛИ ОН РАВЕН НУЛЮ, ТО ЗАПИСЫВАЕМ 1 В НУЛЕВОЙ БИТ БАЙТА adr? А ЕСЛИ НЕ РАВЕН, ТО ЧТО? НЕ ПОЙМУ _delay_us(7910); // ТУПО ЖДЕМ 8 мс (ПРИ ДЛИТЕЛЬНОСТИ 1 БИТА В 2 мс ЭТО КАК-ТО МНОГОВАТО). ТОЖЕ НЕ ПОНЯТНО. y=ACSR&0b00100000; // bit 1 // НУ И ТАК ЕЩЕ 7 РАЗ if (y==0) adr|=0b00000010; _delay_us(7910); y=ACSR&0b00100000; // bit 2 if (y==0) adr|=0b00000100; _delay_us(7910); y=ACSR&0b00100000; // bit 3 if (y==0) adr|=0b00001000; _delay_us(7910); y=ACSR&0b00100000; // bit 4 if (y==0) adr|=0b00010000; _delay_us(7910); y=ACSR&0b00100000; // bit 5 if (y==0) adr|=0b00100000; _delay_us(7910); y=ACSR&0b00100000; // bit 6 if (y==0) adr|=0b01000000; _delay_us(7910); y=ACSR&0b00100000; // bit 7 if (y==0) adr|=0b10000000; Я курсорами осциллографа прополз всю осциллограмму, четко шаг по 2 мс получается по дельта-Т -
А я-то подумал, вещают. Я отстал от жизни, в моём понимании радио работает - это когда там слова какие-нибудь или музыка.
-
By kitafonchik · Posted
Ребят, что вы вцепились в этот C5? он лишний( остался от предыдущей схемы), на плате его нет, но и с ним будет отлично все работать, даже лучше. -
Это аналог, по крайней мере так утверждают на просторах .. Так вот. После подачи питания, у вас на 10 выводе должен присутствовать ШИМ.
-
Similar Content
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.