added support for LPC4088

Fork of QEI_hw by Hexley Ball

Revision:
3:9279a8f154c8
Parent:
1:018226f83d80
diff -r 53f8ae2cf502 -r 9279a8f154c8 qeihw.h
--- a/qeihw.h	Tue Dec 28 19:32:07 2010 +0000
+++ b/qeihw.h	Wed Mar 02 10:37:13 2016 +0000
@@ -76,8 +76,9 @@
      * @param _sigmode Signal mode. When = 0, PhA and PhB are quadrature inputs. When = 1, PhA is direction and PhB is clock
      * @param _capmode Capture mode. When = 0, count PhA edges only (2X mode). Whe = 1, count PhB edges also (4X mode).
      * @param _invinx Invert index. When = 1, inverts the sense of the index signal
+     * @param _crespi Reset Position on Index. When = 1, resets position counter on index signal
      */
-    QEIHW( uint32_t _dirinv, uint32_t _sigmode, uint32_t _capmode, uint32_t _invinx); 
+    QEIHW( uint32_t _dirinv, uint32_t _sigmode, uint32_t _capmode, uint32_t _invinx, uint32_t _crespi=0); 
 
 /**  Resets value for each type of QEI value, such as velocity, position, etc.
  *                 
@@ -416,29 +417,37 @@
 void Qeiisr(void);  
 static QEIHW *instance;
 
+#ifdef TARGET_LPC1768
 void(*_qei_isr[13])();
-
+#elif TARGET_LPC4088
+void(*_qei_isr[16])();
+#endif
 
 /* Private Macros ------------------------------------------------------------- */
 /* --------------------- BIT DEFINITIONS -------------------------------------- */
 /* Quadrature Encoder Interface Control Register Definition --------------------- */
 /*********************************************************************//**
- * Macro defines for QEI Control register
+ * Macro defines for QEI Control register LPC1768, LPC4088
  **********************************************************************/
 #define QEI_CON_RESP        ((uint32_t)(1<<0))        /**< Reset position counter */
-#define QEI_CON_RESPI        ((uint32_t)(1<<1))        /**< Reset Posistion Counter on Index */
+#define QEI_CON_RESPI       ((uint32_t)(1<<1))        /**< Reset Posistion Counter on Index */
 #define QEI_CON_RESV        ((uint32_t)(1<<2))        /**< Reset Velocity */
 #define QEI_CON_RESI        ((uint32_t)(1<<3))        /**< Reset Index Counter */
-#define QEI_CON_BITMASK        ((uint32_t)(0x0F))        /**< QEI Control register bit-mask */
+#define QEI_CON_BITMASK     ((uint32_t)(0x0F))        /**< QEI Control register bit-mask */
 
 /*********************************************************************//**
  * Macro defines for QEI Configuration register
  **********************************************************************/
-#define QEI_CONF_DIRINV        ((uint32_t)(1<<0))        /**< Direction Invert */
+#define QEI_CONF_DIRINV     ((uint32_t)(1<<0))        /**< Direction Invert */
 #define QEI_CONF_SIGMODE    ((uint32_t)(1<<1))        /**< Signal mode */
 #define QEI_CONF_CAPMODE    ((uint32_t)(1<<2))        /**< Capture mode */
-#define QEI_CONF_INVINX        ((uint32_t)(1<<3))        /**< Invert index */
+#define QEI_CONF_INVINX     ((uint32_t)(1<<3))        /**< Invert index */
+#ifdef TARGET_LPC1768
 #define QEI_CONF_BITMASK    ((uint32_t)(0x0F))        /**< QEI Configuration register bit-mask */
+#elif TARGET_LPC4088
+#define QEI_CONF_CRESPI     ((uint32_t)(1<<4))        /**< reset ounter on index */
+#define QEI_CONF_BITMASK    ((uint32_t)(0x1F))        /**< QEI Configuration register bit-mask */
+#endif
 
 /*********************************************************************//**
  * Macro defines for QEI Status register
@@ -450,143 +459,193 @@
 /*********************************************************************//**
  * Macro defines for QEI Interrupt Status register
  **********************************************************************/
