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