Пн мар 07, 2016 21:26:17
Вт мар 08, 2016 01:29:42
/*
/// таймер TIM2 72мгц - IR , вход CH1 + CH4
TIM2->PSC = 720;
TIM2->CCMR1|=TIM_CCMR1_CC1S_0 | TIM_CCMR1_IC2F_3; //TI1FP1+фильтр
TIM2->CCMR1 |= (TIM_CCMR1_OC2M_2|TIM_CCMR1_OC2M_1);
TIM2->CCMR2|=TIM_CCMR2_CC4S_1 | TIM_CCMR2_IC4F_3; //TI1FP2+фильтр
TIM2->CCR2 = 15800 ; // детектор тишины
TIM2->SMCR = (5<<4) | 4; //TI1FP1+Reset Mode
TIM2->CCER|= TIM_CCER_CC1E | TIM_CCER_CC4P | TIM_CCER_CC4E | TIM_CCER_CC2E;
TIM2->DIER = TIM_DIER_CC1IE | TIM_DIER_CC2IE; // прерывание от захвата и тишины
TIM2->CR1 = TIM_CR1_CEN;
*/
volatile uint32_t data_IR;
volatile char *time2_data;
_bitFlag table_simvol_bits;
_bitFlag time2_data_IR_RE;
#define IR_ZERO_L 56 // время передачи нуля
void TIM2_IRQHandler (void)
{
uint16_t tmp_H;
uint16_t tmp_L;
static uint8_t nomer_bit = 32;
static uint8_t status_bit = 0;
static uint32_t time2_data_IR;
if (TIM2->SR & TIM_SR_CC2IF)
{ TIM2->SR = 0; nomer_bit = 32;status_bit = 0; return;}
else
{
tmp_L = TIM2-> CCR4; tmp_H = (TIM2->CCR1) - tmp_L;
if (status_bit ==0 )
{ if ((tmp_H < ((uint16_t)IR_ZERO_L * 1.25)) && (tmp_L > ((uint16_t)IR_ZERO_L * 7.75))
&& (tmp_L < ((uint16_t)IR_ZERO_L * 8.25)))
{ nomer_bit = 32; time2_data_IR =0;status_bit++;}else; return; }else;
if (status_bit == 1 )
{ if (tmp_H < ((uint16_t)IR_ZERO_L * 1.25))
{ if (tmp_L < ((uint16_t)IR_ZERO_L * 1.25)) nomer_bit--;
else
{ if (tmp_L < ((uint16_t)IR_ZERO_L * 3.25))
{ nomer_bit--; time2_data_IR |= (uint32_t) 1 << nomer_bit;} else;
}
} else status_bit = 0;
if (nomer_bit == 0)
{data_IR = time2_data_IR; sTask_wake(&table_simvol_bits); status_bit++; return;} else;
}else;
if (status_bit == 2 ) // H903-L4000; (H56-L224; H900-L9627;) // (H900-L4000; H56-L228) lg
{ if ((tmp_H > ((uint16_t)IR_ZERO_L * 15.75)) && (tmp_L > ((uint16_t)IR_ZERO_L * 69))
&& (tmp_L < ((uint16_t)IR_ZERO_L * 73))) status_bit++;
else status_bit = 0; return;
}else;
if (status_bit == 3 )
{ if ((tmp_H < ((uint16_t)IR_ZERO_L * 1.25)) && (tmp_L > ((uint16_t)IR_ZERO_L * 3.75))
&& (tmp_L < ((uint16_t)IR_ZERO_L * 4.25))) status_bit++;
else status_bit = 0; return;
}else;
if (status_bit == 4 )
{ if ((tmp_H > ((uint16_t)IR_ZERO_L * 15.75)) && (tmp_L > ((uint16_t)IR_ZERO_L * 166))
&& (tmp_L < ((uint16_t)IR_ZERO_L * 176)))
{status_bit = 3; time2_data_IR_RE = 1;}
else status_bit = 0; return;
}else;
}
}
void table_simvol (void)
{
for(;;)
{
if (data_IR == 0) {time2_data = ".........."; } else;
if (( data_IR >> 16) == 0x00FF) // пульт от плеера
{
data_IR = data_IR & 0xFFFF;
if (data_IR == 0x38c7) {time2_data = "POWER"; } else;
if (data_IR == 0xd22d) {time2_data = "LCD_ON/OF"; } else;
if (data_IR == 0xda25) {time2_data = "MODE"; } else;
if (data_IR == 0x20df) {time2_data = "3D"; } else;
if (data_IR == 0x5aa5) {time2_data = "PROG"; } else;
if (data_IR == 0x50af) {time2_data = "MITE"; } else;
if (data_IR == 0x00ff) {time2_data = "REPEAT"; } else;
if (data_IR == 0x08f7) {time2_data = "A-B"; } else;
if (data_IR == 0xa25d) {time2_data = "1"; } else;
if (data_IR == 0xe817) {time2_data = "2"; } else;
if (data_IR == 0x48b7) {time2_data = "3"; } else;
if (data_IR == 0xb847) {time2_data = "TITLE"; } else;
if (data_IR == 0x28d7) {time2_data = "4"; } else;
if (data_IR == 0xe01f) {time2_data = "5"; } else;
if (data_IR == 0xb04f) {time2_data = "6"; } else;
if (data_IR == 0x1ae5) {time2_data = "ANGLE"; } else;
if (data_IR == 0xd827) {time2_data = "7"; } else;
if (data_IR == 0x926d) {time2_data = "8"; } else;
if (data_IR == 0x22dd) {time2_data = "9"; } else;
if (data_IR == 0x3ac5) {time2_data = "SUBTITLE"; } else;
if (data_IR == 0x9867) {time2_data = "+10"; } else;
if (data_IR == 0x7887) {time2_data = "0"; } else;
if (data_IR == 0x7a85) {time2_data = "MENU"; } else;
if (data_IR == 0xc837) {time2_data = "OSD"; } else;
if (data_IR == 0xf00f) {time2_data = "ZOOM"; } else;
if (data_IR == 0x728d) {time2_data = "CH+"; } else;
if (data_IR == 0x629d) {time2_data = "PBC"; } else;
if (data_IR == 0x9a65) {time2_data = "SLOW"; } else;
if (data_IR == 0x30cf) {time2_data = "<<-"; } else;
if (data_IR == 0x609f) {time2_data = "ENTER"; } else;
if (data_IR == 0xa05f) {time2_data = "->>"; } else;
if (data_IR == 0xc23d) {time2_data = "RETURN"; } else;
if (data_IR == 0xf20d) {time2_data = "AUDIO"; } else;
if (data_IR == 0xb24d) {time2_data = "CH-"; } else;
if (data_IR == 0x32cd) {time2_data = "GOTO"; } else;
if (data_IR == 0xe21d) {time2_data = "SETUP"; } else;
if (data_IR == 0x10ef) {time2_data = "VOL+"; } else;
if (data_IR == 0x42bd) {time2_data = "<<"; } else;
if (data_IR == 0x02fd) {time2_data = ">>"; } else;
if (data_IR == 0xc03f) {time2_data = "STOP"; } else;
if (data_IR == 0x0af5) {time2_data = "VOL-"; } else;
if (data_IR == 0x807f) {time2_data = "|<<"; } else;
if (data_IR == 0x40bf) {time2_data = ">>|"; } else;
if (data_IR == 0x8877) {time2_data = "PLEY"; } else;
}else;
if (( data_IR >> 16) == 0x20DF) // пульт от телека LG
{
data_IR = data_IR & 0xFFFF;
if (data_IR == 0x10ef) {time2_data = "POWER"; } else;
if (data_IR == 0x0ff0) {time2_data = "TV/RADIO"; } else;
if (data_IR == 0x9c63) {time2_data = "SUBTITLE"; } else;
if (data_IR == 0x06f9) {time2_data = "AD(PIP/*)"; } else;
if (data_IR == 0xd926) {time2_data = "TV/PC"; } else;
if (data_IR == 0xd02f) {time2_data = "INPUT"; } else;
if (data_IR == 0x8877) {time2_data = "1"; } else;
if (data_IR == 0x48b7) {time2_data = "2"; } else;
if (data_IR == 0xc837) {time2_data = "3"; } else;
if (data_IR == 0x28d7) {time2_data = "4"; } else;
if (data_IR == 0xa857) {time2_data = "5"; } else;
if (data_IR == 0x6897) {time2_data = "6"; } else;
if (data_IR == 0xe817) {time2_data = "7"; } else;
if (data_IR == 0x18e7) {time2_data = "8"; } else;
if (data_IR == 0x9867) {time2_data = "9"; } else;
if (data_IR == 0xca35) {time2_data = "LIST"; } else;
if (data_IR == 0x08f7) {time2_data = "0"; } else;
if (data_IR == 0x58a7) {time2_data = "Q.VIEW"; } else;
if (data_IR == 0x40bf) {time2_data = "VOL+"; } else;
if (data_IR == 0x7887) {time2_data = "FAV"; } else;
if (data_IR == 0x00ff) {time2_data = "CH+"; } else;
if (data_IR == 0xd52a) {time2_data = "GUIDE"; } else;
if (data_IR == 0xc03f) {time2_data = "VOL-"; } else;
if (data_IR == 0x906f) {time2_data = "MITE"; } else;
if (data_IR == 0x807f) {time2_data = "CH-"; } else;
if (data_IR == 0x4fb) {time2_data = "TEXT"; } else;
if (data_IR == 0x55aa) {time2_data = "INFO"; } else;
if (data_IR == 0x847b) {time2_data = "T.OPT"; } else;
if (data_IR == 0xc23d) {time2_data = "SETTINGS"; } else;
if (data_IR == 0x02fd) {time2_data = "TOP"; } else;
if (data_IR == 0xa25d) {time2_data = "Q.MENU"; } else;
if (data_IR == 0xe01f) {time2_data = "LEFT"; } else;
if (data_IR == 0x22dd) {time2_data = "OK"; } else;
if (data_IR == 0x609f) {time2_data = "RIGHT"; } else;
if (data_IR == 0x14eb) {time2_data = "BACK"; } else;
if (data_IR == 0x827d) {time2_data = "BOTTOM"; } else;
if (data_IR == 0xda25) {time2_data = "EXIT"; } else;
if (data_IR == 0x7e81) {time2_data = "smplink"; } else;
if (data_IR == 0xbd42) {time2_data = "RES/*"; } else;
if (data_IR == 0x8d72) {time2_data = "STOP"; } else;
if (data_IR == 0xf10e) {time2_data = "<<"; } else;
if (data_IR == 0x0df2) {time2_data = "PLEY"; } else;
if (data_IR == 0x5da2) {time2_data = "PAUSE"; } else;
if (data_IR == 0x718e) {time2_data = ">>"; } else;
if (data_IR == 0x4eb1) {time2_data = "RED"; } else;
if (data_IR == 0x8e71) {time2_data = "GREEN"; } else;
if (data_IR == 0xc639) {time2_data = "YELLOW"; } else;
if (data_IR == 0x8679) {time2_data = "BLUE"; } else;
}else;
sTask_wait (&table_simvol_bits);
}
Вт мар 08, 2016 11:12:41
Вт мар 08, 2016 13:35:17
Вт мар 08, 2016 13:46:03
AVI-crak писал(а):У меня работает, а у вас?
NEC remote power button
NC 0xF4 Инверсия комманды
C 0x0B Комманда
NA 0xF7 инверсия адреса
A 0x08 адрес
received bites | LOST Bites |
F 4 | 0 B | F X | X X
1111 0100 | 0000 1011 | 1111 01LL | LLLL LLLL
Вт мар 08, 2016 14:50:53
Ican писал(а):AVI-crak писал(а):У меня работает, а у вас?
А у меня не работает
Заполнение идет с конца, т.е. потерянные байты L находятся после стартовой посылки и паузы.
Чт мар 10, 2016 21:39:57
Чт апр 07, 2016 13:49:45
Чт апр 07, 2016 19:55:58
Пт апр 08, 2016 13:36:05
Поиграйся двумя разными пультами одновременно
Сб май 14, 2022 21:44:41
Ср дек 14, 2022 18:22:21
Ср дек 14, 2022 20:53:16
Чт дек 15, 2022 01:02:21
Сб янв 21, 2023 22:04:22
del
del
Сб янв 21, 2023 22:20:53
Сб янв 21, 2023 22:31:07
Вс янв 22, 2023 01:22:41
Вс янв 22, 2023 04:00:44
Вс янв 22, 2023 09:58:40
Reflector писал(а):Скомпилируется только если подставить подходящий таймер, канал и пин.