/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
* irmpsystem.h - system specific includes and defines\r
*\r
- * Copyright (c) 2009-2012 Frank Meyer - frank(at)fli4l.de\r
+ * Copyright (c) 2009-2015 Frank Meyer - frank(at)fli4l.de\r
*\r
- * $Id: irmpsystem.h,v 1.6 2012/05/23 14:02:45 fm Exp $\r
+ * $Id: irmpsystem.h,v 1.18 2015/05/18 10:51:07 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
#if defined(__18CXX) // Microchip PIC C18 compiler\r
# define PIC_C18\r
+#elif defined(__XC8) // PIC XC8 compiler\r
+# include <xc.h>\r
+# define PIC_C18\r
#elif defined(__PCM__) || defined(__PCB__) || defined(__PCH__) // CCS PIC compiler\r
# define PIC_CCS\r
#elif defined(STM32L1XX_MD) || defined(STM32L1XX_MDP) || defined(STM32L1XX_HD) // ARM STM32\r
# include <stm32l1xx.h>\r
# define ARM_STM32\r
# define ARM_STM32L1XX\r
+# define F_CPU (SysCtlClockGet())\r
#elif defined(STM32F10X_LD) || defined(STM32F10X_LD_VL) \\r
|| defined(STM32F10X_MD) || defined(STM32F10X_MD_VL) \\r
|| defined(STM32F10X_HD) || defined(STM32F10X_HD_VL) \\r
# include <stm32f10x.h>\r
# define ARM_STM32\r
# define ARM_STM32F10X\r
+# define F_CPU (SysCtlClockGet())\r
#elif defined(STM32F4XX) // ARM STM32\r
# include <stm32f4xx.h>\r
# define ARM_STM32\r
# define ARM_STM32F4XX\r
-#elif defined(unix) || defined(WIN32) // Unix/Linux or Windows\r
+#elif defined(TARGET_IS_BLIZZARD_RA2) // TI Stellaris (tested on Stellaris Launchpad with Code Composer Studio)\r
+# define STELLARIS_ARM_CORTEX_M4\r
+# define F_CPU (SysCtlClockGet())\r
+#elif defined(unix) || defined(WIN32) || defined(__APPLE__) // Unix/Linux or Windows or Apple\r
# define UNIX_OR_WINDOWS\r
#else\r
# define ATMEL_AVR // ATMEL AVR\r
# include <stdlib.h>\r
# define F_CPU 8000000L\r
# define ANALYZE\r
-# define DEBUG\r
# ifdef unix\r
# include <stdint.h>\r
# else\r
# define IRSND_OC0 3 // OC0\r
# define IRSND_OC0A 4 // OC0A\r
# define IRSND_OC0B 5 // OC0B\r
+\r
+# define IRSND_XMEGA_OC0A 0 // OC0A\r
+# define IRSND_XMEGA_OC0B 1 // OC0B\r
+# define IRSND_XMEGA_OC0C 2 // OC0C\r
+# define IRSND_XMEGA_OC0D 3 // OC0D\r
+# define IRSND_XMEGA_OC1A 4 // OC1A\r
+# define IRSND_XMEGA_OC1B 5 // OC1B\r
+\r
+#elif defined(STELLARIS_ARM_CORTEX_M4)\r
+\r
+# include "inc/hw_ints.h"\r
+# include "inc/hw_memmap.h"\r
+# include "inc/hw_types.h"\r
+# include "inc/hw_gpio.h"\r
+# include "driverlib/fpu.h"\r
+# include "driverlib/sysctl.h"\r
+# include "driverlib/interrupt.h"\r
+# include "driverlib/gpio.h"\r
+# include "driverlib/rom.h"\r
+# include "driverlib/systick.h"\r
+# include "driverlib/pin_map.h"\r
+# include "driverlib/timer.h"\r
+# define PROGMEM\r
+# define memcpy_P memcpy\r
+# define APP_SYSTICKS_PER_SEC 32\r
+\r
+#elif defined(ARM_STM32F10X)\r
+\r
+# include "stm32f10x_gpio.h"\r
+# include "stm32f10x_rcc.h"\r
+# include "stm32f10x_tim.h"\r
+# include "misc.h"\r
+# define PROGMEM\r
+# define memcpy_P memcpy\r
+\r
#else\r
+\r
# define PROGMEM\r
# define memcpy_P memcpy\r
+\r
#endif\r
\r
-#if defined(PIC_CCS) || defined(PIC_C18) || defined(ARM_STM32)\r
+#if defined(PIC_CCS) || defined(PIC_C18) || defined(ARM_STM32) || defined(STELLARIS_ARM_CORTEX_M4)\r
typedef unsigned char uint8_t;\r
typedef unsigned short uint16_t;\r
#endif\r
\r
-#if defined (PIC_C18)\r
+#if defined (PIC_C18) // PIC C18 or XC8 compiler\r
# include <p18cxxx.h> // main PIC18 h file\r
+#ifndef __XC8\r
# include <timers.h> // timer lib\r
# include <pwm.h> // pwm lib\r
+#endif\r
# define IRSND_PIC_CCP1 1 // PIC C18 RC2 = PWM1 module\r
# define IRSND_PIC_CCP2 2 // PIC C18 RC1 = PWM2 module\r
#endif\r
# define FALSE 0\r
#endif\r
\r
-typedef struct\r
+typedef struct __attribute__ ((__packed__))\r
{\r
- uint8_t protocol; // protocol, i.e. NEC_PROTOCOL\r
+ uint8_t protocol; // protocol, e.g. NEC_PROTOCOL\r
uint16_t address; // address\r
uint16_t command; // command\r
uint8_t flags; // flags, e.g. repetition\r