Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Re: ИК протокол NEC

Вс мар 24, 2013 17:42:19

Почти разобрался с вашим алгоритмом, передача и прием уже получаются. Вопрос в следующем, void TransmitByte (char byte) когда сюда попадает код команды, например 3, в переменной byte она будет выглядеть 00000011 так, или 11 так? и незначащие нули передаются тоже? И если по идее это байт, то я могу могу в 1 устройстве закодировать 256 приемников и 256 команд?

Re: ИК протокол NEC

Вс мар 24, 2013 18:49:27

Именно так, можно адресовать 256 устройств, и каждому отправлять 256 команд.

Единственное, я не реализовал возможность обработки удержания кнопки, просто это мне не нужно было.
Потом можно будет доработать.....

Re: ИК протокол NEC

Вс мар 24, 2013 22:19:51

А на счет незначащих нулей и представления числа внутри функции?

Re: ИК протокол NEC

Вс мар 24, 2013 22:46:25

Alkarax писал(а):А на счет незначащих нулей и представления числа внутри функции?

В функцию передается байт (т.е. 8 бит), эти 8 бит все по очереди передаются, не важно какие именно это биты.
На счет представления числа внутри функции - не понял вопроса.....

Re: ИК протокол NEC

Вт мар 26, 2013 18:54:00

Представление числа... Ну вот в функцию мы передадим к примеру 4, (от балды пишу) peredacha(4), внутри функции идет обработка уже побитово, т.е. на приемник мы передаем 00000100. Вот я и спрашивал в функцию записываем число в десятичной системе, а внутри мы работаем с ним уже как с двоичным, передаем от старших разрядов, т.е. сначала, в данном примере, я передам длинный сигнал возбуждения, потом 0 потом еще 4 раза 0 потом 1 и 2 раза 0. В принципе из прошлого ответа я уже все понял. А вообще спасибо, вы мне очень и очень помогли и косвенно не только в этом вопросе.

Re: ИК протокол NEC

Чт май 09, 2013 09:30:16

Расковырял старый видак.
В пульте установлен 4-битный процессор NEC. Я так понимаю, это тоже их протокол?
Изображение

Re: ИК протокол NEC

Пн май 12, 2014 20:30:13

Здравствуйте товарищи! подскажите что делаю не правильно

Re: ИК протокол NEC

Вт май 13, 2014 09:05:39

Artem148 писал(а):Здравствуйте товарищи! подскажите что делаю не правильно
А что не устраивает?

Re: ИК протокол NEC

Вт май 13, 2014 09:35:01

Приходит "1" или "0" вместо здорового числа (4 байта - адрес, инв адрес, команда, инв. команда), то есть "1" или "0" мы не получим (адрес - 1, команда - 1; получим - 00000001 11111110 00000001 11111110 - то есть далеко не 1)

Re: ИК протокол NEC

Вт май 13, 2014 10:12:07

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

Re: ИК протокол NEC

Вт май 13, 2014 18:35:05

Artem148 писал(а):Приходит "1" или "0" вместо здорового числа (4 байта - адрес, инв адрес, команда, инв. команда), то есть "1" или "0" мы не получим (адрес - 1, команда - 1; получим - 00000001 11111110 00000001 11111110 - то есть далеко не 1)
Я ваще ничего не понял :).....

Re: ИК протокол NEC

Вт май 13, 2014 19:09:47

Уважаемый(ая) shads, сейчас попытаюсь объяснить :)

