SSD1306 only uses I2C pins
[hackover2013-badge-firmware.git] / projectconfig.h
index 8d1ef05..ac0366d 100644 (file)
@@ -7,7 +7,7 @@
 
     Software License Agreement (BSD License)
 
-    Copyright (c) 2010, microBuilder SARL
+    Copyright (c) 2012, microBuilder SARL
     All rights reserved.
 
     Redistribution and use in source and binary forms, with or without
 
         microBuilder.eu USB stick 802.15.4 868/915MHz RF transceiver
 
+    CFG_BRD_LPC1343_OLIMEX_P
+    ==============================
+
+        Simple Olimex LPC1343 breakout board
+
+    CFG_BRD_LPC1343_LPCXPRESSO
+    ==============================
+
+        LPC1343 LPCXpresso board
+
     -----------------------------------------------------------------------*/
     #define CFG_BRD_LPC1343_REFDESIGN
     // #define CFG_BRD_LPC1343_REFDESIGN_MINIMAL
     // #define CFG_BRD_LPC1343_TFTLCDSTANDALONE_UART
     // #define CFG_BRD_LPC1343_802154USBSTICK
     // #define CFG_BRD_LPC1343_OLIMEX_P
+    // #define CFG_BRD_LPC1343_LPCXPRESSO
 /*=========================================================================*/
 
 
     ST7565      X X  X  X     X X X X X X X X X     . . . X
     ST7735      . .  .  .     X X X X X X . . .     . . . .
     SHARPMEM    . .  .  .     X X X X . . . . .     . . . .
-    SSD1306     . .  .  .     X X X . X X . . .     . . . .
+    SSD1306 SPI . .  .  .     X X X . X X . . .     . . . .
     SSD1351     . .  .  .     X X X X X . . . .     . . . .
     MCP121      . .  .  .     . . . . . . . . .     . X . .
     PN532 [3]   . .  .  .     . . . . . . . . .     . X X . 
     ST7565      .     .     .     .       .       X X X X     .
     ST7535      .     .     .     .       .       . . . .     .
     SHARPMEM    .     .     .     .       .       . . . .     .
-    SSD1306     .     .     .     .       .       . . . .     .
+    SSD1306 SPI .     .     .     .       .       . . . .     .
     INTERFACE   .     .     .     .       .       . . . .     X[2]
 
     [1]  PMU uses 32-bit Timer 0 for SW wakeup from deep-sleep.  This timer
          can safely be used by other peripherals, but may need to be
          reconfigured when you wakeup from deep-sleep.
     [2]  INTERFACE can be configured to use either USBCDC or UART
-    [3]  3.2 only used when with the I2C bus (for IRQ)
+    [3]  P3.2 is only used with the I2C bus (for IRQ)
 
  **************************************************************************/
 
     MCP4725                     0xC0      1100000x
     TSL2561                     0x72      0111001x
     TCS3414                     0x72      0111001x
-       PN532                       0x48      0100100x
+    PN532                       0x48      0100100x
+    SSD1306_I2C                 0x78      0111100x  // Assumes SA0 = GND
 
     [1]  Alternative addresses may exists, but the addresses listed in this
          table are the values used in the code base
 /*=========================================================================
     FIRMWARE VERSION SETTINGS
     -----------------------------------------------------------------------*/
-    #define CFG_FIRMWARE_VERSION_MAJOR            (0)
-    #define CFG_FIRMWARE_VERSION_MINOR            (9)
-    #define CFG_FIRMWARE_VERSION_REVISION         (8)
+    #define CFG_FIRMWARE_VERSION_MAJOR            (1)
+    #define CFG_FIRMWARE_VERSION_MINOR            (0)
+    #define CFG_FIRMWARE_VERSION_REVISION         (0)
 /*=========================================================================*/
 
 
 /*=========================================================================*/
 
 
