]> cloudbase.mooo.com Git - irmp.git/blobdiff - irmp-main-pic-12F1840.c
Version 3.0.7 - added SAMSUNGAH protocol, improved some code for ESP8266
[irmp.git] / irmp-main-pic-12F1840.c
index 821e9e544f2574e7e6038b34b93470cacdd8116f..3ade38dfc1fecb3c347617ef1e1758226e87db2c 100644 (file)
@@ -1,11 +1,11 @@
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
  * irmp-main-pic-12F1840.c - example main module for PIC 12f1840\r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
  * irmp-main-pic-12F1840.c - example main module for PIC 12f1840\r
- * \r
+ *\r
  * IR decoder using IRMP\r
  *\r
  * (c) 2014 Wolfgang Strobl (news4 at mystrobl.de) 2014-03-12:2014-07-20\r
  *\r
  * IR decoder using IRMP\r
  *\r
  * (c) 2014 Wolfgang Strobl (news4 at mystrobl.de) 2014-03-12:2014-07-20\r
  *\r
- * $Id: irmp-main-pic-12F1840.c,v 1.4 2016/09/09 08:01:11 fm Exp $\r
+ * $Id: irmp-main-pic-12F1840.c,v 1.6 2017/02/17 09:13:06 fm Exp $\r
  *\r
  * This demo module is runnable on a Microchip PIC 12F1840\r
  *\r
  *\r
  * This demo module is runnable on a Microchip PIC 12F1840\r
  *\r
  * (at your option) any later version.\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  */\r
  * (at your option) any later version.\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  */\r
\r
\r
-/* \r
 \r
 \r
-Hauptprogramm fuer den nachfolgenden Testaufbau, bestehend aus zwei mal \r
+\r
+/*\r
+\r
+Hauptprogramm fuer den nachfolgenden Testaufbau, bestehend aus zwei mal\r
 \r
 \r
              TSOP1736+        PIC12F1840\r
 \r
 \r
              TSOP1736+        PIC12F1840\r
@@ -32,12 +32,12 @@ Hauptprogramm fuer den nachfolgenden Testaufbau, bestehend aus zwei mal
 RS232 out  -|___|-------GP4--o|  |o--GP1 / ICSPCLK  ___    LED\r
 RS232 in   -|___|---Vpp/GP3--o|__|o--GP2-----------|___|- ->|---Vss\r
              10k\r
 RS232 out  -|___|-------GP4--o|  |o--GP1 / ICSPCLK  ___    LED\r
 RS232 in   -|___|---Vpp/GP3--o|__|o--GP2-----------|___|- ->|---Vss\r
              10k\r
-             \r
+\r
 auf einem Steckbrett. (Genauer gesagt, dies ist die aktuelle Beschaltung\r
 fuer V1.8,  V1.0 ist aber bzgl. IRMP-Empfang funktional identisch. Nicht eingezeichnet\r
 ist ein Abblockkondensator von 100nF ueber Vss und Vdd.\r
 \r
 auf einem Steckbrett. (Genauer gesagt, dies ist die aktuelle Beschaltung\r
 fuer V1.8,  V1.0 ist aber bzgl. IRMP-Empfang funktional identisch. Nicht eingezeichnet\r
 ist ein Abblockkondensator von 100nF ueber Vss und Vdd.\r
 \r
-Uebersetzt mit Microchip MPLAB XC8 C Compiler (Free Mode) V1.31 \r
+Uebersetzt mit Microchip MPLAB XC8 C Compiler (Free Mode) V1.31\r
 im stark gecrippelten "Free Mode".\r
 \r
 Memory Summary: (V 1.8)\r
 im stark gecrippelten "Free Mode".\r
 \r
 Memory Summary: (V 1.8)\r
@@ -49,13 +49,13 @@ Memory Summary: (V 1.8)
     ID Location space    used     0h (     0) of     4h bytes   (  0.0%)\r
 \r
 \r
     ID Location space    used     0h (     0) of     4h bytes   (  0.0%)\r
 \r
 \r
-Testaufbau: \r
+Testaufbau:\r
 \r
 Zwei Steckbretter,\r
 \r
 Zwei Steckbretter,\r
-urspruengliche Version des Programms als Empfaenger, \r
+urspruengliche Version des Programms als Empfaenger,\r
 aktuelle Version als Sender, Aufzeichnung mit putty,\r
 angeschlossen jeweils per USB2RS232-Kabel von Conrad\r
 aktuelle Version als Sender, Aufzeichnung mit putty,\r
 angeschlossen jeweils per USB2RS232-Kabel von Conrad\r
-(972543, basierend auf Prolific PL2303). Soft-UART \r
+(972543, basierend auf Prolific PL2303). Soft-UART\r
 fuer Input, da 12F1820 keine Kontrolle ueber Input-\r
 Polaritaet erlaubt und ich fuer Testaufbauten eine\r
 Minimalbeschaltung bevorzuge.\r
 fuer Input, da 12F1820 keine Kontrolle ueber Input-\r
 Polaritaet erlaubt und ich fuer Testaufbauten eine\r
 Minimalbeschaltung bevorzuge.\r
@@ -64,8 +64,8 @@ Kurze Distanz
 (~30 cm) zwischen Sender und Empfaenger), keine genaue Ausrichtung.\r
 Stromversorgung wahlwweise mit 5V via PICkit 2 oder 3x1.2V NiMH-AA.\r
 \r
 (~30 cm) zwischen Sender und Empfaenger), keine genaue Ausrichtung.\r
 Stromversorgung wahlwweise mit 5V via PICkit 2 oder 3x1.2V NiMH-AA.\r
 \r
-Zunaechst \r
-CD TAPE TUNER AUX OFF mit Philips FB, \r
+Zunaechst\r
+CD TAPE TUNER AUX OFF mit Philips FB,\r
 OFF mit VAOVA TV-2900HDD FB\r
 dann Eingabe . und n beim Sender.\r
 \r
 OFF mit VAOVA TV-2900HDD FB\r
 dann Eingabe . und n beim Sender.\r
 \r
@@ -125,7 +125,7 @@ void InitApp(void)
     IRCF1=1;\r
     IRCF2=1;\r
     IRCF3=1;\r
     IRCF1=1;\r
     IRCF2=1;\r
     IRCF3=1;\r
-    SPLLEN=1; // p  46 and 54 \r
+    SPLLEN=1; // p  46 and 54\r
 }\r
 \r
 /******************************************************************************/\r
 }\r
 \r
 /******************************************************************************/\r
