7 #ifndef __MSP430WARE_TIMER_A_H__
8 #define __MSP430WARE_TIMER_A_H__
12 #ifdef __MSP430_HAS_TxA7__
33 #define TIMER_A_THRESHOLD 50
41 typedef struct Timer_A_initContinuousModeParam {
71 uint16_t clockSourceDivider;
76 uint16_t timerInterruptEnable_TAIE;
85 } Timer_A_initContinuousModeParam;
93 typedef struct Timer_A_initCaptureModeParam {
104 uint16_t captureRegister;
111 uint16_t captureMode;
118 uint16_t captureInputSelect;
123 uint16_t synchronizeCaptureSource;
128 uint16_t captureInterruptEnable;
139 uint16_t captureOutputMode;
140 } Timer_A_initCaptureModeParam;
148 typedef struct Timer_A_initUpDownModeParam {
155 uint16_t clockSource;
178 uint16_t clockSourceDivider;
180 uint16_t timerPeriod;
185 uint16_t timerInterruptEnable_TAIE;
190 uint16_t captureCompareInterruptEnable_CCR0_CCIE;
199 } Timer_A_initUpDownModeParam;
206 typedef struct Timer_A_outputPWMParam {
213 uint16_t clockSource;
236 uint16_t clockSourceDivider;
238 uint16_t timerPeriod;
249 uint16_t compareRegister;
260 uint16_t compareOutputMode;
263 } Timer_A_outputPWMParam;
270 typedef struct Timer_A_initUpModeParam {
277 uint16_t clockSource;
300 uint16_t clockSourceDivider;
303 uint16_t timerPeriod;
308 uint16_t timerInterruptEnable_TAIE;
313 uint16_t captureCompareInterruptEnable_CCR0_CCIE;
322 } Timer_A_initUpModeParam;
330 typedef struct Timer_A_initCompareModeParam {
341 uint16_t compareRegister;
346 uint16_t compareInterruptEnable;
357 uint16_t compareOutputMode;
359 uint16_t compareValue;
360 } Timer_A_initCompareModeParam;
370 #define TIMER_A_CLOCKSOURCE_DIVIDER_1 0x00
371 #define TIMER_A_CLOCKSOURCE_DIVIDER_2 0x08
372 #define TIMER_A_CLOCKSOURCE_DIVIDER_3 0x02
373 #define TIMER_A_CLOCKSOURCE_DIVIDER_4 0x10
374 #define TIMER_A_CLOCKSOURCE_DIVIDER_5 0x04
375 #define TIMER_A_CLOCKSOURCE_DIVIDER_6 0x05
376 #define TIMER_A_CLOCKSOURCE_DIVIDER_7 0x06
377 #define TIMER_A_CLOCKSOURCE_DIVIDER_8 0x18
378 #define TIMER_A_CLOCKSOURCE_DIVIDER_10 0x0C
379 #define TIMER_A_CLOCKSOURCE_DIVIDER_12 0x0D
380 #define TIMER_A_CLOCKSOURCE_DIVIDER_14 0x0E
381 #define TIMER_A_CLOCKSOURCE_DIVIDER_16 0x0F
382 #define TIMER_A_CLOCKSOURCE_DIVIDER_20 0x14
383 #define TIMER_A_CLOCKSOURCE_DIVIDER_24 0x15
384 #define TIMER_A_CLOCKSOURCE_DIVIDER_28 0x16
385 #define TIMER_A_CLOCKSOURCE_DIVIDER_32 0x17
386 #define TIMER_A_CLOCKSOURCE_DIVIDER_40 0x1C
387 #define TIMER_A_CLOCKSOURCE_DIVIDER_48 0x1D
388 #define TIMER_A_CLOCKSOURCE_DIVIDER_56 0x1E
389 #define TIMER_A_CLOCKSOURCE_DIVIDER_64 0x1F
397 #define TIMER_A_STOP_MODE MC_0
398 #define TIMER_A_UP_MODE MC_1
399 #define TIMER_A_CONTINUOUS_MODE MC_2
400 #define TIMER_A_UPDOWN_MODE MC_3
409 #define TIMER_A_DO_CLEAR TACLR
410 #define TIMER_A_SKIP_CLEAR 0x00
419 #define TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK TASSEL__TACLK
420 #define TIMER_A_CLOCKSOURCE_ACLK TASSEL__ACLK
421 #define TIMER_A_CLOCKSOURCE_SMCLK TASSEL__SMCLK
422 #define TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK TASSEL__INCLK
431 #define TIMER_A_TAIE_INTERRUPT_ENABLE TAIE
432 #define TIMER_A_TAIE_INTERRUPT_DISABLE 0x00
440 #define TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE CCIE
441 #define TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE 0x00
449 #define TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE 0x00
450 #define TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE CCIE
458 #define TIMER_A_CAPTURE_INPUTSELECT_CCIxA CCIS_0
459 #define TIMER_A_CAPTURE_INPUTSELECT_CCIxB CCIS_1
460 #define TIMER_A_CAPTURE_INPUTSELECT_GND CCIS_2
461 #define TIMER_A_CAPTURE_INPUTSELECT_Vcc CCIS_3
471 #define TIMER_A_OUTPUTMODE_OUTBITVALUE OUTMOD_0
472 #define TIMER_A_OUTPUTMODE_SET OUTMOD_1
473 #define TIMER_A_OUTPUTMODE_TOGGLE_RESET OUTMOD_2
474 #define TIMER_A_OUTPUTMODE_SET_RESET OUTMOD_3
475 #define TIMER_A_OUTPUTMODE_TOGGLE OUTMOD_4
476 #define TIMER_A_OUTPUTMODE_RESET OUTMOD_5
477 #define TIMER_A_OUTPUTMODE_TOGGLE_SET OUTMOD_6
478 #define TIMER_A_OUTPUTMODE_RESET_SET OUTMOD_7
497 #define TIMER_A_CAPTURECOMPARE_REGISTER_0 0x02
498 #define TIMER_A_CAPTURECOMPARE_REGISTER_1 0x04
499 #define TIMER_A_CAPTURECOMPARE_REGISTER_2 0x06
500 #define TIMER_A_CAPTURECOMPARE_REGISTER_3 0x08
501 #define TIMER_A_CAPTURECOMPARE_REGISTER_4 0x0A
502 #define TIMER_A_CAPTURECOMPARE_REGISTER_5 0x0C
503 #define TIMER_A_CAPTURECOMPARE_REGISTER_6 0x0E
511 #define TIMER_A_CAPTUREMODE_NO_CAPTURE CM_0
512 #define TIMER_A_CAPTUREMODE_RISING_EDGE CM_1
513 #define TIMER_A_CAPTUREMODE_FALLING_EDGE CM_2
514 #define TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE CM_3
522 #define TIMER_A_CAPTURE_ASYNCHRONOUS 0x00
523 #define TIMER_A_CAPTURE_SYNCHRONOUS SCS
532 #define TIMER_A_CAPTURE_OVERFLOW COV
533 #define TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG CCIFG
541 #define TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT SCCI
542 #define TIMER_A_READ_CAPTURE_COMPARE_INPUT CCI
551 #define TIMER_A_CAPTURECOMPARE_INPUT_HIGH 0x01
552 #define TIMER_A_CAPTURECOMPARE_INPUT_LOW 0x00
561 #define TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH OUT
562 #define TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW 0x00
570 #define TIMER_A_INTERRUPT_NOT_PENDING 0x00
571 #define TIMER_A_INTERRUPT_PENDING 0x01
599 extern void Timer_A_startCounter(uint16_t baseAddress,
614 extern void Timer_A_initContinuousMode(uint16_t baseAddress,
615 Timer_A_initContinuousModeParam *
param);
630 extern void Timer_A_initUpMode(uint16_t baseAddress,
631 Timer_A_initUpModeParam *
param);
646 extern void Timer_A_initUpDownMode(uint16_t baseAddress,
647 Timer_A_initUpDownModeParam *
param);
661 extern void Timer_A_initCaptureMode(uint16_t baseAddress,
662 Timer_A_initCaptureModeParam *
param);
676 extern void Timer_A_initCompareMode(uint16_t baseAddress,
677 Timer_A_initCompareModeParam *
param);
692 extern void Timer_A_enableInterrupt(uint16_t baseAddress);
705 extern void Timer_A_disableInterrupt(uint16_t baseAddress);
719 extern uint32_t Timer_A_getInterruptStatus(uint16_t baseAddress);
743 extern void Timer_A_enableCaptureCompareInterrupt(uint16_t baseAddress,
744 uint16_t captureCompareRegister);
766 extern void Timer_A_disableCaptureCompareInterrupt(uint16_t baseAddress,
767 uint16_t captureCompareRegister);
794 extern uint32_t Timer_A_getCaptureCompareInterruptStatus(uint16_t baseAddress,
795 uint16_t captureCompareRegister,
809 extern void Timer_A_clear(uint16_t baseAddress);
835 extern uint8_t Timer_A_getSynchronizedCaptureCompareInput(uint16_t baseAddress,
836 uint16_t captureCompareRegister,
837 uint16_t
synchronized);
859 extern uint8_t Timer_A_getOutputForOutputModeOutBitValue(uint16_t baseAddress,
860 uint16_t captureCompareRegister);
880 extern uint16_t Timer_A_getCaptureCompareCount(uint16_t baseAddress,
881 uint16_t captureCompareRegister);
907 extern void Timer_A_setOutputForOutputModeOutBitValue(uint16_t baseAddress,
908 uint16_t captureCompareRegister,
909 uint8_t outputModeOutBitValue);
924 extern void Timer_A_outputPWM(uint16_t baseAddress,
925 Timer_A_outputPWMParam *
param);
938 extern void Timer_A_stop(uint16_t baseAddress);
963 extern void Timer_A_setCompareValue(uint16_t baseAddress,
964 uint16_t compareRegister,
965 uint16_t compareValue);
999 extern void Timer_A_setOutputMode(uint16_t baseAddress,
1000 uint16_t compareRegister,
1001 uint16_t compareOutputMode);
1014 extern void Timer_A_clearTimerInterrupt(uint16_t baseAddress);
1037 extern void Timer_A_clearCaptureCompareInterrupt(uint16_t baseAddress,
1038 uint16_t captureCompareRegister);
1054 extern uint16_t Timer_A_getCounterValue(uint16_t baseAddress);
MPU_initThreeSegmentsParam param