+/*=========================================================================
+    GPIO INTERRUPTS
+    -----------------------------------------------------------------------
+
+    IF you wish to use the GPIO interrupt handlers elsewhere in your code,
+    you should probably define a seperate IRQHandler for the appropriate
+    GPIO bank rather than using the definitions in core/gpio/gpio.c (to
+    avoid causing problems in other projects, and to make updates easier,
+    etc.)  To disable the default IRQHandler, simply comment out the
+    define below for the appropriate GPIO bank and implement the handler
+    somewhere else.
+
+    GPIO_ENABLE_IRQ0    If defined, PIOINT0_IRQHandler will be declared and
+                        handled in core/gpio/gpio.c
+    GPIO_ENABLE_IRQ1    If defined, PIOINT1_IRQHandler will be declared and
+                        handled in core/gpio/gpio.c
+    GPIO_ENABLE_IRQ2    If defined, PIOINT2_IRQHandler will be declared and
+                        handled in core/gpio/gpio.c
+    GPIO_ENABLE_IRQ3    If defined, PIOINT3_IRQHandler will be declared and
+                        handled in core/gpio/gpio.c
+
+    -----------------------------------------------------------------------*/
+    #ifdef CFG_BRD_LPC1343_REFDESIGN
+      // #define GPIO_ENABLE_IRQ0
+      #define GPIO_ENABLE_IRQ1
+      // #define GPIO_ENABLE_IRQ2
+      // #define GPIO_ENABLE_IRQ3
+    #endif
+
+    #ifdef CFG_BRD_LPC1343_REFDESIGN_MINIMAL
+      // #define GPIO_ENABLE_IRQ0
+      #define GPIO_ENABLE_IRQ1
+      // #define GPIO_ENABLE_IRQ2
+      // #define GPIO_ENABLE_IRQ3
+    #endif
+
+    #ifdef CFG_BRD_LPC1343_TFTLCDSTANDALONE_USB
+      // #define GPIO_ENABLE_IRQ0
+      #define GPIO_ENABLE_IRQ1
+      // #define GPIO_ENABLE_IRQ2
+      // #define GPIO_ENABLE_IRQ3
+    #endif
+
+    #ifdef CFG_BRD_LPC1343_TFTLCDSTANDALONE_UART
+      // #define GPIO_ENABLE_IRQ0
+      #define GPIO_ENABLE_IRQ1
+      // #define GPIO_ENABLE_IRQ2
+      // #define GPIO_ENABLE_IRQ3
+    #endif
+
+    #ifdef CFG_BRD_LPC1343_802154USBSTICK
+      // #define GPIO_ENABLE_IRQ0
+      #define GPIO_ENABLE_IRQ1
+      // #define GPIO_ENABLE_IRQ2
+      // #define GPIO_ENABLE_IRQ3
+    #endif
+       
+    #ifdef CFG_BRD_LPC1343_OLIMEX_P
+      // #define GPIO_ENABLE_IRQ0
+      #define GPIO_ENABLE_IRQ1
+      // #define GPIO_ENABLE_IRQ2
+      // #define GPIO_ENABLE_IRQ3
+    #endif
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      // #define GPIO_ENABLE_IRQ0
+      #define GPIO_ENABLE_IRQ1
+      // #define GPIO_ENABLE_IRQ2
+      // #define GPIO_ENABLE_IRQ3
+    #endif
+/*=========================================================================*/
+
+
 /*=========================================================================
     ALTERNATE RESET PIN
     -----------------------------------------------------------------------
       #define CFG_UART_BAUDRATE           (115200)
       #define CFG_UART_BUFSIZE            (512)
     #endif
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      #define CFG_UART_BAUDRATE           (115200)
+      #define CFG_UART_BUFSIZE            (512)
+    #endif
 /*=========================================================================*/
 
 
       #define CFG_SSP0_SCKPIN_2_11
       // #define CFG_SSP0_SCKPIN_0_6
     #endif
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      #define CFG_SSP0_SCKPIN_2_11
+      // #define CFG_SSP0_SCKPIN_0_6
+    #endif
+/*=========================================================================*/
+
+
+/*=========================================================================
+    ADC
+    -----------------------------------------------------------------------
+
+    ADC_AVERAGING_ENABLE      To get better results, the ADC code can take
+                              a number of samples and return the average
+                              value.  This is slower, but can give more
+                              accurate results compared to single-reading.
+                              
+                              To enable averaging, set ADC_AVERAGING_ENABLE
+                              to a non-zero value.
+    ADC_AVERAGING_SAMPLES     The number of ADC samples to read and
+                              average if ADC averaging is enabled.
+
+    -----------------------------------------------------------------------*/
+    #ifdef CFG_BRD_LPC1343_REFDESIGN
+      #define ADC_AVERAGING_ENABLE    (1)
+      #define ADC_AVERAGING_SAMPLES   (5)
+    #endif
+
+    #ifdef CFG_BRD_LPC1343_REFDESIGN_MINIMAL
+      #define ADC_AVERAGING_ENABLE    (1)
+      #define ADC_AVERAGING_SAMPLES   (5)
+    #endif
+
+    #if defined CFG_BRD_LPC1343_TFTLCDSTANDALONE_USB || defined CFG_BRD_LPC1343_TFTLCDSTANDALONE_UART
+      #define ADC_AVERAGING_ENABLE    (0)
+      #define ADC_AVERAGING_SAMPLES   (5)
+    #endif
+
+    #ifdef CFG_BRD_LPC1343_802154USBSTICK
+      #define ADC_AVERAGING_ENABLE    (0)
+      #define ADC_AVERAGING_SAMPLES   (5)
+    #endif
+       
+    #ifdef CFG_BRD_LPC1343_OLIMEX_P
+      #define ADC_AVERAGING_ENABLE    (0)
+      #define ADC_AVERAGING_SAMPLES   (5)
+    #endif
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      #define ADC_AVERAGING_ENABLE    (0)
+      #define ADC_AVERAGING_SAMPLES   (5)
+    #endif
 /*=========================================================================*/
 
 
       #define CFG_LED_ON                  (0)
       #define CFG_LED_OFF                 (1)
     #endif
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      #define CFG_LED_PORT                (0)
+      #define CFG_LED_PIN                 (7)
+      #define CFG_LED_ON                  (0)
+      #define CFG_LED_OFF                 (1)
+    #endif
 /*=========================================================================*/
 
 
       #define CFG_SDCARD_CDPORT           (3)
       #define CFG_SDCARD_CDPIN            (0)
     #endif
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      // #define CFG_SDCARD
+      #define CFG_SDCARD_READONLY         (1) // Must be 0 or 1
+      #define CFG_SDCARD_CDPORT           (3)
+      #define CFG_SDCARD_CDPIN            (0)
+    #endif
 /*=========================================================================*/
 
 
       #define CFG_USBCDC_INITTIMEOUT      (5000)
       #define CFG_USBCDC_BUFFERSIZE       (256)
     #endif     
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      // #define CFG_USBHID
+      #define CFG_USBCDC
+      #define CFG_USBCDC_BAUDRATE         (115200)
+      #define CFG_USBCDC_INITTIMEOUT      (5000)
+      #define CFG_USBCDC_BUFFERSIZE       (256)
+    #endif
 /*=========================================================================*/
 
 
     PRINTF REDIRECTION
     -----------------------------------------------------------------------
 