@@ -155,8 +155,8 @@ void InitApp(void)
 // UART\r
 /******************************************************************************/\r
 \r
 // UART\r
 /******************************************************************************/\r
 \r
-#define GPIO3 RA3 \r
-#define GPIO4 RA4 \r
+#define GPIO3 RA3\r
+#define GPIO4 RA4\r
 \r
 #define SOFTUART_RXPIN  GPIO3\r
 #define SOFTUART_STDIO 1\r
 \r
 #define SOFTUART_RXPIN  GPIO3\r
 #define SOFTUART_STDIO 1\r
@@ -170,12 +170,12 @@ void InitApp(void)
 #define kbhit softuartkbhit\r
 \r
 \r
 #define kbhit softuartkbhit\r
 \r
 \r
-void \r
+void\r
 RS232init(void)\r
  {\r
      // Transmit\r
      TXCKSEL = 1;                 //  put TX on pin 4 - not 0 -, p 102\r
 RS232init(void)\r
  {\r
      // Transmit\r
      TXCKSEL = 1;                 //  put TX on pin 4 - not 0 -, p 102\r
-     SPBRGL = (_XTAL_FREQ/BAUD/64-1);  \r
+     SPBRGL = (_XTAL_FREQ/BAUD/64-1);\r
      SPBRGH = 0;\r
      BRGH = 0;\r
      BRG16 = 0;\r
      SPBRGH = 0;\r
      BRGH = 0;\r
      BRG16 = 0;\r
@@ -187,24 +187,24 @@ RS232init(void)
  }\r
 \r
  // EUSART transmit\r
  }\r
 \r
  // EUSART transmit\r
- void \r
+ void\r
  putch(char c)\r
  {\r
     while (!TRMT) _delay(1);\r
     TXREG=c;\r
  }\r
  putch(char c)\r
  {\r
     while (!TRMT) _delay(1);\r
     TXREG=c;\r
  }\r
\r
+\r
 /******************************************************************************/\r
 // Timer and ISR\r
 /******************************************************************************/\r
 /******************************************************************************/\r
 // Timer and ISR\r
 /******************************************************************************/\r