-#define QEI_INTSTAT_INX_Int            ((uint32_t)(1<<0))    /**< Indicates that an index pulse was detected */
-#define QEI_INTSTAT_TIM_Int            ((uint32_t)(1<<1))    /**< Indicates that a velocity timer overflow occurred */
-#define QEI_INTSTAT_VELC_Int        ((uint32_t)(1<<2))    /**< Indicates that capture velocity is less than compare velocity */
-#define QEI_INTSTAT_DIR_Int            ((uint32_t)(1<<3))    /**< Indicates that a change of direction was detected */
-#define QEI_INTSTAT_ERR_Int            ((uint32_t)(1<<4))    /**< Indicates that an encoder phase error was detected */
-#define QEI_INTSTAT_ENCLK_Int        ((uint32_t)(1<<5))    /**< Indicates that and encoder clock pulse was detected */
-#define QEI_INTSTAT_POS0_Int        ((uint32_t)(1<<6))    /**< Indicates that the position 0 compare value is equal to the
-                                                        current position */
-#define QEI_INTSTAT_POS1_Int        ((uint32_t)(1<<7))    /**< Indicates that the position 1compare value is equal to the
-                                                        current position */
-#define QEI_INTSTAT_POS2_Int        ((uint32_t)(1<<8))    /**< Indicates that the position 2 compare value is equal to the
-                                                        current position */
-#define QEI_INTSTAT_REV_Int            ((uint32_t)(1<<9))    /**< Indicates that the index compare value is equal to the current
-                                                        index count */
-#define QEI_INTSTAT_POS0REV_Int        ((uint32_t)(1<<10))    /**< Combined position 0 and revolution count interrupt. Set when
-                                                        both the POS0_Int bit is set and the REV_Int is set */
-#define QEI_INTSTAT_POS1REV_Int        ((uint32_t)(1<<11))    /**< Combined position 1 and revolution count interrupt. Set when
-                                                        both the POS1_Int bit is set and the REV_Int is set */
-#define QEI_INTSTAT_POS2REV_Int        ((uint32_t)(1<<12))    /**< Combined position 2 and revolution count interrupt. Set when
-                                                        both the POS2_Int bit is set and the REV_Int is set */
-#define QEI_INTSTAT_BITMASK            ((uint32_t)(0x1FFF))    /**< QEI Interrupt Status register bit-mask */
+#define QEI_INTSTAT_INX_Int             ((uint32_t)(1<<0))      /**< Indicates that an index pulse was detected */
+#define QEI_INTSTAT_TIM_Int             ((uint32_t)(1<<1))      /**< Indicates that a velocity timer overflow occurred */
+#define QEI_INTSTAT_VELC_Int            ((uint32_t)(1<<2))      /**< Indicates that capture velocity is less than compare velocity */
+#define QEI_INTSTAT_DIR_Int             ((uint32_t)(1<<3))      /**< Indicates that a change of direction was detected */
+#define QEI_INTSTAT_ERR_Int             ((uint32_t)(1<<4))      /**< Indicates that an encoder phase error was detected */
+#define QEI_INTSTAT_ENCLK_Int           ((uint32_t)(1<<5))      /**< Indicates that and encoder clock pulse was detected */
+#define QEI_INTSTAT_POS0_Int            ((uint32_t)(1<<6))      /**< Indicates that the position 0 compare value is equal to the
+                                                                    current position */
+#define QEI_INTSTAT_POS1_Int            ((uint32_t)(1<<7))      /**< Indicates that the position 1compare value is equal to the
+                                                                    current position */
+#define QEI_INTSTAT_POS2_Int            ((uint32_t)(1<<8))      /**< Indicates that the position 2 compare value is equal to the
+                                                                    current position */
+#define QEI_INTSTAT_REV_Int             ((uint32_t)(1<<9))      /**< Indicates that the index compare value is equal to the current
+                                                                    index count */
+#define QEI_INTSTAT_POS0REV_Int         ((uint32_t)(1<<10))     /**< Combined position 0 and revolution count interrupt. Set when
+                                                                    both the POS0_Int bit is set and the REV_Int is set */
+#define QEI_INTSTAT_POS1REV_Int         ((uint32_t)(1<<11))     /**< Combined position 1 and revolution count interrupt. Set when
+                                                                    both the POS1_Int bit is set and the REV_Int is set */
+#define QEI_INTSTAT_POS2REV_Int         ((uint32_t)(1<<12))     /**< Combined position 2 and revolution count interrupt. Set when
+                                                                    both the POS2_Int bit is set and the REV_Int is set */
+#ifdef TARGET_LPC1768
+#define QEI_INTSTAT_BITMASK             ((uint32_t)(0x1FFF))    /**< QEI Interrupt Status register bit-mask */
+#elif TARGET_LPC4088
+#define QEI_INTSTAT_REV1_Int            ((uint32_t)(1<<13))     /**< Indicates that the index compare 1value is equal to the current index count. */
+#define QEI_INTSTAT_REV2_Int            ((uint32_t)(1<<14))     /**< Indicates that the index compare 2 value is equal to the current index count. */
+#define QEI_INTSTAT_MAXPOS_INT_Int      ((uint32_t)(1<<15))     /**< Indicates that the current position count goes through the MAXPOS value to zero in
+                                                                    the forward direction, or through zero to MAXPOS in the reverse direction. */
+#define QEI_INTSTAT_BITMASK             ((uint32_t)(0xFFFF))    /**< QEI Interrupt Status register bit-mask */
+#endif 
 
 /*********************************************************************//**
  * Macro defines for QEI Interrupt Set register
  **********************************************************************/