+    CFG_PRINTF_MAXSTRINGSIZE  Maximum size of string buffer for printf
     CFG_PRINTF_UART           Will cause all printf statements to be 
                               redirected to UART
     CFG_PRINTF_USBCDC         Will cause all printf statements to be
     output will be ignored.
     -----------------------------------------------------------------------*/
     #ifdef CFG_BRD_LPC1343_REFDESIGN
+      #define CFG_PRINTF_MAXSTRINGSIZE    (255)
       // #define CFG_PRINTF_UART
       #define CFG_PRINTF_USBCDC
       #define CFG_PRINTF_NEWLINE          "\r\n"
     #endif
 
     #ifdef CFG_BRD_LPC1343_REFDESIGN_MINIMAL
+      #define CFG_PRINTF_MAXSTRINGSIZE    (255)
       #define CFG_PRINTF_UART
       // #define CFG_PRINTF_USBCDC
       #define CFG_PRINTF_NEWLINE          "\r\n"
     #endif
 
     #ifdef CFG_BRD_LPC1343_TFTLCDSTANDALONE_USB
+      #define CFG_PRINTF_MAXSTRINGSIZE    (255)
       // #define CFG_PRINTF_UART
       #define CFG_PRINTF_USBCDC
       #define CFG_PRINTF_NEWLINE          "\r\n"
     #endif
 
     #ifdef CFG_BRD_LPC1343_TFTLCDSTANDALONE_UART
