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