-#define QEI_INTSET_INX_Int            ((uint32_t)(1<<0))    /**< Set Bit Indicates that an index pulse was detected */
-#define QEI_INTSET_TIM_Int            ((uint32_t)(1<<1))    /**< Set Bit Indicates that a velocity timer overflow occurred */
-#define QEI_INTSET_VELC_Int            ((uint32_t)(1<<2))    /**< Set Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_INTSET_DIR_Int            ((uint32_t)(1<<3))    /**< Set Bit Indicates that a change of direction was detected */
-#define QEI_INTSET_ERR_Int            ((uint32_t)(1<<4))    /**< Set Bit Indicates that an encoder phase error was detected */
-#define QEI_INTSET_ENCLK_Int        ((uint32_t)(1<<5))    /**< Set Bit Indicates that and encoder clock pulse was detected */
-#define QEI_INTSET_POS0_Int            ((uint32_t)(1<<6))    /**< Set Bit Indicates that the position 0 compare value is equal to the
-                                                        current position */
-#define QEI_INTSET_POS1_Int            ((uint32_t)(1<<7))    /**< Set Bit Indicates that the position 1compare value is equal to the
-                                                        current position */
-#define QEI_INTSET_POS2_Int            ((uint32_t)(1<<8))    /**< Set Bit Indicates that the position 2 compare value is equal to the
-                                                        current position */
-#define QEI_INTSET_REV_Int            ((uint32_t)(1<<9))    /**< Set Bit Indicates that the index compare value is equal to the current
-                                                        index count */
-#define QEI_INTSET_POS0REV_Int        ((uint32_t)(1<<10))    /**< Set Bit that combined position 0 and revolution count interrupt */
-#define QEI_INTSET_POS1REV_Int        ((uint32_t)(1<<11))    /**< Set Bit that Combined position 1 and revolution count interrupt */
-#define QEI_INTSET_POS2REV_Int        ((uint32_t)(1<<12))    /**< Set Bit that Combined position 2 and revolution count interrupt */
-#define QEI_INTSET_BITMASK            ((uint32_t)(0x1FFF))    /**< QEI Interrupt Set register bit-mask */
+#define QEI_INTSET_INX_Int              ((uint32_t)(1<<0))      /**< Set Bit Indicates that an index pulse was detected */
+#define QEI_INTSET_TIM_Int              ((uint32_t)(1<<1))      /**< Set Bit Indicates that a velocity timer overflow occurred */
+#define QEI_INTSET_VELC_Int             ((uint32_t)(1<<2))      /**< Set Bit Indicates that capture velocity is less than compare velocity */
+#define QEI_INTSET_DIR_Int              ((uint32_t)(1<<3))      /**< Set Bit Indicates that a change of direction was detected */
+#define QEI_INTSET_ERR_Int              ((uint32_t)(1<<4))      /**< Set Bit Indicates that an encoder phase error was detected */
+#define QEI_INTSET_ENCLK_Int            ((uint32_t)(1<<5))      /**< Set Bit Indicates that and encoder clock pulse was detected */
+#define QEI_INTSET_POS0_Int             ((uint32_t)(1<<6))      /**< Set Bit Indicates that the position 0 compare value is equal to the
+                                                                    current position */
+#define QEI_INTSET_POS1_Int             ((uint32_t)(1<<7))      /**< Set Bit Indicates that the position 1compare value is equal to the
+                                                                    current position */
+#define QEI_INTSET_POS2_Int             ((uint32_t)(1<<8))      /**< Set Bit Indicates that the position 2 compare value is equal to the
+                                                                    current position */
+#define QEI_INTSET_REV_Int              ((uint32_t)(1<<9))      /**< Set Bit Indicates that the index compare value is equal to the current
+                                                                    index count */
+#define QEI_INTSET_POS0REV_Int          ((uint32_t)(1<<10))     /**< Set Bit that combined position 0 and revolution count interrupt */
+#define QEI_INTSET_POS1REV_Int          ((uint32_t)(1<<11))     /**< Set Bit that Combined position 1 and revolution count interrupt */
+#define QEI_INTSET_POS2REV_Int          ((uint32_t)(1<<12))     /**< Set Bit that Combined position 2 and revolution count interrupt */
+#ifdef TARGET_LPC1768
+#define QEI_INTSET_BITMASK             ((uint32_t)(0x1FFF))     /**< QEI Interrupt Status register bit-mask */
+#elif TARGET_LPC4088
+#define QEI_INTSET_REV1_Int            ((uint32_t)(1<<13))      /**< Indicates that the index compare 1value is equal to the current index count. */
+#define QEI_INTSET_REV2_Int            ((uint32_t)(1<<14))      /**< Indicates that the index compare 2 value is equal to the current index count. */
+#define QEI_INTSET_MAXPOS_INT_Int      ((uint32_t)(1<<15))      /**< Indicates that the current position count goes through the MAXPOS value to zero in
+                                                                    the forward direction, or through zero to MAXPOS in the reverse direction. */
+#define QEI_INTSET_BITMASK             ((uint32_t)(0xFFFF))     /**< QEI Interrupt Status register bit-mask */
+#endif 
+
 
 /*********************************************************************//**
  * Macro defines for QEI Interrupt Clear register
  **********************************************************************/
