Форум РадиоКот https://radiokot.ru/forum/ |
|
CEC (HDMI/consumer electronics control) https://radiokot.ru/forum/viewtopic.php?f=20&t=37326 |
Страница 1 из 1 |
Автор: | Satyr [ Сб ноя 06, 2010 23:20:05 ] |
Заголовок сообщения: | CEC (HDMI/consumer electronics control) |
Никто не делал вылавливание CEC комманд из HDMI интерфейса ? Видюх к компу то с HDMI куча, но чтоб хоть в одной было вылавливание комманд с пульта от телека и прочего не видел, а хотелось бы... Собственно и надо: 1. железный интерфейс от HDMI к чему то общепринятому - I2S, SPI и т.п. 2. какую то программную библиотеку на эту тему. Видел в инете чтото по первой теме на рассыпухе, но не проверенное. Есть микросхема на эту тему - TDA9950 но вобще не нашел, где ее купить, не только в России. Делитесь, кто что знает -)) |
Автор: | Satyr [ Вс ноя 07, 2010 11:19:01 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
Есть еще CH7322B, но тоже не найти |
Автор: | Satyr [ Вт ноя 16, 2010 11:39:22 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
Эх, сделал физическую часть, сделал битовую часть, начал уже разбор с фреймами.... и тут нашел, что аппаратный CEC есть в STM32F100 серии копеечных микроконтроллеров -))) По разбору фреймов есть какие то наработки на ардуино форуме |
Автор: | Zheleznjakov [ Ср ноя 17, 2010 10:34:54 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
Эх только хотел написать что в СТМ32 есть такая штука и не успел ![]() |
Автор: | DELme [ Пт янв 07, 2011 15:28:40 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
Облазил всякие зарубежные железячные форумы. Особо по этой теме ничего и нигде нет. Всё что нашёл можно уложить в четыре пункта: 1. Существует зарубежный сайт где продаётся самодельный девайс для HDMI CEC to USB (фактически в виртуальный COM порт). Но цена неоправдана высока (хотя мне ли судить, если сам сделать не могу), но 3000-4000 рублей жаба давит тратить на функционал для компа, заключающийся лишь в "пауза-стоп-перемотка" с пульта телевизора. Да и не совсем понятно, что там с софтом (функционалом). 2. Нашёл ещё русских разработчиков, создавщих подобный девайс. Но направленность больше на умный дом - девайс может работать автономно, вещая CEC в ethernet сеть. Да и фирма эта OEM, девайс сама не делает и не продаёт. Проэкт этот она сделала для швейцарской фирмы (охранное оборудование). Зашёл на их сайт, нашёл конечное устройство на продажу - цена 12000-14000 рублей... не вариант ![]() 3. Реализация на ARDUINO. Смотрел. Возможно подходящий вариант. Но тоже не ясно, что там с софтом (одни исходники, скринов нет, описания тоже), так сходу и не видно возможности софта. Надо будет собрать исходнички да посмотреть... Опятьже летает в голове мысля - а зачам они огород городят на ардуино (пишут микропрограмму), если вероятно по тому же принципу (там CEC разделена на два сигнала Rx и Tx) можно было подобным же образом посадить шину HDMI CEC на COM порт и написать (вместо микропрограммы на ардуино), соответствующую программу для КОМ прота (я не спец, и могу конечно не знать каких-то физических ограничений по реализации КОМ порта). 4. Ну и наконец нашёл Австралийского производителя. У него есть ровно то что нужно - "коробочка" CEC-USB и необходимый софт (всё коммерческое, прилизанное). Цены правда пока не знаю, на мой запрос, они написали что устройство новое, и в продажу вот-вот должно поступить. Обещали в ближайшие дни написать стоимость и возможность пересылки в Россию. Полагаю цена опять же будет заоблачной и превысит 150-200 баксов. У китайцев ещё полазил - там вообще тишина. Очень удивлён, что такая полезная и вобщем-то (ИМХО) дешёвая вещица не получила до сих пор широкого распространения... Нашёл также и спецификацию на HDMI 1.3 (в которой находится и спецификация на CEC). Сижу вот читаю про реализацию протокола CEC. Умиляет некоторая наивность этого документа и ещё эти рисунки с человечками управляющими телевизором... На HDMI 1.4 талмут в свободный доступ не дают... да и не очень хотелось, там изменения по сути только в передаче 3D. Видюха кстати такая имеется у Тошибы, только в ноутбуке и втроенная ![]() ![]() Вобщем уныло всё. Думал приду на всё готовенькое, немного попаяю, немного понастраиваю... А тут такое дело. |
Автор: | Satyr [ Пт янв 07, 2011 17:00:03 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
Да там все не так сложно. Я быстренько добрался до получения пакетов от телека, а дальше пока к этой теме подостыл -)) Если кто желает продолжить и результат потом поделиться результатом с общественостью - могу дать кое какую вводную. |
Автор: | DELme [ Пт янв 07, 2011 17:07:01 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
Буквально только что наткнулся на один патент... и вероятно понял почему ни в одной видеокарте не реализован HDMI CEC. Во всём виноват идиотский патент на управление персональным копьютером с телевизора посредством CEC (ну как же можно выдавать патент на велосипед). Неужели это не очевидно из самой сути CEC ??? Так нет же, выдали такой вот патент... И теперь никто не может делать видюхи с CEC без оплаты патента. А какой вендор будет оплачивать патент на такую малонужную в компе вещь?... Вот такие дела. Ссылку не даю, легко надёте: Патент США № 20080172504 поиском в гугле "United States Patent 20080172504". Может тоже запатентовать какую-нибудь очевидную вещь. Ну например "Процесс мочеиспукания в положении стоя". И там уж либо сидя, либо плати ![]() Делись наработками, надо ж как-то тему развивать ![]() ![]() |
Автор: | Satyr [ Пт янв 07, 2011 17:24:02 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
Вобщем в некоторых схемах делают просто - подтягивают через через 27k резистор линию к +3.3в (порой даже без диода) и сразу на ногу микроконтроллера. Работать скорее всего будет, но как то глубокого соответствия стандарту и защищенности от разных напастий судьбы не ощущается... Покапавшись в разных аппликейшн нотах на тему CEC и описанию, получилось такое: Вложение: Диод тут или быстровосстанавливающийся с малым паденим напряжения, или лучше шотки с не сильно большим обратным током. С прерываниями на атмеловом арме по изменению состояни ноги чтото я или не разобрался, или патроны не той системы (чтото типа дребезга контактов), пока выкинул. Для sam7s256 атмеловского. чего достиг - выводятся на консоль пакеты пакеты опроса присутствия девайнос на шине и все -)) тошибовский 46 дюймовый телек такие раз в 3-4 минуты рассылает, ловятся. #include "board.h" #include "aic.h" #include "pio.h" #include <pit.h> #include <utility/trace.h> /* CEC Start Bit Timing Defintions, in us (10-6 s) */ /* Recieve Start */ #define Sbit_Min_LD 35 // Start Bit Minimum Low duration #define Sbit_Max_LD 39 // Start Bit Maximum Low duration #define Sbit_Min_TD 43 // Start Bit Minimum Total duration #define Sbit_Max_TD 47 // Start Bit Maximum Total duration /* Transmit Start */ #define Sbit_Nom_LD 37 // Start Bit Nominal Low duration #define Sbit_Nom_HD 8 // Start Bit Nominal High Duration /* Recieve Data */ #define Dbit_Min_TD 20 // Data Bit Minimum Total Duration #define Dbit_Max_TD 28 // Data Bit Maximum Total Duration #define Dbit_Sample 11 // Data Bit Sample time /* Transmit Data */ #define Dbit_High_LD 6 // Data Bit Nominal Low duration #define Dbit_High_HD 18 // Data Bit Nominal High Duration #define Dbit_Low_LD 15 // Data Bit Nominal Low duration #define Dbit_Low_HD 9 // Data Bit Nominal High Duration #define Ack_HD 13 // Set High duration after ACK #define Ack_sample 5 // The acknowledge is sampled after the low duration is transmitted. /// PIT period value in µseconds. #define PIT_PERIOD 100 /// Global timestamp in milliseconds since start of application. volatile unsigned int timestamp = 0; volatile int waiting_edge; // 1 - pos, 0 - neg volatile int lasttimestamp; #define IRQDELAY 2 //---------- // Local functions //---------- //---------- /// Handler for PIT interrupt. Increments the timestamp counter. //---------- void ISR_Pit(void) { unsigned int status; // Read the PIT status register status = PIT_GetStatus() & AT91C_PITC_PITS; if (status != 0) { // Read the PIVR to acknowledge interrupt and get number of ticks timestamp += (PIT_GetPIVR() >> 20); } } //---------- /// Configure the periodic interval timer to generate an interrupt every /// millisecond. //---------- void ConfigurePit(void) { // Initialize the PIT to the desired frequency PIT_Init(PIT_PERIOD, BOARD_MCK / 1000000); // Configure interrupt on PIT AIC_DisableIT(AT91C_ID_SYS); AIC_ConfigureIT(AT91C_ID_SYS, AT91C_AIC_PRIOR_LOWEST, ISR_Pit); AIC_EnableIT(AT91C_ID_SYS); PIT_EnableIT(); // Enable the pit PIT_Enable(); } Pin output = {AT91C_PIO_PA31, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT}; enum _frame_state { B_START_L=0, B_START_H, B_1_L, B_1_H, B_2_L, B_2_H, B_3_L, B_3_H, B_4_L, B_4_H, B_5_L, B_5_H, B_6_L, B_6_H, B_7_L, B_7_H, B_8_L, B_8_H, B_EOM_L, B_EOM_H, ACK} frame_state; /////////////////////////////////// void CECFramer(int eom, unsigned char val) { printf("FRAME 0x%.2x, oem %d\n", val, eom); } int lastdur, begval; unsigned char recv_byte; void AnalizeT(int level, int duration) { // ждем старт бит if(frame_state == B_START_L) { if(level == 0 && (duration >= Sbit_Min_LD && duration <= Sbit_Max_LD)) { lastdur = duration; frame_state++; } else { frame_state = B_START_L; } return; } if(frame_state == B_START_H) { if(level == 1 && (duration + lastdur) >= Sbit_Min_TD && (duration + lastdur) <= Sbit_Max_TD) { recv_byte = 0; frame_state++; } else { frame_state = B_START_L; } return; } // пошли данные int bitnum = frame_state >> 1; if(frame_state & 1) // wait H { if(level != 1 || (lastdur + duration) < Dbit_Min_TD || (lastdur + duration) > Dbit_Max_TD) { frame_state = B_START_L; return; } frame_state++; if(frame_state == ACK) // шлем ACK { CECFramer(begval, recv_byte); frame_state = B_START_L; } else { if(begval) recv_byte |= 1 << (8 - bitnum); } } else // wait L { if(level != 0) { frame_state = B_START_L; return; } begval = duration < Dbit_Sample; lastdur = duration; frame_state++; return; } } void SendACK() { int timeout = timestamp + Ack_HD; PIO_Set(&output); while(timestamp < timeout ) ; PIO_Clear(&output); } int main() { Pin leds[] = { PINS_LEDS }; TRACE_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK); printf("-- Getting Started Project %s --\n\r", SOFTPACK_VERSION); printf("-- %s\n\r", BOARD_NAME); printf("-- Compiled: %s %s --\n\r", __DATE__, __TIME__); // Configuration ConfigurePit(); Pin input = {AT91C_PIO_PA30, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEGLITCH}; // GPIO // Pin input = {AT91C_PIO_PA30, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEGLITCH}; // INT Pin output = {AT91C_PIO_PA31, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT}; PIO_Configure(&leds[0], sizeof(leds) / sizeof(Pin)); PIO_Set(&leds[0]); PIO_Clear(&leds[1]); PIO_Configure(&input, 1); PIO_Configure(&output, 1); PIO_Clear(&output); // AIC_ConfigureIT(AT91C_ID_IRQ1, AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE | AT91C_AIC_PRIOR_HIGHEST, ISR_IRQ1); waiting_edge = 0; lasttimestamp = 0; // AIC_EnableIT(AT91C_ID_IRQ1); int lasttimestamp, state, laststate = 1; frame_state = B_START_L; //// while(1) { state = PIO_Get(&input); if(state) { PIO_Set(&leds[0]); PIO_Clear(&leds[1]); } else { PIO_Set(&leds[1]); PIO_Clear(&leds[0]); } if(laststate != state) { int val = timestamp; AnalizeT(!state, val - lasttimestamp); lasttimestamp = val; } laststate = state; } return 0; } |
Автор: | DELme [ Ср янв 12, 2011 12:22:28 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
Тем временем пришёл ответ от Австралийского производителя: Цитата: Thank you for your patience while I have tried to find out more details re the ID#842, "HDMI CEC Control Box". Unfortunately, our Factory has been very slow over the past week and I have once again made Inquiries on your behalf. I hope to contact back to you very soon with details as required. Best Regards, Chris Bailey. Manager sales@converters.tv Новый год он и в австралии - новый год ![]() |
Автор: | qq-q-qq [ Вт окт 25, 2011 06:26:59 ] |
Заголовок сообщения: | Re: CEC (HDMI/consumer electronics control) |
USB - HDMI-CEC Adapter: http://www.tested.com/news/usb-to-cec-a ... ideo/2789/ http://www.missingremote.com/news/2011- ... dapter-pcs http://www.pulse-eight.com/store/produc ... x#overview Железо "The CEC adapter ships on September 26 for $47.98." http://www.pulse-eight.com/store/produc ... #downloads Windows Driver http://packages.pulse-eight.net/ XBMC for Ubuntu Latest stable version + OpenELEC+Pulse Latest stable version: r8629 Кто-нибудь пробовал как оно в работе? |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |