]> cloudbase.mooo.com Git - irmp.git/commitdiff
Version 2.3.0: some timer and variable name corrections
authorukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Fri, 5 Oct 2012 08:12:41 +0000 (08:12 +0000)
committerukw <ukw@aeb2e35e-bfc4-4214-b83c-9e8de998ed28>
Fri, 5 Oct 2012 08:12:41 +0000 (08:12 +0000)
git-svn-id: svn://mikrocontroller.net/irmp@104 aeb2e35e-bfc4-4214-b83c-9e8de998ed28

README.txt
irmp.c
irmpprotocols.h
irsnd.c
irsndconfig.h

index 3882add3d1b5fc3ce66ac4c0ba6bd70c9765320e..de5971d8d5983b92acb07049091dc301187a2c6b 100644 (file)
@@ -1,8 +1,8 @@
 IRMP - Infrared Multi Protocol Decoder\r
 --------------------------------------\r
 \r
-Version IRMP:  2.2.4 11.07.2012\r
-Version IRSND: 2.2.3 18.06.2012\r
+Version IRMP:  2.3.0 05.10.2012\r
+Version IRSND: 2.3.0 05.10.2012\r
 \r
 Dokumentation:\r
  \r
diff --git a/irmp.c b/irmp.c
index 5cd0c721f894f9c5e21ab1d12004ab43d3d34b9a..6f2f99470085681f7edcb1b335409de4d9cc9526 100644 (file)
--- a/irmp.c
+++ b/irmp.c
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2012 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmp.c,v 1.127 2012/07/11 13:13:50 fm Exp $\r
+ * $Id: irmp.c,v 1.128 2012/10/05 07:58:39 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
@@ -3120,23 +3120,23 @@ irmp_ISR (void)
 #if IRMP_SUPPORT_KASEIKYO_PROTOCOL == 1\r
                         if (irmp_param.protocol == IRMP_KASEIKYO_PROTOCOL)\r
                         {\r
-                            uint8_t xor;\r
+                            uint8_t xor_value;\r
                             // ANALYZE_PRINTF ("0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n",\r
                             //                 xor_check[0], xor_check[1], xor_check[2], xor_check[3], xor_check[4], xor_check[5]);\r
 \r
-                            xor = (xor_check[0] & 0x0F) ^ ((xor_check[0] & 0xF0) >> 4) ^ (xor_check[1] & 0x0F) ^ ((xor_check[1] & 0xF0) >> 4);\r
+                            xor_value = (xor_check[0] & 0x0F) ^ ((xor_check[0] & 0xF0) >> 4) ^ (xor_check[1] & 0x0F) ^ ((xor_check[1] & 0xF0) >> 4);\r
 \r
-                            if (xor != (xor_check[2] & 0x0F))\r
+                            if (xor_value != (xor_check[2] & 0x0F))\r
                             {\r
-                                ANALYZE_PRINTF ("error 4: wrong XOR check for customer id: 0x%1x 0x%1x\n", xor, xor_check[2] & 0x0F);\r
+                                ANALYZE_PRINTF ("error 4: wrong XOR check for customer id: 0x%1x 0x%1x\n", xor_value, xor_check[2] & 0x0F);\r
                                 irmp_ir_detected = FALSE;\r
                             }\r
 \r
-                            xor = xor_check[2] ^ xor_check[3] ^ xor_check[4];\r
+                            xor_value = xor_check[2] ^ xor_check[3] ^ xor_check[4];\r
 \r
-                            if (xor != xor_check[5])\r
+                            if (xor_value != xor_check[5])\r
                             {\r
-                                ANALYZE_PRINTF ("error 5: wrong XOR check for data bits: 0x%02x 0x%02x\n", xor, xor_check[5]);\r
+                                ANALYZE_PRINTF ("error 5: wrong XOR check for data bits: 0x%02x 0x%02x\n", xor_value, xor_check[5]);\r
                                 irmp_ir_detected = FALSE;\r
                             }\r
 \r
index 89b622607122b1a0b5db2b4de0a43c65d7897b35..dd7bcba16c73f402485578e877b8f4fc039df895 100644 (file)
@@ -5,7 +5,7 @@
  *\r
  * Copyright (c) 2012 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmpprotocols.h,v 1.5 2012/07/11 12:44:30 fm Exp $\r
+ * $Id: irmpprotocols.h,v 1.6 2012/10/05 07:58:39 fm Exp $\r
  *\r
  * This program is free software; you can redistribute it and/or modify\r
  * it under the terms of the GNU General Public License as published by\r
@@ -484,7 +484,7 @@ typedef uint8_t     PAUSE_LEN;
 #define THOMSON_FLAGS                           0                               // flags\r
 \r
 #define BOSE_START_BIT_PULSE_TIME               1060.0e-6                       // 1060 usec pulse\r
-#define BOSE_START_BIT_PAUSE_TIME               1430.0e-6                       // 1430 usec pause\r
+#define BOSE_START_BIT_PAUSE_TIME               1425.0e-6                       // 1425 usec pause\r
 #define BOSE_PULSE_TIME                          550.0e-6                       //  550 usec pulse\r
 #define BOSE_1_PAUSE_TIME                       1425.0e-6                       // 1425 usec pause\r
 #define BOSE_0_PAUSE_TIME                        437.0e-6                       //  437 usec pause\r
diff --git a/irsnd.c b/irsnd.c
index caac904b944b7bf1f0a689069e7b477941a20b17..ad14dd85c450c85557561ba38e9fb8660f08c62d 100644 (file)
--- a/irsnd.c
+++ b/irsnd.c
@@ -13,7 +13,7 @@
  * ATmega164, ATmega324, ATmega644,  ATmega644P, ATmega1284\r
  * ATmega88,  ATmega88P, ATmega168,  ATmega168P, ATmega328P\r
  *\r
- * $Id: irsnd.c,v 1.59 2012/06/18 09:00:46 fm Exp $\r
+ * $Id: irsnd.c,v 1.60 2012/10/05 07:58:39 fm Exp $\r
  *\r
  * This program is free software; you can redistribute it and/or modify\r
  * it under the terms of the GNU General Public License as published by\r
 \r
 #include "irsnd.h"\r
 \r
+#ifndef F_CPU\r
+#  error F_CPU unkown\r
+#endif\r
+\r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
  *  ATtiny pin definition of OC0A / OC0B\r
  *  ATmega pin definition of OC2 / OC2A / OC2B / OC0 / OC0A / OC0B\r
 #  define IRSND_FREQ_56_KHZ                     (IRSND_FREQ_TYPE) (56000)\r
 #  define IRSND_FREQ_455_KHZ                    (IRSND_FREQ_TYPE) (455000)\r
 #else                                           // AVR\r
+#  if F_CPU >= 16000000L\r
+#    define AVR_PRESCALER                       8\r
+#  else\r
+#    define AVR_PRESCALER                       1\r
+#  endif\r
 #  define IRSND_FREQ_TYPE                       uint8_t\r
-#  define IRSND_FREQ_30_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 30000 / 2) - 1)\r
-#  define IRSND_FREQ_32_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 32000 / 2) - 1)\r
-#  define IRSND_FREQ_36_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 36000 / 2) - 1)\r
-#  define IRSND_FREQ_38_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 38000 / 2) - 1)\r
-#  define IRSND_FREQ_40_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 40000 / 2) - 1)\r
-#  define IRSND_FREQ_56_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 56000 / 2) - 1)\r
-#  define IRSND_FREQ_455_KHZ                    (IRSND_FREQ_TYPE) ((F_CPU / 455000 / 2) - 1)\r
+#  define IRSND_FREQ_30_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 30000 / AVR_PRESCALER / 2) - 1)\r
+#  define IRSND_FREQ_32_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 32000 / AVR_PRESCALER / 2) - 1)\r
+#  define IRSND_FREQ_36_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 36000 / AVR_PRESCALER / 2) - 1)\r
+#  define IRSND_FREQ_38_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 38000 / AVR_PRESCALER / 2) - 1)\r
+#  define IRSND_FREQ_40_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 40000 / AVR_PRESCALER / 2) - 1)\r
+#  define IRSND_FREQ_56_KHZ                     (IRSND_FREQ_TYPE) ((F_CPU / 56000 / AVR_PRESCALER / 2) - 1)\r
+#  define IRSND_FREQ_455_KHZ                    (IRSND_FREQ_TYPE) ((F_CPU / 455000 / AVR_PRESCALER / 2) - 1)\r
 #endif\r
 \r
 #define FDC_START_BIT_PULSE_LEN                 (uint8_t)(F_INTERRUPTS * FDC_START_BIT_PULSE_TIME + 0.5)\r
@@ -366,7 +375,6 @@ static void                                     (*irsnd_callback_ptr) (uint8_t);
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
  *  Switch PWM on\r
- *  @details  Switches PWM on with a narrow spike on all 3 channels -> leds glowing\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  */\r
 static void\r
@@ -605,16 +613,32 @@ irsnd_init (void)
 \r
 #    if   IRSND_OCx == IRSND_OC2                                                    // use OC2\r
         TCCR2 = (1<<WGM21);                                                         // CTC mode\r
-        TCCR2 |= (1<<CS20);                                                         // 0x01, start Timer 2, no prescaling\r
+#       if AVR_PRESCALER == 8\r
+          TCCR2 |= (1<<CS21);                                                       // start Timer 2, prescaler = 8\r
+#       else\r
+          TCCR2 |= (1<<CS20);                                                       // start Timer 2, prescaler = 1\r
+#       endif\r
 #    elif IRSND_OCx == IRSND_OC2A || IRSND_OCx == IRSND_OC2B                        // use OC2A or OC2B\r
         TCCR2A = (1<<WGM21);                                                        // CTC mode\r
-        TCCR2B |= (1<<CS20);                                                        // 0x01, start Timer 2, no prescaling\r
+#       if AVR_PRESCALER == 8\r
+          TCCR2B |= (1<<CS21);                                                      // start Timer 2, prescaler = 8\r
+#       else\r
+          TCCR2B |= (1<<CS20);                                                      // start Timer 2, prescaler = 1\r
+#       endif\r
 #    elif IRSND_OCx == IRSND_OC0                                                    // use OC0\r
         TCCR0 = (1<<WGM01);                                                         // CTC mode\r
-        TCCR0 |= (1<<CS00);                                                         // 0x01, start Timer 0, no prescaling\r
+#       if AVR_PRESCALER == 8\r
+          TCCR0 |= (1<<CS01);                                                       // start Timer 0, prescaler = 8\r
+#       else\r
+          TCCR0 |= (1<<CS00);                                                       // start Timer 0, prescaler = 1\r
+#       endif\r
 #    elif IRSND_OCx == IRSND_OC0A || IRSND_OCx == IRSND_OC0B                        // use OC0A or OC0B\r
         TCCR0A = (1<<WGM01);                                                        // CTC mode\r
-        TCCR0B |= (1<<CS00);                                                        // 0x01, start Timer 0, no prescaling\r
+#       if AVR_PRESCALER == 8\r
+          TCCR0B |= (1<<CS01);                                                      // start Timer 0, prescaler = 8\r
+#       else\r
+          TCCR0B |= (1<<CS00);                                                      // start Timer 0, prescaler = 1\r
+#       endif\r
 #    else\r
 #      error wrong value of IRSND_OCx\r
 #    endif\r
@@ -834,24 +858,24 @@ irsnd_send_data (IRMP_DATA * irmp_data_p, uint8_t do_wait)
 #if IRSND_SUPPORT_KASEIKYO_PROTOCOL == 1\r
         case IRMP_KASEIKYO_PROTOCOL:\r
         {\r
-            uint8_t xor;\r
+            uint8_t xor_value;\r
             uint16_t genre2;\r
 \r
             address = bitsrevervse (irmp_data_p->address, KASEIKYO_ADDRESS_LEN);\r
             command = bitsrevervse (irmp_data_p->command, KASEIKYO_COMMAND_LEN + 4);\r
             genre2 = bitsrevervse ((irmp_data_p->flags & ~IRSND_REPETITION_MASK) >> 4, 4);\r
 \r
-            xor = ((address & 0x000F) ^ ((address & 0x00F0) >> 4) ^ ((address & 0x0F00) >> 8) ^ ((address & 0xF000) >> 12)) & 0x0F;\r
+            xor_value = ((address & 0x000F) ^ ((address & 0x00F0) >> 4) ^ ((address & 0x0F00) >> 8) ^ ((address & 0xF000) >> 12)) & 0x0F;\r
 \r
             irsnd_buffer[0] = (address & 0xFF00) >> 8;                                                          // AAAAAAAA\r
             irsnd_buffer[1] = (address & 0x00FF);                                                               // AAAAAAAA\r
-            irsnd_buffer[2] = xor << 4 | (command & 0x000F);                                                    // XXXXCCCC\r
+            irsnd_buffer[2] = xor_value << 4 | (command & 0x000F);                                              // XXXXCCCC\r
             irsnd_buffer[3] = (genre2 << 4) | (command & 0xF000) >> 12;                                         // ggggCCCC\r
             irsnd_buffer[4] = (command & 0x0FF0) >> 4;                                                          // CCCCCCCC\r
 \r
-            xor = irsnd_buffer[2] ^ irsnd_buffer[3] ^ irsnd_buffer[4];\r
+            xor_value = irsnd_buffer[2] ^ irsnd_buffer[3] ^ irsnd_buffer[4];\r
 \r
-            irsnd_buffer[5] = xor;\r
+            irsnd_buffer[5] = xor_value;\r
             irsnd_busy      = TRUE;\r
             break;\r
         }\r
@@ -2145,6 +2169,8 @@ irsnd_ISR (void)
                         }\r
                         else\r
                         {\r
+                            // printf ("current_bit: %d  %d < %d  %d < %d\n", current_bit, pause_counter, pause_len, pulse_counter, pulse_len);\r
+\r
                             if (pause_counter < pause_len)\r
                             {\r
                                 if (pause_counter == 0)\r
@@ -2263,6 +2289,15 @@ main (int argc, char ** argv)
         }\r
 \r
         putchar ('\n');\r
+\r
+        (void) irsnd_send_data (&irmp_data, TRUE);\r
+\r
+        while (irsnd_busy)\r
+        {\r
+            irsnd_ISR ();\r
+        }\r
+\r
+        putchar ('\n');\r
     }\r
     else\r
     {\r
index 59ecd41983276d97371e5ea75c905ff67a3098ab..46e33be48708becfe58a9bd2f8ef29d7d37ec74e 100644 (file)
@@ -5,7 +5,7 @@
  *\r
  * Copyright (c) 2010-2011 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irsndconfig.h,v 1.40 2012/06/18 09:00:46 fm Exp $\r
+ * $Id: irsndconfig.h,v 1.41 2012/10/05 07:58:39 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
@@ -48,7 +48,7 @@
 #define IRSND_SUPPORT_DENON_PROTOCOL            1       // DENON, Sharp         >= 10000                 ~200 bytes\r
 \r
 // more protocols, enable here!                 Enable  Remarks                 F_INTERRUPTS            Program Space\r
-#define IRSND_SUPPORT_RC5_PROTOCOL              0       // RC5                  >= 10000                 ~150 bytes\r
+#define IRSND_SUPPORT_RC5_PROTOCOL              1       // RC5                  >= 10000                 ~150 bytes\r
 #define IRSND_SUPPORT_RC6_PROTOCOL              0       // RC6                  >= 10000                 ~250 bytes\r
 #define IRSND_SUPPORT_RC6A_PROTOCOL             0       // RC6A                 >= 10000                 ~250 bytes\r
 #define IRSND_SUPPORT_JVC_PROTOCOL              0       // JVC                  >= 10000                 ~150 bytes\r