-#define QEI_INTCLR_INX_Int            ((uint32_t)(1<<0))    /**< Clear Bit Indicates that an index pulse was detected */
-#define QEI_INTCLR_TIM_Int            ((uint32_t)(1<<1))    /**< Clear Bit Indicates that a velocity timer overflow occurred */
-#define QEI_INTCLR_VELC_Int            ((uint32_t)(1<<2))    /**< Clear Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_INTCLR_DIR_Int            ((uint32_t)(1<<3))    /**< Clear Bit Indicates that a change of direction was detected */
-#define QEI_INTCLR_ERR_Int            ((uint32_t)(1<<4))    /**< Clear Bit Indicates that an encoder phase error was detected */
-#define QEI_INTCLR_ENCLK_Int        ((uint32_t)(1<<5))    /**< Clear Bit Indicates that and encoder clock pulse was detected */
-#define QEI_INTCLR_POS0_Int            ((uint32_t)(1<<6))    /**< Clear Bit Indicates that the position 0 compare value is equal to the
-                                                        current position */
-#define QEI_INTCLR_POS1_Int            ((uint32_t)(1<<7))    /**< Clear Bit Indicates that the position 1compare value is equal to the
-                                                        current position */
-#define QEI_INTCLR_POS2_Int            ((uint32_t)(1<<8))    /**< Clear Bit Indicates that the position 2 compare value is equal to the
-                                                        current position */
-#define QEI_INTCLR_REV_Int            ((uint32_t)(1<<9))    /**< Clear Bit Indicates that the index compare value is equal to the current
-                                                        index count */
-#define QEI_INTCLR_POS0REV_Int        ((uint32_t)(1<<10))    /**< Clear Bit that combined position 0 and revolution count interrupt */
-#define QEI_INTCLR_POS1REV_Int        ((uint32_t)(1<<11))    /**< Clear Bit that Combined position 1 and revolution count interrupt */
-#define QEI_INTCLR_POS2REV_Int        ((uint32_t)(1<<12))    /**< Clear Bit that Combined position 2 and revolution count interrupt */
-#define QEI_INTCLR_BITMASK            ((uint32_t)(0x1FFF))    /**< QEI Interrupt Clear register bit-mask */
+#define QEI_INTCLR_INX_Int              ((uint32_t)(1<<0))      /**< Clear Bit Indicates that an index pulse was detected */
+#define QEI_INTCLR_TIM_Int              ((uint32_t)(1<<1))      /**< Clear Bit Indicates that a velocity timer overflow occurred */
+#define QEI_INTCLR_VELC_Int             ((uint32_t)(1<<2))      /**< Clear Bit Indicates that capture velocity is less than compare velocity */
+#define QEI_INTCLR_DIR_Int              ((uint32_t)(1<<3))      /**< Clear Bit Indicates that a change of direction was detected */
+#define QEI_INTCLR_ERR_Int              ((uint32_t)(1<<4))      /**< Clear Bit Indicates that an encoder phase error was detected */
+#define QEI_INTCLR_ENCLK_Int            ((uint32_t)(1<<5))      /**< Clear Bit Indicates that and encoder clock pulse was detected */
+#define QEI_INTCLR_POS0_Int             ((uint32_t)(1<<6))      /**< Clear Bit Indicates that the position 0 compare value is equal to the
+                                                                    current position */
+#define QEI_INTCLR_POS1_Int             ((uint32_t)(1<<7))      /**< Clear Bit Indicates that the position 1compare value is equal to the
+                                                                    current position */
+#define QEI_INTCLR_POS2_Int             ((uint32_t)(1<<8))      /**< Clear Bit Indicates that the position 2 compare value is equal to the
+                                                                    current position */
+#define QEI_INTCLR_REV_Int              ((uint32_t)(1<<9))      /**< Clear Bit Indicates that the index compare value is equal to the current
+                                                                    index count */
+#define QEI_INTCLR_POS0REV_Int          ((uint32_t)(1<<10))     /**< Clear Bit that combined position 0 and revolution count interrupt */
+#define QEI_INTCLR_POS1REV_Int          ((uint32_t)(1<<11))     /**< Clear Bit that Combined position 1 and revolution count interrupt */
+#define QEI_INTCLR_POS2REV_Int          ((uint32_t)(1<<12))     /**< Clear Bit that Combined position 2 and revolution count interrupt */
+#ifdef TARGET_LPC1768
+#define QEI_INTCLR_BITMASK             ((uint32_t)(0x1FFF))     /**< QEI Interrupt Status register bit-mask */
+#elif TARGET_LPC4088
+#define QEI_INTCLR_REV1_Int            ((uint32_t)(1<<13))      /**< Indicates that the index compare 1value is equal to the current index count. */
+#define QEI_INTCLR_REV2_Int            ((uint32_t)(1<<14))      /**< Indicates that the index compare 2 value is equal to the current index count. */
+#define QEI_INTCLR_MAXPOS_INT_Int      ((uint32_t)(1<<15))      /**< Indicates that the current position count goes through the MAXPOS value to zero in
+                                                                    the forward direction, or through zero to MAXPOS in the reverse direction. */
+#define QEI_INTCLR_BITMASK             ((uint32_t)(0xFFFF))     /**< QEI Interrupt Status register bit-mask */
+#endif 
 
 /*********************************************************************//**
  * Macro defines for QEI Interrupt Enable register
  **********************************************************************/