+      #define CFG_PRINTF_MAXSTRINGSIZE    (255)
       #define CFG_PRINTF_UART
       // #define CFG_PRINTF_USBCDC
       #define CFG_PRINTF_NEWLINE          "\n"
     #endif
 
     #ifdef CFG_BRD_LPC1343_802154USBSTICK
+      #define CFG_PRINTF_MAXSTRINGSIZE    (255)
       // #define CFG_PRINTF_UART
       #define CFG_PRINTF_USBCDC
       #define CFG_PRINTF_NEWLINE          "\r\n"
     #endif
        
     #ifdef CFG_BRD_LPC1343_OLIMEX_P
+      #define CFG_PRINTF_MAXSTRINGSIZE    (255)
       // #define CFG_PRINTF_UART
       #define CFG_PRINTF_USBCDC
       #define CFG_PRINTF_NEWLINE          "\r\n"
     #endif     
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      #define CFG_PRINTF_MAXSTRINGSIZE    (255)
+      // #define CFG_PRINTF_UART
+      #define CFG_PRINTF_USBCDC
+      #define CFG_PRINTF_NEWLINE          "\r\n"
+    #endif
 /*=========================================================================*/
 
 
       #define CFG_INTERFACE_SHORTERRORS   (0)
       #define CFG_INTERFACE_CONFIRMREADY  (0)
     #endif
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      #define CFG_INTERFACE
+      #define CFG_INTERFACE_MAXMSGSIZE    (256)
+      #define CFG_INTERFACE_PROMPT        "LPC-P1343 >> "
+      #define CFG_INTERFACE_SILENTMODE    (0)
+      #define CFG_INTERFACE_DROPCR        (0)
+      #define CFG_INTERFACE_ENABLEIRQ     (0)
+      #define CFG_INTERFACE_IRQPORT       (0)
+      #define CFG_INTERFACE_IRQPIN        (7)
+      #define CFG_INTERFACE_SHORTERRORS   (0)
+      #define CFG_INTERFACE_CONFIRMREADY  (0)
+    #endif
 /*=========================================================================*/
 
 
       // #define CFG_I2CEEPROM
       #define CFG_I2CEEPROM_SIZE          (3072)
     #endif     
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      // #define CFG_I2CEEPROM
+      #define CFG_I2CEEPROM_SIZE          (3072)
+    #endif
 /*=========================================================================*/
 
 
       #define CFG_CHIBI_PROMISCUOUS       (0)
       #define CFG_CHIBI_BUFFERSIZE        (128)
     #endif     
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      // #define CFG_CHIBI
+      #define CFG_CHIBI_MODE              (0)                 // OQPSK_868MHZ
+      #define CFG_CHIBI_POWER             (0xE9)              // CHB_PWR_EU2_3DBM
+      #define CFG_CHIBI_CHANNEL           (0)                 // 868-868.6 MHz
+      #define CFG_CHIBI_PANID             (0x1234)
+      #define CFG_CHIBI_PROMISCUOUS       (0)
+      #define CFG_CHIBI_BUFFERSIZE        (128)
+    #endif
 /*=========================================================================*/
 
 
                                 a pre-determined LCD screen to be included
                                 during build.  Only one LCD driver can be 
                                 included during the build process (for ex.
-                                'drivers/lcd/hw/ILI9325.c')
+                                'drivers/displays/hw/ILI9325.c')
     CFG_TFTLCD_INCLUDESMALLFONTS If set to 1, smallfont support will be
                                 included for 3x6, 5x8, 7x8 and 8x8 fonts.
                                 This should only be enabled if these small
       #define CFG_TFTLCD_TS_DEFAULTTHRESHOLD (50)
       #define CFG_TFTLCD_TS_KEYPADDELAY      (100)
     #endif     
