]> cloudbase.mooo.com Git - irmp.git/blobdiff - irmp.c
Version 2.9.1: added IRMP logging for XMEGA, corrected timings for FAN protocol
[irmp.git] / irmp.c
diff --git a/irmp.c b/irmp.c
index 49748e18ff1c598f834ca11668822501fbc59dd5..a75e8d7468567a822064f11452b634c7448113c7 100644 (file)
--- a/irmp.c
+++ b/irmp.c
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2015 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmp.c,v 1.172 2015/05/27 09:33:14 fm Exp $\r
+ * $Id: irmp.c,v 1.174 2015/05/28 06:48:19 fm Exp $\r
  *\r
  * Supported AVR mikrocontrollers:\r
  *\r
@@ -783,6 +783,19 @@ irmp_uart_init (void)
 \r
     // UART enable\r
     USART_Cmd(STM32_UART_COM, ENABLE);\r
+        \r
+#elif defined (__AVR_XMEGA__)\r
+\r
+        PMIC.CTRL |= PMIC_HILVLEN_bm;\r
+\r
+        USARTC1.BAUDCTRLB = 0;\r
+        USARTC1.BAUDCTRLA = F_CPU /153600-1;\r
+        USARTC1.CTRLA = USART_RXCINTLVL_HI_gc; // High Level (Empfangen)\r
+        USARTC1.CTRLB = USART_TXEN_bm | USART_RXEN_bm; //Aktiviert Senden und Empfangen\r
+        USARTC1.CTRLC = USART_CHSIZE_8BIT_gc; //Größe der Zeichen: 8 Bit\r
+        PORTC.DIR |= (1<<7);  //TXD als Ausgang setzen\r
+        PORTC.DIR &= ~(1<<6);\r
+        \r
 #else\r
 \r
 #if (IRMP_EXT_LOGGING == 0)                                                                         // use UART\r
@@ -831,14 +844,19 @@ irmp_uart_putc (unsigned char ch)
 \r
 #else\r
 #if (IRMP_EXT_LOGGING == 0)\r
-\r
+        \r
+        #       if defined (__AVR_XMEGA__)\r
+        while (!(USARTC1.STATUS & USART_DREIF_bm));\r
+        USARTC1.DATA = ch;\r
+        \r
+        #       else //AVR_MEGA\r
     while (!(UART0_UCSRA & UART0_UDRE_BIT_VALUE))\r
     {\r
         ;\r
     }\r
 \r
     UART0_UDR = ch;\r
-\r
+        #endif //__AVR_XMEGA__\r
 #else\r
 \r
     sendextlog(ch);                                                         // use external log\r
@@ -3349,12 +3367,16 @@ irmp_ISR (void)
                         {                                                                           // yes, break and close this frame\r
                             if (irmp_pulse_time <= FAN_0_PULSE_LEN_MAX && irmp_pause_time >= FAN_0_PAUSE_LEN_MIN)\r
                             {\r
+#ifdef ANALYZE\r
                                 ANALYZE_PRINTF ("Generating virtual stop bit\n");\r
+#endif // ANALYZE\r
                                 got_light = TRUE;                                                   // this is a lie, but helps (generates stop bit)\r
                             }\r
                             else if (irmp_pulse_time >= FAN_1_PULSE_LEN_MIN && irmp_pause_time >= FAN_1_PAUSE_LEN_MIN)\r
                             {\r
+#ifdef ANALYZE\r
                                 ANALYZE_PRINTF ("Generating virtual stop bit\n");\r
+#endif // ANALYZE\r
                                 got_light = TRUE;                                                   // this is a lie, but helps (generates stop bit)\r
                             }\r
                         }\r