-#define QEI_INTEN_INX_Int            ((uint32_t)(1<<0))    /**< Enabled Interrupt Bit Indicates that an index pulse was detected */
-#define QEI_INTEN_TIM_Int            ((uint32_t)(1<<1))    /**< Enabled Interrupt Bit Indicates that a velocity timer overflow occurred */
-#define QEI_INTEN_VELC_Int            ((uint32_t)(1<<2))    /**< Enabled Interrupt Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_INTEN_DIR_Int            ((uint32_t)(1<<3))    /**< Enabled Interrupt Bit Indicates that a change of direction was detected */
-#define QEI_INTEN_ERR_Int            ((uint32_t)(1<<4))    /**< Enabled Interrupt Bit Indicates that an encoder phase error was detected */
-#define QEI_INTEN_ENCLK_Int            ((uint32_t)(1<<5))    /**< Enabled Interrupt Bit Indicates that and encoder clock pulse was detected */
-#define QEI_INTEN_POS0_Int            ((uint32_t)(1<<6))    /**< Enabled Interrupt Bit Indicates that the position 0 compare value is equal to the
-                                                        current position */
-#define QEI_INTEN_POS1_Int            ((uint32_t)(1<<7))    /**< Enabled Interrupt Bit Indicates that the position 1compare value is equal to the
-                                                        current position */
-#define QEI_INTEN_POS2_Int            ((uint32_t)(1<<8))    /**< Enabled Interrupt Bit Indicates that the position 2 compare value is equal to the
-                                                        current position */
-#define QEI_INTEN_REV_Int            ((uint32_t)(1<<9))    /**< Enabled Interrupt Bit Indicates that the index compare value is equal to the current
-                                                        index count */
-#define QEI_INTEN_POS0REV_Int        ((uint32_t)(1<<10))    /**< Enabled Interrupt Bit that combined position 0 and revolution count interrupt */
-#define QEI_INTEN_POS1REV_Int        ((uint32_t)(1<<11))    /**< Enabled Interrupt Bit that Combined position 1 and revolution count interrupt */
-#define QEI_INTEN_POS2REV_Int        ((uint32_t)(1<<12))    /**< Enabled Interrupt Bit that Combined position 2 and revolution count interrupt */
-#define QEI_INTEN_BITMASK            ((uint32_t)(0x1FFF))    /**< QEI Interrupt Enable register bit-mask */
+#define QEI_INTEN_INX_Int               ((uint32_t)(1<<0))      /**< Enabled Interrupt Bit Indicates that an index pulse was detected */
+#define QEI_INTEN_TIM_Int               ((uint32_t)(1<<1))      /**< Enabled Interrupt Bit Indicates that a velocity timer overflow occurred */
+#define QEI_INTEN_VELC_Int              ((uint32_t)(1<<2))      /**< Enabled Interrupt Bit Indicates that capture velocity is less than compare velocity */
+#define QEI_INTEN_DIR_Int               ((uint32_t)(1<<3))      /**< Enabled Interrupt Bit Indicates that a change of direction was detected */
+#define QEI_INTEN_ERR_Int               ((uint32_t)(1<<4))      /**< Enabled Interrupt Bit Indicates that an encoder phase error was detected */
+#define QEI_INTEN_ENCLK_Int             ((uint32_t)(1<<5))      /**< Enabled Interrupt Bit Indicates that and encoder clock pulse was detected */
+#define QEI_INTEN_POS0_Int              ((uint32_t)(1<<6))      /**< Enabled Interrupt Bit Indicates that the position 0 compare value is equal to the
+                                                                    current position */
+#define QEI_INTEN_POS1_Int              ((uint32_t)(1<<7))      /**< Enabled Interrupt Bit Indicates that the position 1compare value is equal to the
+                                                                    current position */
+#define QEI_INTEN_POS2_Int              ((uint32_t)(1<<8))      /**< Enabled Interrupt Bit Indicates that the position 2 compare value is equal to the
+                                                                    current position */
+#define QEI_INTEN_REV_Int               ((uint32_t)(1<<9))      /**< Enabled Interrupt Bit Indicates that the index compare value is equal to the current
+                                                                    index count */
+#define QEI_INTEN_POS0REV_Int           ((uint32_t)(1<<10))     /**< Enabled Interrupt Bit that combined position 0 and revolution count interrupt */
+#define QEI_INTEN_POS1REV_Int           ((uint32_t)(1<<11))     /**< Enabled Interrupt Bit that Combined position 1 and revolution count interrupt */
+#define QEI_INTEN_POS2REV_Int           ((uint32_t)(1<<12))     /**< Enabled Interrupt Bit that Combined position 2 and revolution count interrupt */
+#ifdef TARGET_LPC1768
+#define QEI_INTEN_BITMASK             ((uint32_t)(0x1FFF))     /**< QEI Interrupt Status register bit-mask */
+#elif TARGET_LPC4088
+#define QEI_INTEN_REV1_Int            ((uint32_t)(1<<13))      /**< Indicates that the index compare 1value is equal to the current index count. */
+#define QEI_INTEN_REV2_Int            ((uint32_t)(1<<14))      /**< Indicates that the index compare 2 value is equal to the current index count. */
+#define QEI_INTEN_MAXPOS_INT_Int      ((uint32_t)(1<<15))      /**< Indicates that the current position count goes through the MAXPOS value to zero in
+                                                                    the forward direction, or through zero to MAXPOS in the reverse direction. */
+#define QEI_INTEN_BITMASK             ((uint32_t)(0xFFFF))     /**< QEI Interrupt Status register bit-mask */
+#endif 
 
 /*********************************************************************//**
  * Macro defines for QEI Interrupt Enable Set register
  **********************************************************************/
