]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_LM3S811_GCC/hw_include/qei.h
Start to create an RX64M demo.
[freertos] / FreeRTOS / Demo / CORTEX_LM3S811_GCC / hw_include / qei.h
1 //*****************************************************************************\r
2 //\r
3 // qei.h - Prototypes for the Quadrature Encoder Driver.\r
4 //\r
5 // Copyright (c) 2005,2006 Luminary Micro, Inc.  All rights reserved.\r
6 //\r
7 // Software License Agreement\r
8 //\r
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and\r
10 // exclusively on LMI's Stellaris Family of microcontroller products.\r
11 //\r
12 // The software is owned by LMI and/or its suppliers, and is protected under\r
13 // applicable copyright laws.  All rights are reserved.  Any use in violation\r
14 // of the foregoing restrictions may subject the user to criminal sanctions\r
15 // under applicable laws, as well as to civil liability for the breach of the\r
16 // terms and conditions of this license.\r
17 //\r
18 // THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
19 // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
20 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
21 // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
22 // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
23 //\r
24 // This is part of revision 991 of the Stellaris Driver Library.\r
25 //\r
26 //*****************************************************************************\r
27 \r
28 #ifndef __QEI_H__\r
29 #define __QEI_H__\r
30 \r
31 #ifdef __cplusplus\r
32 extern "C"\r
33 {\r
34 #endif\r
35 \r
36 //*****************************************************************************\r
37 //\r
38 // Values that can be passed to QEIConfigure as the ulConfig paramater.\r
39 //\r
40 //*****************************************************************************\r
41 #define QEI_CONFIG_CAPTURE_A    0x00000000  // Count on ChA edges only\r
42 #define QEI_CONFIG_CAPTURE_A_B  0x00000008  // Count on ChA and ChB edges\r
43 #define QEI_CONFIG_NO_RESET     0x00000000  // Do not reset on index pulse\r
44 #define QEI_CONFIG_RESET_IDX    0x00000010  // Reset position on index pulse\r
45 #define QEI_CONFIG_QUADRATURE   0x00000000  // ChA and ChB are quadrature\r
46 #define QEI_CONFIG_CLOCK_DIR    0x00000004  // ChA and ChB are clock and dir\r
47 #define QEI_CONFIG_NO_SWAP      0x00000000  // Do not swap ChA and ChB\r
48 #define QEI_CONFIG_SWAP         0x00000002  // Swap ChA and ChB\r
49 \r
50 //*****************************************************************************\r
51 //\r
52 // Values that can be passed to QEIVelocityConfigure as the ulPreDiv parameter.\r
53 //\r
54 //*****************************************************************************\r
55 #define QEI_VELDIV_1            0x00000000  // Predivide by 1\r
56 #define QEI_VELDIV_2            0x00000040  // Predivide by 2\r
57 #define QEI_VELDIV_4            0x00000080  // Predivide by 4\r
58 #define QEI_VELDIV_8            0x000000C0  // Predivide by 8\r
59 #define QEI_VELDIV_16           0x00000100  // Predivide by 16\r
60 #define QEI_VELDIV_32           0x00000140  // Predivide by 32\r
61 #define QEI_VELDIV_64           0x00000180  // Predivide by 64\r
62 #define QEI_VELDIV_128          0x000001C0  // Predivide by 128\r
63 \r
64 //*****************************************************************************\r
65 //\r
66 // Values that can be passed to QEIEnableInts, QEIDisableInts, and QEIClearInts\r
67 // as the ulIntFlags parameter, and returned by QEIGetIntStatus.\r
68 //\r
69 //*****************************************************************************\r
70 #define QEI_INTERROR            0x00000008  // Phase error detected\r
71 #define QEI_INTDIR              0x00000004  // Direction change\r
72 #define QEI_INTTIMER            0x00000002  // Velocity timer expired\r
73 #define QEI_INTINDEX            0x00000001  // Index pulse detected\r
74 \r
75 //*****************************************************************************\r
76 //\r
77 // Prototypes for the APIs.\r
78 //\r
79 //*****************************************************************************\r
80 extern void QEIEnable(unsigned long ulBase);\r
81 extern void QEIDisable(unsigned long ulBase);\r
82 extern void QEIConfigure(unsigned long ulBase, unsigned long ulConfig,\r
83                          unsigned long ulMaxPosition);\r
84 extern unsigned long QEIPositionGet(unsigned long ulBase);\r
85 extern void QEIPositionSet(unsigned long ulBase, unsigned long ulPosition);\r
86 extern long QEIDirectionGet(unsigned long ulBase);\r
87 extern tBoolean QEIErrorGet(unsigned long ulBase);\r
88 extern void QEIVelocityEnable(unsigned long ulBase);\r
89 extern void QEIVelocityDisable(unsigned long ulBase);\r
90 extern void QEIVelocityConfigure(unsigned long ulBase, unsigned long ulPreDiv,\r
91                                  unsigned long ulPeriod);\r
92 extern unsigned long QEIVelocityGet(unsigned long ulBase);\r
93 extern void QEIIntRegister(unsigned long ulBase, void (*pfnHandler)(void));\r
94 extern void QEIIntUnregister(unsigned long ulBase);\r
95 extern void QEIIntEnable(unsigned long ulBase, unsigned long ulIntFlags);\r
96 extern void QEIIntDisable(unsigned long ulBase, unsigned long ulIntFlags);\r
97 extern unsigned long QEIIntStatus(unsigned long ulBase, tBoolean bMasked);\r
98 extern void QEIIntClear(unsigned long ulBase, unsigned long ulIntFlags);\r
99 \r
100 #ifdef __cplusplus\r
101 }\r
102 #endif\r
103 \r
104 #endif // __QEI_H__\r