+
+    #ifdef CFG_BRD_LPC1343_LPCXPRESSO
+      // #define CFG_TFTLCD
+      #define CFG_TFTLCD_INCLUDESMALLFONTS   (0)
+      #define CFG_TFTLCD_TS_DEFAULTTHRESHOLD (50)
+      #define CFG_TFTLCD_TS_KEYPADDELAY      (100)
+    #endif
 /*=========================================================================*/
 
 
                               the 128x64 pixel ST7565 LCD to be included
     CFG_SSD1306               If defined, this will cause drivers for
                               the 128x64 pixel SSD1306 OLED display to be
-                              included
+                              included (using bit-banged SPI)
     CFG_SHARPMEM              If defined, this will cause drivers for
                               Sharp Memory Displays to be included
 
     DEPENDENCIES:             ST7565 requires the use of pins 2.1-6.
     DEPENDENCIES:             SSD1306 requires the use of pins 2.1-6.
+    DEPENDENCIES:             SSD1306_I2C requires the use of pins 2.2.
     DEPENDENCIES:             SHARPMEM requires the use of pins 2.1-4.
     -----------------------------------------------------------------------*/
     // #define CFG_ST7565
   !defined CFG_BRD_LPC1343_TFTLCDSTANDALONE_USB && \
   !defined CFG_BRD_LPC1343_TFTLCDSTANDALONE_UART && \
   !defined CFG_BRD_LPC1343_802154USBSTICK && \
-  !defined CFG_BRD_LPC1343_OLIMEX_P    
-  #error "You must defined a target board (CFG_BRD_LPC1343_REFDESIGN or CFG_BRD_LPC1343_REFDESIGN_MINIMAL or CFG_BRD_LPC1343_TFTLCDSTANDALONE or CFG_BRD_LPC1343_TFTLCDSTANDALONE_UART or CFG_BRD_LPC1343_802154USBSTICK)"
+  !defined CFG_BRD_LPC1343_OLIMEX_P && \
+  !defined CFG_BRD_LPC1343_LPCXPRESSO
+  #error "You must defined a target board (CFG_BRD_LPC1343_REFDESIGN or CFG_BRD_LPC1343_REFDESIGN_MINIMAL or CFG_BRD_LPC1343_TFTLCDSTANDALONE or CFG_BRD_LPC1343_TFTLCDSTANDALONE_UART or CFG_BRD_LPC1343_802154USBSTICK or CFG_BRD_LPC1343_LPCXPRESSO)"
 #endif
 
 #if defined CFG_PRINTF_USBCDC && defined CFG_PRINTF_UART
   #if CFG_CHIBI_PROMISCUOUS != 0 && CFG_CHIBI_PROMISCUOUS != 1
     #error "CFG_CHIBI_PROMISCUOUS must be equal to either 1 or 0"
   #endif
+  #if !defined GPIO_ENABLE_IRQ1
+    #error "GPIO_ENABLE_IRQ1 must be enabled when using Chibi (Chibi IRQ is on GPIO1.8)"
+  #endif
 #endif
 
 #ifdef CFG_TFTLCD
   #endif
 #endif
 
+#if ADC_AVERAGING_ENABLE && ADC_AVERAGING_SAMPLES < 1
+  #error "ADC_AVERAGING_SAMPLES must be 1 or higher when ADC averaging is enabled"
+#endif
+
 #endif
This page took 0.03907 seconds and 4 git commands to generate.