-#define QEI_IESET_INX_Int            ((uint32_t)(1<<0))    /**< Set Enable Interrupt Bit Indicates that an index pulse was detected */
-#define QEI_IESET_TIM_Int            ((uint32_t)(1<<1))    /**< Set Enable Interrupt Bit Indicates that a velocity timer overflow occurred */
-#define QEI_IESET_VELC_Int            ((uint32_t)(1<<2))    /**< Set Enable Interrupt Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_IESET_DIR_Int            ((uint32_t)(1<<3))    /**< Set Enable Interrupt Bit Indicates that a change of direction was detected */
-#define QEI_IESET_ERR_Int            ((uint32_t)(1<<4))    /**< Set Enable Interrupt Bit Indicates that an encoder phase error was detected */
-#define QEI_IESET_ENCLK_Int            ((uint32_t)(1<<5))    /**< Set Enable Interrupt Bit Indicates that and encoder clock pulse was detected */
-#define QEI_IESET_POS0_Int            ((uint32_t)(1<<6))    /**< Set Enable Interrupt Bit Indicates that the position 0 compare value is equal to the
-                                                        current position */
-#define QEI_IESET_POS1_Int            ((uint32_t)(1<<7))    /**< Set Enable Interrupt Bit Indicates that the position 1compare value is equal to the
-                                                        current position */
-#define QEI_IESET_POS2_Int            ((uint32_t)(1<<8))    /**< Set Enable Interrupt Bit Indicates that the position 2 compare value is equal to the
-                                                        current position */
-#define QEI_IESET_REV_Int            ((uint32_t)(1<<9))    /**< Set Enable Interrupt Bit Indicates that the index compare value is equal to the current
-                                                        index count */
-#define QEI_IESET_POS0REV_Int        ((uint32_t)(1<<10))    /**< Set Enable Interrupt Bit that combined position 0 and revolution count interrupt */
-#define QEI_IESET_POS1REV_Int        ((uint32_t)(1<<11))    /**< Set Enable Interrupt Bit that Combined position 1 and revolution count interrupt */
-#define QEI_IESET_POS2REV_Int        ((uint32_t)(1<<12))    /**< Set Enable Interrupt Bit that Combined position 2 and revolution count interrupt */
-#define QEI_IESET_BITMASK            ((uint32_t)(0x1FFF))    /**< QEI Interrupt Enable Set register bit-mask */
+#define QEI_IESET_INX_Int               ((uint32_t)(1<<0))      /**< Set Enable Interrupt Bit Indicates that an index pulse was detected */
+#define QEI_IESET_TIM_Int               ((uint32_t)(1<<1))      /**< Set Enable Interrupt Bit Indicates that a velocity timer overflow occurred */
+#define QEI_IESET_VELC_Int              ((uint32_t)(1<<2))      /**< Set Enable Interrupt Bit Indicates that capture velocity is less than compare velocity */
+#define QEI_IESET_DIR_Int               ((uint32_t)(1<<3))      /**< Set Enable Interrupt Bit Indicates that a change of direction was detected */
+#define QEI_IESET_ERR_Int               ((uint32_t)(1<<4))      /**< Set Enable Interrupt Bit Indicates that an encoder phase error was detected */
+#define QEI_IESET_ENCLK_Int             ((uint32_t)(1<<5))      /**< Set Enable Interrupt Bit Indicates that and encoder clock pulse was detected */
+#define QEI_IESET_POS0_Int              ((uint32_t)(1<<6))      /**< Set Enable Interrupt Bit Indicates that the position 0 compare value is equal to the
+                                                                    current position */
+#define QEI_IESET_POS1_Int              ((uint32_t)(1<<7))      /**< Set Enable Interrupt Bit Indicates that the position 1compare value is equal to the
+                                                                    current position */
+#define QEI_IESET_POS2_Int              ((uint32_t)(1<<8))      /**< Set Enable Interrupt Bit Indicates that the position 2 compare value is equal to the
+                                                                    current position */
+#define QEI_IESET_REV_Int               ((uint32_t)(1<<9))      /**< Set Enable Interrupt Bit Indicates that the index compare value is equal to the current
+                                                                    index count */
+#define QEI_IESET_POS0REV_Int           ((uint32_t)(1<<10))     /**< Set Enable Interrupt Bit that combined position 0 and revolution count interrupt */
+#define QEI_IESET_POS1REV_Int           ((uint32_t)(1<<11))     /**< Set Enable Interrupt Bit that Combined position 1 and revolution count interrupt */
+#define QEI_IESET_POS2REV_Int           ((uint32_t)(1<<12))     /**< Set Enable Interrupt Bit that Combined position 2 and revolution count interrupt */
+#ifdef TARGET_LPC1768
+#define QEI_IESET_BITMASK             ((uint32_t)(0x1FFF))     /**< QEI Interrupt Status register bit-mask */
+#elif TARGET_LPC4088
+#define QEI_IESET_REV1_Int            ((uint32_t)(1<<13))      /**< Indicates that the index compare 1value is equal to the current index count. */
+#define QEI_IESET_REV2_Int            ((uint32_t)(1<<14))      /**< Indicates that the index compare 2 value is equal to the current index count. */
+#define QEI_IESET_MAXPOS_INT_Int      ((uint32_t)(1<<15))      /**< Indicates that the current position count goes through the MAXPOS value to zero in
+                                                                    the forward direction, or through zero to MAXPOS in the reverse direction. */
+#define QEI_IESET_BITMASK             ((uint32_t)(0xFFFF))     /**< QEI Interrupt Status register bit-mask */
+#endif 
 
 /*********************************************************************//**
  * Macro defines for QEI Interrupt Enable Clear register
  **********************************************************************/
