1 2 3 4 5 6 7 8 9 10 11
12 import ti.catalog.msp430.peripherals.comparator.IComparator as Comparator;
13 import ti.catalog.msp430.peripherals.svs.ISVS as SVS;
14 import ti.catalog.msp430.peripherals.clock.BCSplus as BCSplus;
15
16 /*!
17 * ======== GPIO for MSP430F24x1 ========
18 * MSP430 General Purpose Input Output Ports
19 */
20 metaonly module GPIO_MSP430F24x1 inherits IGPIO {
21 /*!
22 * ======== create ========
23 * Create an instance of this peripheral. Use a customized
24 * init function so that we can get access to the
25 * Comparator_A, SVS, and BCS+ instances.
26 */
27 create(Comparator.Instance comparator, SVS.Instance svs, BCSplus.Instance clock);
28
29 instance:
30 /*! @_nodoc */
31 config Comparator.Instance comparator;
32
33 /*! @_nodoc */
34 config SVS.Instance svs;
35
36 /*! @_nodoc */
37 config BCSplus.Instance clock;
38
39 /*! Define an array to describe all device pins. The 1st dimension
40 * denotes the port, the second the pin on that port. On an
41 * MSP430F24x1 device, there are 6 x 8 = 48 pins total.
42 */
43
44 45
46 47
48 config DevicePin_t devicePins[6][8];
49
50 /*! Implementation of Device Pin Functional Configuration */
51 override config DevicePinFunctionSetting_t devicePinSetting[6][8];
52
53 /*! Determine if each Register needs to be forced set or not */
54 readonly config ForceSetDefaultRegister_t forceSetDefaultRegister[] =
55 [
56 { register : "P1OUT" , regForceSet : true },
57 { register : "P1SEL" , regForceSet : false },
58 { register : "P1DIR" , regForceSet : false },
59 { register : "P1REN" , regForceSet : false },
60 { register : "P1IES" , regForceSet : true },
61 { register : "P1IFG" , regForceSet : true },
62 { register : "P1IE" , regForceSet : false },
63 { register : "P2OUT" , regForceSet : true },
64 { register : "P2SEL" , regForceSet : false },
65 { register : "P2DIR" , regForceSet : false },
66 { register : "P2REN" , regForceSet : false },
67 { register : "P2IES" , regForceSet : true },
68 { register : "P2IFG" , regForceSet : true },
69 { register : "P2IE" , regForceSet : false },
70 { register : "P3OUT" , regForceSet : true },
71 { register : "P3SEL" , regForceSet : false },
72 { register : "P3DIR" , regForceSet : false },
73 { register : "P3REN" , regForceSet : false },
74 { register : "P4OUT" , regForceSet : true },
75 { register : "P4SEL" , regForceSet : false },
76 { register : "P4DIR" , regForceSet : false },
77 { register : "P4REN" , regForceSet : false },
78 { register : "P5OUT" , regForceSet : true },
79 { register : "P5SEL" , regForceSet : false },
80 { register : "P5DIR" , regForceSet : false },
81 { register : "P5REN" , regForceSet : false },
82 { register : "P6OUT" , regForceSet : true },
83 { register : "P6SEL" , regForceSet : false },
84 { register : "P6DIR" , regForceSet : false },
85 { register : "P6REN" , regForceSet : false }
86 ];
87
88 89 90 91 92 93
94
95 /*! Port 1 Output Register */
96 config GpioBits8PxOut_t P1OUT = {
97 Bit0 : BIT0_OFF,
98 Bit1 : BIT1_OFF,
99 Bit2 : BIT2_OFF,
100 Bit3 : BIT3_OFF,
101 Bit4 : BIT4_OFF,
102 Bit5 : BIT5_OFF,
103 Bit6 : BIT6_OFF,
104 Bit7 : BIT7_OFF
105 };
106
107 /*! Port 1 Port Select Register */
108 config GpioBits8PxSel_t P1SEL = {
109 Bit0 : BIT0_OFF,
110 Bit1 : BIT1_OFF,
111 Bit2 : BIT2_OFF,
112 Bit3 : BIT3_OFF,
113 Bit4 : BIT4_OFF,
114 Bit5 : BIT5_OFF,
115 Bit6 : BIT6_OFF,
116 Bit7 : BIT7_OFF
117 };
118
119 /*! Port 1 Direction Register */
120 config GpioBits8PxDir_t P1DIR = {
121 Bit0 : BIT0_OFF,
122 Bit1 : BIT1_OFF,
123 Bit2 : BIT2_OFF,
124 Bit3 : BIT3_OFF,
125 Bit4 : BIT4_OFF,
126 Bit5 : BIT5_OFF,
127 Bit6 : BIT6_OFF,
128 Bit7 : BIT7_OFF
129 };
130
131 /*! Port 1 Resistor Enable Register */
132 config GpioBits8PxRen_t P1REN = {
133 Bit0 : BIT0_OFF,
134 Bit1 : BIT1_OFF,
135 Bit2 : BIT2_OFF,
136 Bit3 : BIT3_OFF,
137 Bit4 : BIT4_OFF,
138 Bit5 : BIT5_OFF,
139 Bit6 : BIT6_OFF,
140 Bit7 : BIT7_OFF
141 };
142
143 /*! Port 1 Interrupt Edge Select Register */
144 config GpioBits8PxIes_t P1IES = {
145 Bit0 : BIT0_OFF,
146 Bit1 : BIT1_OFF,
147 Bit2 : BIT2_OFF,
148 Bit3 : BIT3_OFF,
149 Bit4 : BIT4_OFF,
150 Bit5 : BIT5_OFF,
151 Bit6 : BIT6_OFF,
152 Bit7 : BIT7_OFF
153 };
154
155 /*! Port 1 Interrupt Flag Register */
156 config GpioBits8PxIfg_t P1IFG = {
157 Bit0 : BIT0_OFF,
158 Bit1 : BIT1_OFF,
159 Bit2 : BIT2_OFF,
160 Bit3 : BIT3_OFF,
161 Bit4 : BIT4_OFF,
162 Bit5 : BIT5_OFF,
163 Bit6 : BIT6_OFF,
164 Bit7 : BIT7_OFF
165 };
166
167 /*! Port 1 Interrupt Enable Register */
168 config GpioBits8PxIe_t P1IE = {
169 Bit0 : BIT0_OFF,
170 Bit1 : BIT1_OFF,
171 Bit2 : BIT2_OFF,
172 Bit3 : BIT3_OFF,
173 Bit4 : BIT4_OFF,
174 Bit5 : BIT5_OFF,
175 Bit6 : BIT6_OFF,
176 Bit7 : BIT7_OFF
177 };
178
179 /*! Port 2 Output Register */
180 config GpioBits8PxOut_t P2OUT = {
181 Bit0 : BIT0_OFF,
182 Bit1 : BIT1_OFF,
183 Bit2 : BIT2_OFF,
184 Bit3 : BIT3_OFF,
185 Bit4 : BIT4_OFF,
186 Bit5 : BIT5_OFF,
187 Bit6 : BIT6_OFF,
188 Bit7 : BIT7_OFF
189 };
190
191 /*! Port 2 Port Select Register */
192 config GpioBits8PxSel_t P2SEL = {
193 Bit0 : BIT0_OFF,
194 Bit1 : BIT1_OFF,
195 Bit2 : BIT2_OFF,
196 Bit3 : BIT3_OFF,
197 Bit4 : BIT4_OFF,
198 Bit5 : BIT5_OFF,
199 Bit6 : BIT6_OFF,
200 Bit7 : BIT7_OFF
201 };
202
203 /*! Port 2 Direction Register */
204 config GpioBits8PxDir_t P2DIR = {
205 Bit0 : BIT0_OFF,
206 Bit1 : BIT1_OFF,
207 Bit2 : BIT2_OFF,
208 Bit3 : BIT3_OFF,
209 Bit4 : BIT4_OFF,
210 Bit5 : BIT5_OFF,
211 Bit6 : BIT6_OFF,
212 Bit7 : BIT7_OFF
213 };
214
215 /*! Port 2 Resistor Enable Register */
216 config GpioBits8PxRen_t P2REN = {
217 Bit0 : BIT0_OFF,
218 Bit1 : BIT1_OFF,
219 Bit2 : BIT2_OFF,
220 Bit3 : BIT3_OFF,
221 Bit4 : BIT4_OFF,
222 Bit5 : BIT5_OFF,
223 Bit6 : BIT6_OFF,
224 Bit7 : BIT7_OFF
225 };
226
227 /*! Port 2 Interrupt Edge Select Register */
228 config GpioBits8PxIes_t P2IES = {
229 Bit0 : BIT0_OFF,
230 Bit1 : BIT1_OFF,
231 Bit2 : BIT2_OFF,
232 Bit3 : BIT3_OFF,
233 Bit4 : BIT4_OFF,
234 Bit5 : BIT5_OFF,
235 Bit6 : BIT6_OFF,
236 Bit7 : BIT7_OFF
237 };
238
239 /*! Port 2 Interrupt Flag Register */
240 config GpioBits8PxIfg_t P2IFG = {
241 Bit0 : BIT0_OFF,
242 Bit1 : BIT1_OFF,
243 Bit2 : BIT2_OFF,
244 Bit3 : BIT3_OFF,
245 Bit4 : BIT4_OFF,
246 Bit5 : BIT5_OFF,
247 Bit6 : BIT6_OFF,
248 Bit7 : BIT7_OFF
249 };
250
251 /*! Port 2 Interrupt Enable Register */
252 config GpioBits8PxIe_t P2IE = {
253 Bit0 : BIT0_OFF,
254 Bit1 : BIT1_OFF,
255 Bit2 : BIT2_OFF,
256 Bit3 : BIT3_OFF,
257 Bit4 : BIT4_OFF,
258 Bit5 : BIT5_OFF,
259 Bit6 : BIT6_OFF,
260 Bit7 : BIT7_OFF
261 };
262
263 /*! Port 3 Output Register */
264 config GpioBits8PxOut_t P3OUT = {
265 Bit0 : BIT0_OFF,
266 Bit1 : BIT1_OFF,
267 Bit2 : BIT2_OFF,
268 Bit3 : BIT3_OFF,
269 Bit4 : BIT4_OFF,
270 Bit5 : BIT5_OFF,
271 Bit6 : BIT6_OFF,
272 Bit7 : BIT7_OFF
273 };
274
275 /*! Port 3 Port Select Register */
276 config GpioBits8PxSel_t P3SEL = {
277 Bit0 : BIT0_OFF,
278 Bit1 : BIT1_OFF,
279 Bit2 : BIT2_OFF,
280 Bit3 : BIT3_OFF,
281 Bit4 : BIT4_OFF,
282 Bit5 : BIT5_OFF,
283 Bit6 : BIT6_OFF,
284 Bit7 : BIT7_OFF
285 };
286
287 /*! Port 3 Direction Register */
288 config GpioBits8PxDir_t P3DIR = {
289 Bit0 : BIT0_OFF,
290 Bit1 : BIT1_OFF,
291 Bit2 : BIT2_OFF,
292 Bit3 : BIT3_OFF,
293 Bit4 : BIT4_OFF,
294 Bit5 : BIT5_OFF,
295 Bit6 : BIT6_OFF,
296 Bit7 : BIT7_OFF
297 };
298
299 /*! Port 3 Resistor Enable Register */
300 config GpioBits8PxRen_t P3REN = {
301 Bit0 : BIT0_OFF,
302 Bit1 : BIT1_OFF,
303 Bit2 : BIT2_OFF,
304 Bit3 : BIT3_OFF,
305 Bit4 : BIT4_OFF,
306 Bit5 : BIT5_OFF,
307 Bit6 : BIT6_OFF,
308 Bit7 : BIT7_OFF
309 };
310
311 /*! Port 4 Output Register */
312 config GpioBits8PxOut_t P4OUT = {
313 Bit0 : BIT0_OFF,
314 Bit1 : BIT1_OFF,
315 Bit2 : BIT2_OFF,
316 Bit3 : BIT3_OFF,
317 Bit4 : BIT4_OFF,
318 Bit5 : BIT5_OFF,
319 Bit6 : BIT6_OFF,
320 Bit7 : BIT7_OFF
321 };
322
323 /*! Port 4 Port Select Register */
324 config GpioBits8PxSel_t P4SEL = {
325 Bit0 : BIT0_OFF,
326 Bit1 : BIT1_OFF,
327 Bit2 : BIT2_OFF,
328 Bit3 : BIT3_OFF,
329 Bit4 : BIT4_OFF,
330 Bit5 : BIT5_OFF,
331 Bit6 : BIT6_OFF,
332 Bit7 : BIT7_OFF
333 };
334
335 /*! Port 4 Direction Register */
336 config GpioBits8PxDir_t P4DIR = {
337 Bit0 : BIT0_OFF,
338 Bit1 : BIT1_OFF,
339 Bit2 : BIT2_OFF,
340 Bit3 : BIT3_OFF,
341 Bit4 : BIT4_OFF,
342 Bit5 : BIT5_OFF,
343 Bit6 : BIT6_OFF,
344 Bit7 : BIT7_OFF
345 };
346
347 /*! Port 4 Resistor Enable Register */
348 config GpioBits8PxRen_t P4REN = {
349 Bit0 : BIT0_OFF,
350 Bit1 : BIT1_OFF,
351 Bit2 : BIT2_OFF,
352 Bit3 : BIT3_OFF,
353 Bit4 : BIT4_OFF,
354 Bit5 : BIT5_OFF,
355 Bit6 : BIT6_OFF,
356 Bit7 : BIT7_OFF
357 };
358
359 /*! Port 5 Output Register */
360 config GpioBits8PxOut_t P5OUT = {
361 Bit0 : BIT0_OFF,
362 Bit1 : BIT1_OFF,
363 Bit2 : BIT2_OFF,
364 Bit3 : BIT3_OFF,
365 Bit4 : BIT4_OFF,
366 Bit5 : BIT5_OFF,
367 Bit6 : BIT6_OFF,
368 Bit7 : BIT7_OFF
369 };
370
371 /*! Port 5 Port Select Register */
372 config GpioBits8PxSel_t P5SEL = {
373 Bit0 : BIT0_OFF,
374 Bit1 : BIT1_OFF,
375 Bit2 : BIT2_OFF,
376 Bit3 : BIT3_OFF,
377 Bit4 : BIT4_OFF,
378 Bit5 : BIT5_OFF,
379 Bit6 : BIT6_OFF,
380 Bit7 : BIT7_OFF
381 };
382
383 /*! Port 5 Direction Register */
384 config GpioBits8PxDir_t P5DIR = {
385 Bit0 : BIT0_OFF,
386 Bit1 : BIT1_OFF,
387 Bit2 : BIT2_OFF,
388 Bit3 : BIT3_OFF,
389 Bit4 : BIT4_OFF,
390 Bit5 : BIT5_OFF,
391 Bit6 : BIT6_OFF,
392 Bit7 : BIT7_OFF
393 };
394
395 /*! Port 5 Resistor Enable Register */
396 config GpioBits8PxRen_t P5REN = {
397 Bit0 : BIT0_OFF,
398 Bit1 : BIT1_OFF,
399 Bit2 : BIT2_OFF,
400 Bit3 : BIT3_OFF,
401 Bit4 : BIT4_OFF,
402 Bit5 : BIT5_OFF,
403 Bit6 : BIT6_OFF,
404 Bit7 : BIT7_OFF
405 };
406
407 /*! Port 6 Output Register */
408 config GpioBits8PxOut_t P6OUT = {
409 Bit0 : BIT0_OFF,
410 Bit1 : BIT1_OFF,
411 Bit2 : BIT2_OFF,
412 Bit3 : BIT3_OFF,
413 Bit4 : BIT4_OFF,
414 Bit5 : BIT5_OFF,
415 Bit6 : BIT6_OFF,
416 Bit7 : BIT7_OFF
417 };
418
419 /*! Port 6 Port Select Register */
420 config GpioBits8PxSel_t P6SEL = {
421 Bit0 : BIT0_OFF,
422 Bit1 : BIT1_OFF,
423 Bit2 : BIT2_OFF,
424 Bit3 : BIT3_OFF,
425 Bit4 : BIT4_OFF,
426 Bit5 : BIT5_OFF,
427 Bit6 : BIT6_OFF,
428 Bit7 : BIT7_OFF
429 };
430
431 /*! Port 6 Direction Register */
432 config GpioBits8PxDir_t P6DIR = {
433 Bit0 : BIT0_OFF,
434 Bit1 : BIT1_OFF,
435 Bit2 : BIT2_OFF,
436 Bit3 : BIT3_OFF,
437 Bit4 : BIT4_OFF,
438 Bit5 : BIT5_OFF,
439 Bit6 : BIT6_OFF,
440 Bit7 : BIT7_OFF
441 };
442
443 /*! Port 6 Resistor Enable Register */
444 config GpioBits8PxRen_t P6REN = {
445 Bit0 : BIT0_OFF,
446 Bit1 : BIT1_OFF,
447 Bit2 : BIT2_OFF,
448 Bit3 : BIT3_OFF,
449 Bit4 : BIT4_OFF,
450 Bit5 : BIT5_OFF,
451 Bit6 : BIT6_OFF,
452 Bit7 : BIT7_OFF
453 };
454 }