Например TDA7294

Форум РадиоКот • Просмотр темы - ИК протокол NEC
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 13:28:13

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 59 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вс мар 24, 2013 17:42:19 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт мар 21, 2013 16:22:09
Сообщений: 27
Рейтинг сообщения: 0
Почти разобрался с вашим алгоритмом, передача и прием уже получаются. Вопрос в следующем, void TransmitByte (char byte) когда сюда попадает код команды, например 3, в переменной byte она будет выглядеть 00000011 так, или 11 так? и незначащие нули передаются тоже? И если по идее это байт, то я могу могу в 1 устройстве закодировать 256 приемников и 256 команд?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вс мар 24, 2013 18:49:27 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Именно так, можно адресовать 256 устройств, и каждому отправлять 256 команд.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вс мар 24, 2013 22:19:51 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт мар 21, 2013 16:22:09
Сообщений: 27
Рейтинг сообщения: 0
А на счет незначащих нулей и представления числа внутри функции?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вс мар 24, 2013 22:46:25 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Alkarax писал(а):
А на счет незначащих нулей и представления числа внутри функции?

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


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вт мар 26, 2013 18:54:00 
Первый раз сказал Мяу!
Аватар пользователя

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


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Чт май 09, 2013 09:30:16 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Вт июн 29, 2010 12:31:49
Сообщений: 663
Рейтинг сообщения: 0
Расковырял старый видак.
В пульте установлен 4-битный процессор NEC. Я так понимаю, это тоже их протокол?
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Пн май 12, 2014 20:30:13 
Первый раз сказал Мяу!

Зарегистрирован: Сб мар 29, 2014 18:04:50
Сообщений: 27
Рейтинг сообщения: 0
Здравствуйте товарищи! подскажите что делаю не правильно

Спойлер
Код:

define F_CPU 8000000UL

#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>

#include <stdlib.h>

#include "uart.h"
#include "uart.c"


void Timer_init(void)
{
   TCCR1A = (0<<COM1A1) | (0<<COM1A0)| (0<<COM1B1) | (0<<COM1B0) | (0<<FOC1A) | (0<<FOC1B) | (0<<WGM11) | (0<<WGM10);
   TCCR1B = (0<<ICNC1)  | (0<<ICES1) | (0<<WGM13)  | (0<<WGM12)  | (0<<CS12)  | (1<<CS11)  | (0<<CS10);
}

#define Timer_ON  TCCR1B = 1<<CS11
#define Timer_OFF TCCR1B = 0

bool     IR_Rx_Active = false;
char _c_bit = 0;
unsigned long _data = 0;
unsigned long data = 0;
unsigned int _TCNT1 = 0;
char   _buffer[12]; char temp = 0;
ISR(INT0_vect)
{
   _TCNT1 = TCNT1;
   TCNT1  = 0;
   
   if (_TCNT1 == 0)
   {
      Timer_ON;
   }
   
   if (_TCNT1 > 13000)
   {
      IR_Rx_Active = true;
   }
   
   if (IR_Rx_Active)
   {
      if (_TCNT1 > 2000)
      {
         _data = 1;
      }
      else
      {
         _data = 0;
      }
      
      if (_c_bit == 32)
      {
         IR_Rx_Active = false;
         
         Timer_OFF;

         TCNT1 = 0;

         data = _data;

         _data = 0;

         _c_bit = 0;
      }
      else
      {
         _data  <<= 1;  // сдвигаем код влево
      }
      
      _c_bit++;
   }
   _TCNT1 = 0;
}

void MCU_init(void)
{
   UART_init();
   //Timer_init();
   
   
   DDRD  &= ~1<<2;
   PORTD |=  1<<2;
   
   MCUCR |= (1<<ISC01)|(1<<ISC00);
   GICR  |= (1<<INT0);
   
   sei();
}