-#define QEI_IECLR_INX_Int            ((uint32_t)(1<<0))    /**< Clear Enabled Interrupt Bit Indicates that an index pulse was detected */
-#define QEI_IECLR_TIM_Int            ((uint32_t)(1<<1))    /**< Clear Enabled Interrupt Bit Indicates that a velocity timer overflow occurred */
-#define QEI_IECLR_VELC_Int            ((uint32_t)(1<<2))    /**< Clear Enabled Interrupt Bit Indicates that capture velocity is less than compare velocity */
-#define QEI_IECLR_DIR_Int            ((uint32_t)(1<<3))    /**< Clear Enabled Interrupt Bit Indicates that a change of direction was detected */
-#define QEI_IECLR_ERR_Int            ((uint32_t)(1<<4))    /**< Clear Enabled Interrupt Bit Indicates that an encoder phase error was detected */
-#define QEI_IECLR_ENCLK_Int            ((uint32_t)(1<<5))    /**< Clear Enabled Interrupt Bit Indicates that and encoder clock pulse was detected */
-#define QEI_IECLR_POS0_Int            ((uint32_t)(1<<6))    /**< Clear Enabled Interrupt Bit Indicates that the position 0 compare value is equal to the
-                                                        current position */
-#define QEI_IECLR_POS1_Int            ((uint32_t)(1<<7))    /**< Clear Enabled Interrupt Bit Indicates that the position 1compare value is equal to the
-                                                        current position */
-#define QEI_IECLR_POS2_Int            ((uint32_t)(1<<8))    /**< Clear Enabled Interrupt Bit Indicates that the position 2 compare value is equal to the
-                                                        current position */
-#define QEI_IECLR_REV_Int            ((uint32_t)(1<<9))    /**< Clear Enabled Interrupt Bit Indicates that the index compare value is equal to the current
-                                                        index count */
-#define QEI_IECLR_POS0REV_Int        ((uint32_t)(1<<10))    /**< Clear Enabled Interrupt Bit that combined position 0 and revolution count interrupt */
-#define QEI_IECLR_POS1REV_Int        ((uint32_t)(1<<11))    /**< Clear Enabled Interrupt Bit that Combined position 1 and revolution count interrupt */
-#define QEI_IECLR_POS2REV_Int        ((uint32_t)(1<<12))    /**< Clear Enabled Interrupt Bit that Combined position 2 and revolution count interrupt */
-#define QEI_IECLR_BITMASK            ((uint32_t)(0x1FFF))    /**< QEI Interrupt Enable Clear register bit-mask */
+#define QEI_IECLR_INX_Int               ((uint32_t)(1<<0))      /**< Clear Enabled Interrupt Bit Indicates that an index pulse was detected */
+#define QEI_IECLR_TIM_Int               ((uint32_t)(1<<1))      /**< Clear Enabled Interrupt Bit Indicates that a velocity timer overflow occurred */
+#define QEI_IECLR_VELC_Int              ((uint32_t)(1<<2))      /**< Clear Enabled Interrupt Bit Indicates that capture velocity is less than compare velocity */
+#define QEI_IECLR_DIR_Int               ((uint32_t)(1<<3))      /**< Clear Enabled Interrupt Bit Indicates that a change of direction was detected */
+#define QEI_IECLR_ERR_Int               ((uint32_t)(1<<4))      /**< Clear Enabled Interrupt Bit Indicates that an encoder phase error was detected */
+#define QEI_IECLR_ENCLK_Int             ((uint32_t)(1<<5))      /**< Clear Enabled Interrupt Bit Indicates that and encoder clock pulse was detected */
+#define QEI_IECLR_POS0_Int              ((uint32_t)(1<<6))      /**< Clear Enabled Interrupt Bit Indicates that the position 0 compare value is equal to the
+                                                                    current position */
+#define QEI_IECLR_POS1_Int              ((uint32_t)(1<<7))      /**< Clear Enabled Interrupt Bit Indicates that the position 1compare value is equal to the
+                                                                    current position */
+#define QEI_IECLR_POS2_Int              ((uint32_t)(1<<8))      /**< Clear Enabled Interrupt Bit Indicates that the position 2 compare value is equal to the
+                                                                    current position */
+#define QEI_IECLR_REV_Int               ((uint32_t)(1<<9))      /**< Clear Enabled Interrupt Bit Indicates that the index compare value is equal to the current
+                                                                    index count */
+#define QEI_IECLR_POS0REV_Int           ((uint32_t)(1<<10))     /**< Clear Enabled Interrupt Bit that combined position 0 and revolution count interrupt */
+#define QEI_IECLR_POS1REV_Int           ((uint32_t)(1<<11))     /**< Clear Enabled Interrupt Bit that Combined position 1 and revolution count interrupt */
+#define QEI_IECLR_POS2REV_Int           ((uint32_t)(1<<12))     /**< Clear Enabled Interrupt Bit that Combined position 2 and revolution count interrupt */
+#ifdef TARGET_LPC1768
+#define QEI_IECLR_BITMASK             ((uint32_t)(0x1FFF))     /**< QEI Interrupt Status register bit-mask */
+#elif TARGET_LPC4088
+#define QEI_IECLR_REV1_Int            ((uint32_t)(1<<13))      /**< Indicates that the index compare 1value is equal to the current index count. */
+#define QEI_IECLR_REV2_Int            ((uint32_t)(1<<14))      /**< Indicates that the index compare 2 value is equal to the current index count. */
+#define QEI_IECLR_MAXPOS_INT_Int      ((uint32_t)(1<<15))      /**< Indicates that the current position count goes through the MAXPOS value to zero in
+                                                                    the forward direction, or through zero to MAXPOS in the reverse direction. */
+#define QEI_IECLR_BITMASK             ((uint32_t)(0xFFFF))     /**< QEI Interrupt Status register bit-mask */
+#endif 
+
 
 /*********************************************************************//**
  * Macro defines for PCONP register QEI-related bits
  **********************************************************************/
