From 6db2522c3e6c0e2cf0958dc4bdcdaf5ed0fbbcc2 Mon Sep 17 00:00:00 2001 From: ukw Date: Thu, 1 Jul 2010 08:53:53 +0000 Subject: [PATCH] Version 1.7.2: added timeout for NEC repetition frames git-svn-id: svn://mikrocontroller.net/irmp@41 aeb2e35e-bfc4-4214-b83c-9e8de998ed28 --- IR-Data/nec-repetition.txt | 10 ++-------- IR-Data/nec.txt | 14 ++++---------- README.txt | 2 +- irmp.aps | 2 +- irmp.c | 37 +++++++++++++++++++++++++++++-------- irmp.exe | Bin 19968 -> 19968 bytes 6 files changed, 37 insertions(+), 28 deletions(-) diff --git a/IR-Data/nec-repetition.txt b/IR-Data/nec-repetition.txt index 93fdc90..c3bf2e7 100644 --- a/IR-Data/nec-repetition.txt +++ b/IR-Data/nec-repetition.txt @@ -1,8 +1,2 @@ -# NEC HOME -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111110000001111100000001111000000011111111111111110000001111100000001111000000011111000000111110000001111111111111111000000011111111111111110000001111100000001111000000011111111111111110000001111111111111111000000011111111111111110000001111111111111111000000011111000000111110000000111111111111111000000011111111111111110000001111100000001111000000011111000000111110000001111100000001111111111111111000000111110000000111100000001111111111111111000000111111111111111100000001111111111111111000000111111111111111100000001111111111111111000000111111111111111 -# rep: -00000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111000000011111111111111 -# rep: -00000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111000000011111111111111 -# rep: -00000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111000000011111111111111 +# NEC HOME + 3 x repetition +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111110000001111100000001111000000011111111111111110000001111100000001111000000011111000000111110000001111111111111111000000011111111111111110000001111100000001111000000011111111111111110000001111111111111111000000011111111111111110000001111111111111111000000011111000000111110000000111111111111111000000011111111111111110000001111100000001111000000011111000000111110000001111100000001111111111111111000000111110000000111100000001111111111111111000000111111111111111100000001111111111111111000000111111111111111100000001111111111111111000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111000000011111111111111 diff --git a/IR-Data/nec.txt b/IR-Data/nec.txt index 4310c76..4753fb9 100644 --- a/IR-Data/nec.txt +++ b/IR-Data/nec.txt @@ -1,10 +1,4 @@ -0000# -10 - IR-cmd: 0x00E0 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111100000001111100000011111000000011110000000111110000000111100000001111000000011111000000111110000000111111111111111100000001111111111111111000000111111111111111100000001111111111111111000000011111111111111110000001111111111111111000000011111111111111110000000111111111111111100000011111111111111110000000111111111111111100000001111111111111111000000111110000000111110000001111100000011111000000011111000000111110000001111100000001111100000011111111111111110000000111111111111111100000001111111111111111000000111111111111111100000001111111111111111000000011111111111111111111 -# repetion frame -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111110000000111111111111111111111111111 -# repetion frame -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111110000000111111111111111111111111111 -# play/pause - IR-cmd: 0x0060 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111110000001111100000001111100000011111000000111110000000111110000001111100000011111000000011111000000111111111111111100000001111111111111111000000011111111111111110000001111111111111111000000011111111111111110000000111111111111111100000011111111111111110000000111111111111111100000001111000000011111111111111110000000111111111111111100000001111000000011111000000111110000000111100000001111100000011111111111111110000000111110000001111100000001111111111111111000000011111111111111100000001111111111111111000000011111111111111110000000111111111111111100000001111111111111111111 -# repetion frame -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111110000000111111111111111111111111111 +0000# -10 - IR-cmd: 0x00E0 + 2 repetition frames +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111100000001111100000011111000000011110000000111110000000111100000001111000000011111000000111110000000111111111111111100000001111111111111111000000111111111111111100000001111111111111111000000011111111111111110000001111111111111111000000011111111111111110000000111111111111111100000011111111111111110000000111111111111111100000001111111111111111000000111110000000111110000001111100000011111000000011111000000111110000001111100000001111100000011111111111111110000000111111111111111100000001111111111111111000000111111111111111100000001111111111111111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111110000000111111111111111111111111111 +# play/pause - IR-cmd: 0x0060 + 1 repetition frame +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111110000001111100000001111100000011111000000111110000000111110000001111100000011111000000011111000000111111111111111100000001111111111111111000000011111111111111110000001111111111111111000000011111111111111110000000111111111111111100000011111111111111110000000111111111111111100000001111000000011111111111111110000000111111111111111100000001111000000011111000000111110000000111100000001111100000011111111111111110000000111110000001111100000001111111111111111000000011111111111111100000001111111111111111000000011111111111111110000000111111111111111100000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111110000000111111111111111111111111111 diff --git a/README.txt b/README.txt index e5b3992..0050468 100644 --- a/README.txt +++ b/README.txt @@ -1,7 +1,7 @@ IRMP - Infrared Multi Protocol Decoder -------------------------------------- -Version IRMP: 1.7.1 26.06.2010 +Version IRMP: 1.7.2 01.07.2010 Version IRSND: 1.7.0 25.06.2010 Dokumentation: diff --git a/irmp.aps b/irmp.aps index 65904eb..fd607a2 100644 --- a/irmp.aps +++ b/irmp.aps @@ -1 +1 @@ -irmp07-Jan-2010 20:23:4923-Jun-2010 08:52:11241007-Jan-2010 20:23:4944, 18, 0, 670AVR GCCdefault\irmp.elfC:\avr\irmp\AVR SimulatorATmega88.xmlfalseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000main.cirmp.cirmp.hirmpconfig.hdefault\irmp.lssdefault\irmp.mapdefaultNOatmega88111irmp.elfdefault\0-Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefault1C:\Program Files\WinAVR-20090313\bin\avr-gcc.exeC:\Program Files\WinAVR-20090313\utils\bin\make.exeC:\avr\irmp\irmp.hC:\avr\irmp\irmpconfig.hC:\avr\irmp\main.cC:\avr\irmp\irmp.c00000main.c100001irmp.c100002irmp.h100003irmpconfig.h1 +irmp07-Jan-2010 20:23:4929-Jun-2010 11:22:31241007-Jan-2010 20:23:4944, 18, 0, 670AVR GCCdefault\irmp.elfC:\avr\irmp\AVR SimulatorATmega88.xmlfalseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000main.cirmp.cirmp.hirmpconfig.hdefault\irmp.lssdefault\irmp.mapdefaultNOatmega88111irmp.elfdefault\0-Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefault1C:\Program Files\WinAVR-20100110\bin\avr-gcc.exeC:\Program Files\WinAVR-20100110\utils\bin\make.exe00000main.c100001irmp.c100002irmp.h100003irmpconfig.h1 diff --git a/irmp.c b/irmp.c index 99439d6..861836c 100644 --- a/irmp.c +++ b/irmp.c @@ -3,7 +3,7 @@ * * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de * - * $Id: irmp.c,v 1.73 2010/06/26 18:13:11 fm Exp $ + * $Id: irmp.c,v 1.75 2010/07/01 09:00:16 fm Exp $ * * ATMEGA88 @ 8 MHz * @@ -352,7 +352,7 @@ typedef uint8_t PAUSE_LEN; #endif #define IRMP_TIMEOUT_LEN (PAUSE_LEN)(F_INTERRUPTS * IRMP_TIMEOUT_TIME + 0.5) -#define IRMP_KEY_REPETITION_LEN (uint16_t)(F_INTERRUPTS * 150.0e-3 + 0.5) // autodetect key repetition within 150 msec +#define IRMP_KEY_REPETITION_LEN (uint16_t)(F_INTERRUPTS * 150.0e-3 + 0.5) // autodetect key repetition within 150 msec #define MIN_TOLERANCE_00 1.0 // -0% #define MAX_TOLERANCE_00 1.0 // +0% @@ -404,6 +404,13 @@ typedef uint8_t PAUSE_LEN; #define NEC_1_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * NEC_1_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1) #define NEC_0_PAUSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * NEC_0_PAUSE_TIME * MIN_TOLERANCE_40 + 0.5) - 1) #define NEC_0_PAUSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * NEC_0_PAUSE_TIME * MAX_TOLERANCE_40 + 0.5) + 1) +// autodetect nec repetition frame within 50 msec: +// NEC seems to send the first repetition frame after 40ms, further repetition frames after 100 ms +#if 0 +#define NEC_FRAME_REPEAT_PAUSE_LEN_MAX (uint16_t)(F_INTERRUPTS * NEC_FRAME_REPEAT_PAUSE_TIME * MAX_TOLERANCE_20 + 0.5) +#else +#define NEC_FRAME_REPEAT_PAUSE_LEN_MAX (uint16_t)(F_INTERRUPTS * 100.0e-3 * MAX_TOLERANCE_20 + 0.5) +#endif #define SAMSUNG_START_BIT_PULSE_LEN_MIN ((uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PULSE_TIME * MIN_TOLERANCE_10 + 0.5) - 1) #define SAMSUNG_START_BIT_PULSE_LEN_MAX ((uint8_t)(F_INTERRUPTS * SAMSUNG_START_BIT_PULSE_TIME * MAX_TOLERANCE_10 + 0.5) + 1) @@ -630,9 +637,9 @@ irmp_uart_init (void) UART0_UBRRL = UBRRL_VALUE; #if USE_2X - UART0_UCSRA = (1< %d\n", + repetition_counter, NEC_FRAME_REPEAT_PAUSE_LEN_MAX); + irmp_ir_detected = FALSE; + } } #endif // IRMP_SUPPORT_NEC_PROTOCOL irmp_protocol = irmp_param.protocol; diff --git a/irmp.exe b/irmp.exe index def6a759335c880a940713ba219ea664e9309995..8c536cc61a404ef20a88608138a8bad7c3a1e615 100644 GIT binary patch delta 4422 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 E4eNWNUjP6A delta 4147 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 -- 2.39.2