\r
-void \r
+\r
+void\r
 timer1_init(void)\r
 {\r
     // p 154\r
     TMR1=0xFC00; // p. 155 wait 1024 cycles for stabilization.\r
     TMR1CS1=0; // Clock source == System Clock\r
 timer1_init(void)\r
 {\r
     // p 154\r
     TMR1=0xFC00; // p. 155 wait 1024 cycles for stabilization.\r
     TMR1CS1=0; // Clock source == System Clock\r
-    TMR1CS0=1; \r
+    TMR1CS0=1;\r
     TMR1IE=1; // enable TMR1 interrupts\r
     PEIE=1;   // enable Pheripheral Interrupts\r
     TMR1IF=0;\r
     TMR1IE=1; // enable TMR1 interrupts\r
     PEIE=1;   // enable Pheripheral Interrupts\r
     TMR1IF=0;\r
@@ -218,9 +218,9 @@ timer1_init(void)
 \r
 void interrupt isr(void)\r
 {\r
 \r
 void interrupt isr(void)\r
 {\r
-    TMR1=0xffff-_XTAL_FREQ/F_INTERRUPTS; \r
+    TMR1=0xffff-_XTAL_FREQ/F_INTERRUPTS;\r
     TMR1IF=0; // clear timer 1 interrupt\r
     TMR1IF=0; // clear timer 1 interrupt\r
\r
+\r
     if (!irsnd_ISR())\r
     {\r
         irmp_ISR();\r
     if (!irsnd_ISR())\r
     {\r
         irmp_ISR();\r
@@ -232,20 +232,20 @@ IRMP_DATA irmp_data;
 \r
 void RC5(uint16_t addr,uint16_t  cmd, uint8_t repetitions)\r
 {\r
 \r
 void RC5(uint16_t addr,uint16_t  cmd, uint8_t repetitions)\r
 {\r
-    irmp_data.protocol = IRMP_RC5_PROTOCOL;                       \r
+    irmp_data.protocol = IRMP_RC5_PROTOCOL;\r
     irmp_data.address  = addr;\r
     irmp_data.command  = cmd;\r
     irmp_data.flags    = repetitions;\r
     irmp_data.address  = addr;\r
     irmp_data.command  = cmd;\r
     irmp_data.flags    = repetitions;\r
-    irsnd_send_data (&irmp_data, FALSE); \r
+    irsnd_send_data (&irmp_data, FALSE);\r
 }\r
 \r
 void NEC(int addr,int cmd)\r
 {\r
 }\r
 \r
 void NEC(int addr,int cmd)\r
 {\r
-    irmp_data.protocol = IRMP_NEC_PROTOCOL;                       \r
+    irmp_data.protocol = IRMP_NEC_PROTOCOL;\r
     irmp_data.address  = addr;\r
     irmp_data.command  = cmd;\r
     irmp_data.flags    = 0;\r
     irmp_data.address  = addr;\r
     irmp_data.command  = cmd;\r
     irmp_data.flags    = 0;\r
-    irsnd_send_data (&irmp_data, FALSE); \r
+    irsnd_send_data (&irmp_data, FALSE);\r
 }\r
 \r
 \r
 }\r
 \r
 \r
@@ -258,18 +258,18 @@ main (void)
 {\r
     IRMP_DATA irmp_data;\r
     char c;\r
 {\r
     IRMP_DATA irmp_data;\r
     char c;\r
-    InitApp(); \r
+    InitApp();\r
 \r
     PWMoff();\r
     RS232init();\r
 \r
     PWMoff();\r
     RS232init();\r
-    \r
+\r
     __delay_ms(200);\r
     printf("IRMP PIC 12F1840 1.8 ws\r\n");\r
     irmp_init();              // initialize irmp\r
     timer1_init();            // initialize timer1\r
     ei();                     // enable interrupts\r
     TMR1ON=1; // start timer\r
     __delay_ms(200);\r
     printf("IRMP PIC 12F1840 1.8 ws\r\n");\r
     irmp_init();              // initialize irmp\r
     timer1_init();            // initialize timer1\r
     ei();                     // enable interrupts\r
     TMR1ON=1; // start timer\r
-  \r
+\r
     for (;;)\r
     {\r
         if (kbhit())\r
     for (;;)\r
     {\r
         if (kbhit())\r
@@ -285,7 +285,7 @@ main (void)
             else if (c=='n')\r
             {\r
                 printf("NEC ");\r
             else if (c=='n')\r
             {\r
                 printf("NEC ");\r
-                NEC(0x55,0xaa); \r
+                NEC(0x55,0xaa);\r
             }\r
             else\r
             {\r
             }\r
             else\r
             {\r
@@ -299,11 +299,11 @@ main (void)
         if (irmp_get_data (&irmp_data))\r
         {\r
             printf("P ");\r
         if (irmp_get_data (&irmp_data))\r
         {\r
             printf("P ");\r
-            printf("%d a=0x%04x c=0x%04x f=0x%02x (",irmp_data.protocol, irmp_data.address,irmp_data.command,irmp_data.flags); \r
-            \r
+            printf("%d a=0x%04x c=0x%04x f=0x%02x (",irmp_data.protocol, irmp_data.address,irmp_data.command,irmp_data.flags);\r
+\r
 #if IRMP_PROTOCOL_NAMES\r
             printf(irmp_protocol_names[irmp_data.protocol]);\r
 #if IRMP_PROTOCOL_NAMES\r
             printf(irmp_protocol_names[irmp_data.protocol]);\r
-#else            \r
+#else\r
             switch(irmp_data.protocol)\r
             {\r
                 case 1:\r
             switch(irmp_data.protocol)\r
             {\r
                 case 1:\r