int main(void)
{
     MCU_init();
   
     char   _buffer[12];

     while(1)  // раз в 10 секунд отправляем по UART
    {      
   ultoa(data, _buffer, 10);
   UART_WriteString(_buffer);
   UART_WriteChar(10);
         
   for (int c=0; c<12; c++)
   {
      _buffer[c]=0;
   }
         
      _delay_ms(10000);
               data = 0;
    }
}



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вт май 13, 2014 09:05:39 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Artem148 писал(а):
Здравствуйте товарищи! подскажите что делаю не правильно
А что не устраивает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вт май 13, 2014 09:35:01 
Первый раз сказал Мяу!

Зарегистрирован: Сб мар 29, 2014 18:04:50
Сообщений: 27
Рейтинг сообщения: 0
Приходит "1" или "0" вместо здорового числа (4 байта - адрес, инв адрес, команда, инв. команда), то есть "1" или "0" мы не получим (адрес - 1, команда - 1; получим - 00000001 11111110 00000001 11111110 - то есть далеко не 1)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вт май 13, 2014 10:12:07 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
для начала все глобальные переменные, используемые и в обработчике прерывания и в основном цикле, сделайте volatile - а там посмотрим, что выйдет.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вт май 13, 2014 18:35:05 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Artem148 писал(а):
Приходит "1" или "0" вместо здорового числа (4 байта - адрес, инв адрес, команда, инв. команда), то есть "1" или "0" мы не получим (адрес - 1, команда - 1; получим - 00000001 11111110 00000001 11111110 - то есть далеко не 1)
Я ваще ничего не понял :).....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Вт май 13, 2014 19:09:47 
Первый раз сказал Мяу!

Зарегистрирован: Сб мар 29, 2014 18:04:50
Сообщений: 27
Рейтинг сообщения: 0
Уважаемый(ая) 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 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
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 
Первый раз сказал Мяу!

Зарегистрирован: Сб мар 29, 2014 18:04:50
Сообщений: 27
Рейтинг сообщения: 0
to shads; Я это все прекрасно понимаю; проблема не в этом, а в том, что прошивка написана криво и не хрена не принимает ни адресс, ни команду.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Ср май 14, 2014 16:49:57 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Artem148 писал(а):
В не зависимости от кнопки или пулта приходит или 0х0000 или 0х0001.
Ну наконец то по русски объяснили :).....

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Ср май 14, 2014 18:00:14 
Первый раз сказал Мяу!

Зарегистрирован: Сб мар 29, 2014 18:04:50
Сообщений: 27
Рейтинг сообщения: 0
Не принципиально; просто хочу понять свою ошибку :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Сб окт 10, 2015 18:00:54 
Родился

Зарегистрирован: Чт окт 25, 2012 12:58:39
Сообщений: 8
Рейтинг сообщения: 0
shads писал(а):
Artem148 писал(а):
В не зависимости от кнопки или пулта приходит или 0х0000 или 0х0001.
Ну наконец то по русски объяснили :).....

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Пн окт 12, 2015 22:35:40 
Родился

Зарегистрирован: Чт окт 25, 2012 12:58:39
Сообщений: 8
Рейтинг сообщения: 0
shads писал(а):
Ну вот, домучил, обработку IR NEC, вот что получилось:
Спойлер
Код:
//***************************************************************************************************************************
//БИБЛИОТЕКА ОБРАБОТКИ СИГНАЛА ИК ПУЛЬТА ДИСТАНЦИОННОГО УПРАВЛЕНИЯ СТАНДАРТА NEC
//       


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

Не работает, блин, однако. У кого получилось?


Вложения:
Комментарий к файлу: Делал на Атмеге168Р, соответственно указал нужное для INT1 и частоту 8МГц
IR_nec.txt [7.04 KiB]
Скачиваний: 356
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ИК протокол NEC
СообщениеДобавлено: Сб окт 17, 2015 19:29:39 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
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 
Электрический кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 128
Зарегистрирован: Чт июн 20, 2013 00:00:58
Сообщений: 1031
Откуда: москва, м.Сходненская
Рейтинг сообщения: 0
может пригодиться viewtopic.php?f=43&t=116310&hilit=kenwood только передача


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 59 ]    , 2,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y