1) На сколько я понял в NEC`e "1" от "0" отличает временной интервал, поэтому в обработчике внешнего прерывания засекаем время (больше 2 мс - значит "1", меньше "0")
2) Записываем в переменную "_data"
2a) Сдвигаем всё на знак влево, если это не 32 знак (8*4)
3) Выводим все 32 бита по UART


Приходит "1" или "0" вместо здорового числа (4 байта - адрес, инв адрес, команда, инв. команда; то есть "1" или "0" мы не получим в любом случае. Пример: адрес - 0х01, команда - 0х01; получим - 00000001 11111110 00000001 11111110 = 33423870, а это есть далеко не 1)


Это я к тому, что из-за инверсии адреса и команды мы не можем получить "1" или "0"

Re: ИК протокол NEC

Вт май 13, 2014 23:42:26

Artem148 писал(а):Это я к тому, что из-за инверсии адреса и команды мы не можем получить "1" или "0"
Дело в том, что инверсные значения данных и адреса, необходимы только для контроля достоверности принятых данных... После проверки их нужно отбросить...
Когда нам нужен адрес, просто из 4-х принятых байт достаем первый... это и будет принятый адрес... (0-255)
Когда нам нужна команда, просто из 4-х принятых байт достаем третий... это и будет принятая команда... (0-255)
Т.е. все 32 принятых бита никто в итоге как одно целое не рассматривает.....

Если нужно получить общее значение адреса и команды в диапазоне 0-65535, то наверное как то так...
Код:
uint32_t   InputData;                  //принятые 32 бита IR данных
uint16_t   OutData;                  //конвертируем в 16 бит

OutData = (uint16_t)(InputData >> 8UL) & 0x00ff;      //скопировали значение данных
OutData |= (uint16_t)(InputData >> 16UL) & 0xff00;      //добавили значение адреса
Теперь в OutData будет 16 битное значение (с возможностью передачи значения в диапазоне 0 - 65535)
Правда.. я не проверял... может чего то и криво написано...

Re: ИК протокол NEC

Ср май 14, 2014 14:57:37

to shads; Я это все прекрасно понимаю; проблема не в этом, а в том, что прошивка написана криво и не хрена не принимает ни адресс, ни команду.

В не зависимости от кнопки или пулта приходит или 0х0000 или 0х0001.

P.S. Господа, а всегда ли в NEC`e передаётся стартовый + 32бита или существуют другие вариации?

Re: ИК протокол NEC

Ср май 14, 2014 16:49:57

Artem148 писал(а):В не зависимости от кнопки или пулта приходит или 0х0000 или 0х0001.
Ну наконец то по русски объяснили :).....

А почему бы вам не заюзать мой вариант, который тут обсуждался?...
Если принципиально надо с вашим вариантом разобраться, то вечерком гляну.....

Re: ИК протокол NEC

Ср май 14, 2014 18:00:14

Не принципиально; просто хочу понять свою ошибку :)

Re: ИК протокол NEC

Сб окт 10, 2015 18:00:54

shads писал(а):
Artem148 писал(а):В не зависимости от кнопки или пулта приходит или 0х0000 или 0х0001.
Ну наконец то по русски объяснили :).....

А почему бы вам не заюзать мой вариант, который тут обсуждался?...
..

Нашел попроще код http://geektimes.ru/post/255542/ но чего то не фурычит. Пытаюсь высветить на индикаторе что пришло, тишина. Может кто подскажет в чем дело..

Re: ИК протокол NEC

Пн окт 12, 2015 22:35:40

shads писал(а):Ну вот, домучил, обработку IR NEC, вот что получилось:


Пока что для одной частоты (8000000) и константы заданы жестко. Потом надо будет докумекать автоматический рассчет для разных частот.

Не работает, блин, однако. У кого получилось?
Вложения
IR_nec.txt
Делал на Атмеге168Р, соответственно указал нужное для INT1 и частоту 8МГц
(7.04 KiB) Скачиваний: 356

Re: ИК протокол NEC

Сб окт 17, 2015 19:29:39

Gosha_006 писал(а):Не работает, блин
Может прерывания надо разрешить в главном цикле?...

Не вижу, чтобы у тебя тут прерывания были включены...
Код:
int main()
{
   IrNecInit ();
       
   while (1)
   if (IrNecDataCheck())
   {
      PORTC = IrNecDevNumGet();
      _delay_ms(500);
      PORTC = IrNecCommandGet();
      _delay_ms(500);
   }
}

Re: ИК протокол NEC

Вс окт 18, 2015 10:15:46

может пригодиться viewtopic.php?f=43&t=116310&hilit=kenwood только передача
Ответить