]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_LM3S811_IAR/LuminaryCode/hw_pwm.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_LM3S811_IAR / LuminaryCode / hw_pwm.h
1 //*****************************************************************************\r
2 //\r
3 // hw_pwm.h - Defines and Macros for Pulse Width Modulation (PWM) ports\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 __HW_PWM_H__\r
29 #define __HW_PWM_H__\r
30 \r
31 //*****************************************************************************\r
32 //\r
33 // PWM Module Register Offsets.\r
34 //\r
35 //*****************************************************************************\r
36 #define PWM_O_CTL               0x00000000  // PWM Master Control register\r
37 #define PWM_O_SYNC              0x00000004  // PWM Time Base Sync register\r
38 #define PWM_O_ENABLE            0x00000008  // PWM Output Enable register\r
39 #define PWM_O_INVERT            0x0000000C  // PWM Output Inversion register\r
40 #define PWM_O_FAULT             0x00000010  // PWM Output Fault register\r
41 #define PWM_O_INTEN             0x00000014  // PWM Interrupt Enable register\r
42 #define PWM_O_RIS               0x00000018  // PWM Interrupt Raw Status reg.\r
43 #define PWM_O_ISC               0x0000001C  // PWM Interrupt Status register\r
44 #define PWM_O_STATUS            0x00000020  // PWM Status register\r
45 \r
46 //*****************************************************************************\r
47 //\r
48 // The following define the bit fields in the PWM Master Control register.\r
49 //\r
50 //*****************************************************************************\r
51 #define PWM_CTL_GLOBAL_SYNC2    0x00000004  // Global sync generator 2\r
52 #define PWM_CTL_GLOBAL_SYNC1    0x00000002  // Global sync generator 1\r
53 #define PWM_CTL_GLOBAL_SYNC0    0x00000001  // Global sync generator 0\r
54 \r
55 //*****************************************************************************\r
56 //\r
57 // The following define the bit fields in the PWM Time Base Sync register.\r
58 //\r
59 //*****************************************************************************\r
60 #define PWM_SYNC_SYNC2          0x00000004  // Reset generator 2 counter\r
61 #define PWM_SYNC_SYNC1          0x00000002  // Reset generator 1 counter\r
62 #define PWM_SYNC_SYNC0          0x00000001  // Reset generator 0 counter\r
63 \r
64 //*****************************************************************************\r
65 //\r
66 // The following define the bit fields in the PWM Output Enable register.\r
67 //\r
68 //*****************************************************************************\r
69 #define PWM_ENABLE_PWM5EN       0x00000020  // PWM5 pin enable\r
70 #define PWM_ENABLE_PWM4EN       0x00000010  // PWM4 pin enable\r
71 #define PWM_ENABLE_PWM3EN       0x00000008  // PWM3 pin enable\r
72 #define PWM_ENABLE_PWM2EN       0x00000004  // PWM2 pin enable\r
73 #define PWM_ENABLE_PWM1EN       0x00000002  // PWM1 pin enable\r
74 #define PWM_ENABLE_PWM0EN       0x00000001  // PWM0 pin enable\r
75 \r
76 //*****************************************************************************\r
77 //\r
78 // The following define the bit fields in the PWM Inversion register.\r
79 //\r
80 //*****************************************************************************\r
81 #define PWM_INVERT_PWM5INV      0x00000020  // PWM5 pin invert\r
82 #define PWM_INVERT_PWM4INV      0x00000010  // PWM4 pin invert\r
83 #define PWM_INVERT_PWM3INV      0x00000008  // PWM3 pin invert\r
84 #define PWM_INVERT_PWM2INV      0x00000004  // PWM2 pin invert\r
85 #define PWM_INVERT_PWM1INV      0x00000002  // PWM1 pin invert\r
86 #define PWM_INVERT_PWM0INV      0x00000001  // PWM0 pin invert\r
87 \r
88 //*****************************************************************************\r
89 //\r
90 // The following define the bit fields in the PWM Fault register.\r
91 //\r
92 //*****************************************************************************\r
93 #define PWM_FAULT_FAULT5        0x00000020  // PWM5 pin fault\r
94 #define PWM_FAULT_FAULT4        0x00000010  // PWM5 pin fault\r
95 #define PWM_FAULT_FAULT3        0x00000008  // PWM5 pin fault\r
96 #define PWM_FAULT_FAULT2        0x00000004  // PWM5 pin fault\r
97 #define PWM_FAULT_FAULT1        0x00000002  // PWM5 pin fault\r
98 #define PWM_FAULT_FAULT0        0x00000001  // PWM5 pin fault\r
99 \r
100 //*****************************************************************************\r
101 //\r
102 // PWM Interrupt Register bit definitions.\r
103 //\r
104 //*****************************************************************************\r
105 #define PWM_INT_INTFAULT        0x00010000  // Fault interrupt pending\r
106 \r
107 //*****************************************************************************\r
108 //\r
109 // The following define the bit fields in the PWM Status register.\r
110 //\r
111 //*****************************************************************************\r
112 #define PWM_STATUS_FAULT        0x00000001  // Fault status\r
113 \r
114 //*****************************************************************************\r
115 //\r
116 // PWM Generator standard offsets.\r
117 //\r
118 //*****************************************************************************\r
119 #define PWM_GEN_0_OFFSET        0x00000040  // PWM0 base\r
120 #define PWM_GEN_1_OFFSET        0x00000080  // PWM1 base\r
121 #define PWM_GEN_2_OFFSET        0x000000C0  // PWM2 base\r
122 \r
123 #define PWM_O_X_CTL             0x00000000  // Gen Control Reg\r
124 #define PWM_O_X_INTEN           0x00000004  // Gen Int/Trig Enable Reg\r
125 #define PWM_O_X_RIS             0x00000008  // Gen Raw Int Status Reg\r
126 #define PWM_O_X_ISC             0x0000000C  // Gen Int Status Reg\r
127 #define PWM_O_X_LOAD            0x00000010  // Gen Load Reg\r
128 #define PWM_O_X_COUNT           0x00000014  // Gen Counter Reg\r
129 #define PWM_O_X_CMPA            0x00000018  // Gen Compare A Reg\r
130 #define PWM_O_X_CMPB            0x0000001C  // Gen Compare B Reg\r
131 #define PWM_O_X_GENA            0x00000020  // Gen Generator A Ctrl Reg\r
132 #define PWM_O_X_GENB            0x00000024  // Gen Generator B Ctrl Reg\r
133 #define PWM_O_X_DBCTL           0x00000028  // Gen Dead Band Ctrl Reg\r
134 #define PWM_O_X_DBRISE          0x0000002C  // Gen DB Rising Edge Delay Reg\r
135 #define PWM_O_X_DBFALL          0x00000030  // Gen DB Falling Edge Delay Reg\r
136 \r
137 //*****************************************************************************\r
138 //\r
139 // PWM_X Control Register bit definitions.\r
140 //\r
141 //*****************************************************************************\r
142 #define PWM_X_CTL_ENABLE        0x00000001  // Master enable for gen block\r
143 #define PWM_X_CTL_MODE          0x00000002  // Counter mode, down or up/down\r
144 #define PWM_X_CTL_DEBUG         0x00000004  // Debug mode\r
145 #define PWM_X_CTL_LOADUPD       0x00000008  // Update mode for the load reg\r
146 #define PWM_X_CTL_CMPAUPD       0x00000010  // Update mode for comp A reg\r
147 #define PWM_X_CTL_CMPBUPD       0x00000020  // Update mode for comp B reg\r
148 \r
149 //*****************************************************************************\r
150 //\r
151 // PWM_X Interrupt/Trigger Enable Register bit definitions.\r
152 //\r
153 //*****************************************************************************\r
154 #define PWM_X_INTEN_INTCNTZERO  0x00000001  // Int if COUNT = 0\r
155 #define PWM_X_INTEN_INTCNTLOAD  0x00000002  // Int if COUNT = LOAD\r
156 #define PWM_X_INTEN_INTCMPAU    0x00000004  // Int if COUNT = CMPA U\r
157 #define PWM_X_INTEN_INTCMPAD    0x00000008  // Int if COUNT = CMPA D\r
158 #define PWM_X_INTEN_INTCMPBU    0x00000010  // Int if COUNT = CMPA U\r
159 #define PWM_X_INTEN_INTCMPBD    0x00000020  // Int if COUNT = CMPA D\r
160 #define PWM_X_INTEN_TRCNTZERO   0x00000100  // Trig if COUNT = 0\r
161 #define PWM_X_INTEN_TRCNTLOAD   0x00000200  // Trig if COUNT = LOAD\r
162 #define PWM_X_INTEN_TRCMPAU     0x00000400  // Trig if COUNT = CMPA U\r
163 #define PWM_X_INTEN_TRCMPAD     0x00000800  // Trig if COUNT = CMPA D\r
164 #define PWM_X_INTEN_TRCMPBU     0x00001000  // Trig if COUNT = CMPA U\r
165 #define PWM_X_INTEN_TRCMPBD     0x00002000  // Trig if COUNT = CMPA D\r
166 \r
167 //*****************************************************************************\r
168 //\r
169 // PWM_X Raw Interrupt Status Register bit definitions.\r
170 //\r
171 //*****************************************************************************\r
172 #define PWM_X_RIS_INTCNTZERO    0x00000001  // PWM_X_COUNT = 0 int\r
173 #define PWM_X_RIS_INTCNTLOAD    0x00000002  // PWM_X_COUNT = PWM_X_LOAD int\r
174 #define PWM_X_RIS_INTCMPAU      0x00000004  // PWM_X_COUNT = PWM_X_CMPA U int\r
175 #define PWM_X_RIS_INTCMPAD      0x00000008  // PWM_X_COUNT = PWM_X_CMPA D int\r
176 #define PWM_X_RIS_INTCMPBU      0x00000010  // PWM_X_COUNT = PWM_X_CMPB U int\r
177 #define PWM_X_RIS_INTCMPBD      0x00000020  // PWM_X_COUNT = PWM_X_CMPB D int\r
178 \r
179 //*****************************************************************************\r
180 //\r
181 // PWM_X Interrupt Status Register bit definitions.\r
182 //\r
183 //*****************************************************************************\r
184 #define PWM_X_INT_INTCNTZERO    0x00000001  // PWM_X_COUNT = 0 received\r
185 #define PWM_X_INT_INTCNTLOAD    0x00000002  // PWM_X_COUNT = PWM_X_LOAD rcvd\r
186 #define PWM_X_INT_INTCMPAU      0x00000004  // PWM_X_COUNT = PWM_X_CMPA U rcvd\r
187 #define PWM_X_INT_INTCMPAD      0x00000008  // PWM_X_COUNT = PWM_X_CMPA D rcvd\r
188 #define PWM_X_INT_INTCMPBU      0x00000010  // PWM_X_COUNT = PWM_X_CMPB U rcvd\r
189 #define PWM_X_INT_INTCMPBD      0x00000020  // PWM_X_COUNT = PWM_X_CMPB D rcvd\r
190 \r
191 //*****************************************************************************\r
192 //\r
193 // PWM_X Generator A/B Control Register bit definitions.\r
194 //\r
195 //*****************************************************************************\r
196 #define PWM_X_GEN_Y_ACTZERO     0x00000003  // Act PWM_X_COUNT = 0\r
197 #define PWM_X_GEN_Y_ACTLOAD     0x0000000C  // Act PWM_X_COUNT = PWM_X_LOAD\r
198 #define PWM_X_GEN_Y_ACTCMPAU    0x00000030  // Act PWM_X_COUNT = PWM_X_CMPA U\r
199 #define PWM_X_GEN_Y_ACTCMPAD    0x000000C0  // Act PWM_X_COUNT = PWM_X_CMPA D\r
200 #define PWM_X_GEN_Y_ACTCMPBU    0x00000300  // Act PWM_X_COUNT = PWM_X_CMPB U\r
201 #define PWM_X_GEN_Y_ACTCMPBD    0x00000C00  // Act PWM_X_COUNT = PWM_X_CMPB D\r
202 \r
203 //*****************************************************************************\r
204 //\r
205 // PWM_X Generator A/B Control Register action definitions.\r
206 //\r
207 //*****************************************************************************\r
208 #define PWM_GEN_ACT_NONE        0x0         // Do nothing\r
209 #define PWM_GEN_ACT_INV         0x1         // Invert the output signal\r
210 #define PWM_GEN_ACT_ZERO        0x2         // Set the output signal to zero\r
211 #define PWM_GEN_ACT_ONE         0x3         // Set the output signal to one\r
212 #define PWM_GEN_ACT_ZERO_SHIFT  0           // Shift amount for the zero action\r
213 #define PWM_GEN_ACT_LOAD_SHIFT  2           // Shift amount for the load action\r
214 #define PWM_GEN_ACT_A_UP_SHIFT  4           // Shift amount for the A up action\r
215 #define PWM_GEN_ACT_A_DN_SHIFT  6           // Shift amount for the A dn action\r
216 #define PWM_GEN_ACT_B_UP_SHIFT  8           // Shift amount for the B up action\r
217 #define PWM_GEN_ACT_B_DN_SHIFT  10          // Shift amount for the B dn action\r
218 \r
219 //*****************************************************************************\r
220 //\r
221 // PWM_X Dead Band Control Register bit definitions.\r
222 //\r
223 //*****************************************************************************\r
224 #define PWM_DBCTL_ENABLE        0x00000001  // Enable dead band insertion\r
225 \r
226 //*****************************************************************************\r
227 //\r
228 // PWM Register reset values.\r
229 //\r
230 //*****************************************************************************\r
231 #define PWM_RV_CTL              0x00000000  // Master control of the PWM module\r
232 #define PWM_RV_SYNC             0x00000000  // Counter synch for PWM generators\r
233 #define PWM_RV_ENABLE           0x00000000  // Master enable for the PWM\r
234                                             // output pins\r
235 #define PWM_RV_INVERT           0x00000000  // Inversion control for\r
236                                             // PWM output pins\r
237 #define PWM_RV_FAULT            0x00000000  // Fault handling for the PWM\r
238                                             // output pins\r
239 #define PWM_RV_INTEN            0x00000000  // Interrupt enable\r
240 #define PWM_RV_RIS              0x00000000  // Raw interrupt status\r
241 #define PWM_RV_ISC              0x00000000  // Interrupt status and clearing\r
242 #define PWM_RV_STATUS           0x00000000  // Status\r
243 #define PWM_RV_X_CTL            0x00000000  // Master control of the PWM\r
244                                             // generator block\r
245 #define PWM_RV_X_INTEN          0x00000000  // Interrupt and trigger enable\r
246 #define PWM_RV_X_RIS            0x00000000  // Raw interrupt status\r
247 #define PWM_RV_X_ISC            0x00000000  // Interrupt status and clearing\r
248 #define PWM_RV_X_LOAD           0x00000000  // The load value for the counter\r
249 #define PWM_RV_X_COUNT          0x00000000  // The current counter value\r
250 #define PWM_RV_X_CMPA           0x00000000  // The comparator A value\r
251 #define PWM_RV_X_CMPB           0x00000000  // The comparator B value\r
252 #define PWM_RV_X_GENA           0x00000000  // Controls PWM generator A\r
253 #define PWM_RV_X_GENB           0x00000000  // Controls PWM generator B\r
254 #define PWM_RV_X_DBCTL          0x00000000  // Control the dead band generator\r
255 #define PWM_RV_X_DBRISE         0x00000000  // The dead band rising edge delay\r
256                                             // count\r
257 #define PWM_RV_X_DBFALL         0x00000000  // The dead band falling edge delay\r
258                                             // count\r
259 \r
260 #endif //  __HW_PWM_H__\r