-#define PCONP_QEI_ENABLE             ((uint32_t)(1<<18))     /**< QEI peripheral power enable bit */
-#define PCONP_QEI_DISABLE            ~((uint32_t)(1<<18))     /**< QEI peripheral power disable bit-mask */
+#define PCONP_QEI_ENABLE                ((uint32_t)(1<<18))     /**< QEI peripheral power enable bit */
+#define PCONP_QEI_DISABLE               ~((uint32_t)(1<<18))    /**< QEI peripheral power disable bit-mask */
 
 /*********************************************************************//**
  * Macro defines for PCLKSELx register QEI-related bits
@@ -595,10 +654,16 @@
 #define PCLKSEL_CCLK_DIV_2              2UL                 /**< Set PCLK to CCLK/2 */
 #define PCLKSEL_CCLK_DIV_4              0UL                 /**< Set PCLK to CCLK/4 */
 #define PCLKSEL_CCLK_DIV_8              3UL                 /**< Set PCLK to CCLK/8 */
+#ifdef TARGET_LPC1768
 #define PCLKSEL1_PCLK_QEI_MASK          ((uint32_t)(3<<0))  /**< PCLK_QEI PCLK_QEI bit field mask */
+#elif TARGET_LPC4088
+#define PCLKSEL1_PCLK_QEI_MASK          (0x1fUL)            /**< PCLK_QEI PCLK_QEI bit field mask */
+#endif 
+
 /*********************************************************************//**
- * Macro defines for PINSEL3 register QEI-related bits
+ * Macro defines for PINSEL3 register QEI-related bits (LPC1768 only)
  **********************************************************************/
+#ifdef TARGET_LPC1768
 #define PINSEL3_MCI0                ((uint32_t)(1<<8))     /**< MCIO (PhA) pin select */
 #define PINSEL3_MCI0_MASK          ~((uint32_t)(3<<8))     /**< MCIO (PhA) pin mask */
 #define PINSEL3_MCI1                ((uint32_t)(1<<14))    /**< MCI1 (PhB) pin select */
@@ -607,7 +672,7 @@
 #define PINSEL3_MCI2_MASK          ~((uint32_t)(3<<16))    /**< MCI2 (Index) pin mask */
 
 /*********************************************************************//**
- * Macro defines for PINMODE3 register QEI-related bits
+ * Macro defines for PINMODE3 register QEI-related bits(LPC1768 only)
  **********************************************************************/
 #define PIN_PULL_UP                     0UL
 #define PIN_REPEATER                    1UL
@@ -625,7 +690,7 @@
 #define PINMODE3_MCI2                ((uint32_t)(PIN_PULL_UP<<16))       /**< MCI2 (Index) resistor selection */
 #define PINMODE3_GPIO1p24            ((uint32_t)(PIN_PULL_DOWN<<16))      /**< GPIO 1.24) resistor selection */
 #define PINMODE3_MCI2_MASK          ~((uint32_t)(3<<16))                 /**< MCI2 (Index) resistor mask */
-
+#endif
 };