7 #ifndef __MSP430WARE_TIMER_D_H__
8 #define __MSP430WARE_TIMER_D_H__
12 #ifdef __MSP430_HAS_TxD7__
33 #define TIMER_D_THRESHOLD 50
40 typedef struct Timer_D_initUpModeParam {
70 uint16_t clockSourceDivider;
76 uint16_t clockingMode;
84 uint16_t timerInterruptEnable_TDIE;
89 uint16_t captureCompareInterruptEnable_CCR0_CCIE;
96 } Timer_D_initUpModeParam;
104 typedef struct Timer_D_initCompareModeParam {
114 uint16_t compareRegister;
119 uint16_t compareInterruptEnable;
130 uint16_t compareOutputMode;
132 uint16_t compareValue;
133 } Timer_D_initCompareModeParam;
141 typedef struct Timer_D_initContinuousModeParam {
148 uint16_t clockSource;
171 uint16_t clockSourceDivider;
177 uint16_t clockingMode;
182 uint16_t timerInterruptEnable_TDIE;
189 } Timer_D_initContinuousModeParam;
197 typedef struct Timer_D_initHighResGeneratorInRegulatedModeParam {
204 uint16_t clockSource;
227 uint16_t clockSourceDivider;
233 uint16_t clockingMode;
238 uint8_t highResClockMultiplyFactor;
245 uint8_t highResClockDivider;
246 } Timer_D_initHighResGeneratorInRegulatedModeParam;
254 typedef struct Timer_D_initUpDownModeParam {
261 uint16_t clockSource;
284 uint16_t clockSourceDivider;
290 uint16_t clockingMode;
292 uint16_t timerPeriod;
297 uint16_t timerInterruptEnable_TDIE;
302 uint16_t captureCompareInterruptEnable_CCR0_CCIE;
309 } Timer_D_initUpDownModeParam;
317 typedef struct Timer_D_combineTDCCRToOutputPWMParam {
324 uint16_t clockSource;
347 uint16_t clockSourceDivider;
353 uint16_t clockingMode;
355 uint16_t timerPeriod;
361 uint16_t combineCCRRegistersCombination;
372 uint16_t compareOutputMode;
377 } Timer_D_combineTDCCRToOutputPWMParam;
385 typedef struct Timer_D_initCaptureModeParam {
396 uint16_t captureRegister;
403 uint16_t captureMode;
410 uint16_t captureInputSelect;
415 uint16_t synchronizeCaptureSource;
420 uint16_t captureInterruptEnable;
431 uint16_t captureOutputMode;
436 uint8_t channelCaptureMode;
437 } Timer_D_initCaptureModeParam;
444 typedef struct Timer_D_outputPWMParam {
451 uint16_t clockSource;
474 uint16_t clockSourceDivider;
480 uint16_t clockingMode;
482 uint16_t timerPeriod;
492 uint16_t compareRegister;
503 uint16_t compareOutputMode;
506 } Timer_D_outputPWMParam;
518 #define TIMER_D_CLOCKSOURCE_DIVIDER_1 0x00
519 #define TIMER_D_CLOCKSOURCE_DIVIDER_2 0x08
520 #define TIMER_D_CLOCKSOURCE_DIVIDER_3 0x02
521 #define TIMER_D_CLOCKSOURCE_DIVIDER_4 0x10
522 #define TIMER_D_CLOCKSOURCE_DIVIDER_5 0x04
523 #define TIMER_D_CLOCKSOURCE_DIVIDER_6 0x05
524 #define TIMER_D_CLOCKSOURCE_DIVIDER_7 0x06
525 #define TIMER_D_CLOCKSOURCE_DIVIDER_8 0x18
526 #define TIMER_D_CLOCKSOURCE_DIVIDER_10 0x0C
527 #define TIMER_D_CLOCKSOURCE_DIVIDER_12 0x0D
528 #define TIMER_D_CLOCKSOURCE_DIVIDER_14 0x0E
529 #define TIMER_D_CLOCKSOURCE_DIVIDER_16 0x0F
530 #define TIMER_D_CLOCKSOURCE_DIVIDER_20 0x14
531 #define TIMER_D_CLOCKSOURCE_DIVIDER_24 0x15
532 #define TIMER_D_CLOCKSOURCE_DIVIDER_28 0x16
533 #define TIMER_D_CLOCKSOURCE_DIVIDER_32 0x17
534 #define TIMER_D_CLOCKSOURCE_DIVIDER_40 0x1C
535 #define TIMER_D_CLOCKSOURCE_DIVIDER_48 0x1D
536 #define TIMER_D_CLOCKSOURCE_DIVIDER_56 0x1E
537 #define TIMER_D_CLOCKSOURCE_DIVIDER_64 0x1F
545 #define TIMER_D_STOP_MODE MC_0
546 #define TIMER_D_UP_MODE MC_1
547 #define TIMER_D_CONTINUOUS_MODE MC_2
548 #define TIMER_D_UPDOWN_MODE MC_3
557 #define TIMER_D_DO_CLEAR TDCLR
558 #define TIMER_D_SKIP_CLEAR 0x00
569 #define TIMER_D_CLOCKSOURCE_EXTERNAL_TDCLK TDSSEL__TACLK
570 #define TIMER_D_CLOCKSOURCE_ACLK TDSSEL__ACLK
571 #define TIMER_D_CLOCKSOURCE_SMCLK TDSSEL__SMCLK
572 #define TIMER_D_CLOCKSOURCE_INVERTED_EXTERNAL_TDCLK TDSSEL__INCLK
583 #define TIMER_D_CLOCKINGMODE_EXTERNAL_CLOCK TDCLKM_0
584 #define TIMER_D_CLOCKINGMODE_HIRES_LOCAL_CLOCK TDCLKM_1
585 #define TIMER_D_CLOCKINGMODE_AUXILIARY_CLK TDCLKM_2
594 #define TIMER_D_TDIE_INTERRUPT_ENABLE TDIE
595 #define TIMER_D_TDIE_INTERRUPT_DISABLE 0x00
603 #define TIMER_D_CAPTURE_INTERRUPT_ENABLE TDIE
604 #define TIMER_D_CAPTURE_INTERRUPT_DISABLE 0x00
612 #define TIMER_D_CCIE_CCR0_INTERRUPT_ENABLE CCIE
613 #define TIMER_D_CCIE_CCR0_INTERRUPT_DISABLE 0x00
621 #define TIMER_D_SINGLE_CAPTURE_MODE 0x00
622 #define TIMER_D_DUAL_CAPTURE_MODE 0x01
630 #define TIMER_D_CAPTURE_INPUTSELECT_CCIxA CCIS_0
631 #define TIMER_D_CAPTURE_INPUTSELECT_CCIxB CCIS_1
632 #define TIMER_D_CAPTURE_INPUTSELECT_GND CCIS_2
633 #define TIMER_D_CAPTURE_INPUTSELECT_Vcc CCIS_3
643 #define TIMER_D_OUTPUTMODE_OUTBITVALUE OUTMOD_0
644 #define TIMER_D_OUTPUTMODE_SET OUTMOD_1
645 #define TIMER_D_OUTPUTMODE_TOGGLE_RESET OUTMOD_2
646 #define TIMER_D_OUTPUTMODE_SET_RESET OUTMOD_3
647 #define TIMER_D_OUTPUTMODE_TOGGLE OUTMOD_4
648 #define TIMER_D_OUTPUTMODE_RESET OUTMOD_5
649 #define TIMER_D_OUTPUTMODE_TOGGLE_SET OUTMOD_6
650 #define TIMER_D_OUTPUTMODE_RESET_SET OUTMOD_7
671 #define TIMER_D_CAPTURECOMPARE_REGISTER_0 0x08
672 #define TIMER_D_CAPTURECOMPARE_REGISTER_1 0x0E
673 #define TIMER_D_CAPTURECOMPARE_REGISTER_2 0x14
674 #define TIMER_D_CAPTURECOMPARE_REGISTER_3 0x1A
675 #define TIMER_D_CAPTURECOMPARE_REGISTER_4 0x20
676 #define TIMER_D_CAPTURECOMPARE_REGISTER_5 0x28
677 #define TIMER_D_CAPTURECOMPARE_REGISTER_6 0x2E
685 #define TIMER_D_CAPTUREMODE_NO_CAPTURE CM_0
686 #define TIMER_D_CAPTUREMODE_RISING_EDGE CM_1
687 #define TIMER_D_CAPTUREMODE_FALLING_EDGE CM_2
688 #define TIMER_D_CAPTUREMODE_RISING_AND_FALLING_EDGE CM_3
696 #define TIMER_D_CAPTURE_ASYNCHRONOUS 0x00
697 #define TIMER_D_CAPTURE_SYNCHRONOUS SCS
705 #define TIMER_D_CAPTURECOMPARE_INTERRUPT_ENABLE CCIE
706 #define TIMER_D_CAPTURECOMPARE_INTERRUPT_DISABLE 0x00
717 #define TIMER_D_HIGH_RES_FREQUENCY_UNLOCK TDHUNLKIE
718 #define TIMER_D_HIGH_RES_FREQUENCY_LOCK TDHLKIE
719 #define TIMER_D_HIGH_RES_FAIL_HIGH TDHFHIE
720 #define TIMER_D_HIGH_RES_FAIL_LOW TDHFLIE
729 #define TIMER_D_CAPTURE_OVERFLOW COV
730 #define TIMER_D_CAPTURECOMPARE_INTERRUPT_FLAG CCIFG
738 #define TIMER_D_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT SCCI
739 #define TIMER_D_READ_CAPTURE_COMPARE_INPUT CCI
748 #define TIMER_D_OUTPUTMODE_OUTBITVALUE_HIGH OUT
749 #define TIMER_D_OUTPUTMODE_OUTBITVALUE_LOW 0x00
757 #define TIMER_D_HIGHRES_64MHZ 0x00
758 #define TIMER_D_HIGHRES_128MHZ 0x01
759 #define TIMER_D_HIGHRES_200MHZ 0x02
760 #define TIMER_D_HIGHRES_256MHZ 0x03
768 #define TIMER_D_HIGHRES_CLK_DIVIDER_1 TDHD__1
769 #define TIMER_D_HIGHRES_CLK_DIVIDER_2 TDHD__2
770 #define TIMER_D_HIGHRES_CLK_DIVIDER_4 TDHD__4
771 #define TIMER_D_HIGHRES_CLK_DIVIDER_8 TDHD__8
779 #define TIMER_D_HIGHRES_CLK_MULTIPLY_FACTOR_8x TDHM_0
780 #define TIMER_D_HIGHRES_CLK_MULTIPLY_FACTOR_16x TDHM_1
788 #define TIMER_D_COMBINE_CCR1_CCR2 2
789 #define TIMER_D_COMBINE_CCR3_CCR4 4
790 #define TIMER_D_COMBINE_CCR5_CCR6 6
798 #define TIMER_D_GROUP_NONE TDCLGRP_0
799 #define TIMER_D_GROUP_CL12_CL23_CL56 TDCLGRP_1
800 #define TIMER_D_GROUP_CL123_CL456 TDCLGRP_2
801 #define TIMER_D_GROUP_ALL TDCLGRP_3
809 #define TIMER_D_COUNTER_16BIT CNTL_0
810 #define TIMER_D_COUNTER_12BIT CNTL_1
811 #define TIMER_D_COUNTER_10BIT CNTL_2
812 #define TIMER_D_COUNTER_8BIT CNTL_3
820 #define TIMER_D_LATCH_ON_WRITE_TO_TDxCCRn_COMPARE_REGISTER CLLD_0
821 #define TIMER_D_LATCH_WHEN_COUNTER_COUNTS_TO_0_IN_UP_OR_CONT_MODE CLLD_1
822 #define TIMER_D_LATCH_WHEN_COUNTER_COUNTS_TO_0_IN_UPDOWN_MODE CLLD_2
823 #define TIMER_D_LATCH_WHEN_COUNTER_COUNTS_TO_CURRENT_COMPARE_LATCH_VALUE CLLD_3
831 #define TIMER_D_HIGHRES_BELOW_15MHz 0x00
832 #define TIMER_D_HIGHRES_ABOVE_15MHz TDHCLKCR
840 #define TIMER_D_CLOCK_RANGE0 0x0000
841 #define TIMER_D_CLOCK_RANGE1 0x2000
842 #define TIMER_D_CLOCK_RANGE2 0x4000
851 #define TIMER_D_CAPTURECOMPARE_INPUT_HIGH 0x01
852 #define TIMER_D_CAPTURECOMPARE_INPUT_LOW 0x00
860 #define TIMER_D_INTERRUPT_NOT_PENDING 0x00
861 #define TIMER_D_INTERRUPT_PENDING 0x01
869 #define TIMER_D_CAPTURECOMPARE_INPUT CCI
898 extern void Timer_D_startCounter(uint16_t baseAddress,
916 extern void Timer_D_initContinuousMode(uint16_t baseAddress,
917 Timer_D_initContinuousModeParam *
param);
935 extern void Timer_D_initUpMode(uint16_t baseAddress,
936 Timer_D_initUpModeParam *
param);
954 extern void Timer_D_initUpDownMode(uint16_t baseAddress,
955 Timer_D_initUpDownModeParam *
param);
969 extern void Timer_D_initCaptureMode(uint16_t baseAddress,
970 Timer_D_initCaptureModeParam *
param);
984 extern void Timer_D_initCompareMode(uint16_t baseAddress,
985 Timer_D_initCompareModeParam *
param);
998 extern void Timer_D_enableTimerInterrupt(uint16_t baseAddress);
1017 extern void Timer_D_enableHighResInterrupt(uint16_t baseAddress,
1031 extern void Timer_D_disableTimerInterrupt(uint16_t baseAddress);
1050 extern void Timer_D_disableHighResInterrupt(uint16_t baseAddress,
1065 extern uint32_t Timer_D_getTimerInterruptStatus(uint16_t baseAddress);
1087 extern void Timer_D_enableCaptureCompareInterrupt(uint16_t baseAddress,
1088 uint16_t captureCompareRegister);
1110 extern void Timer_D_disableCaptureCompareInterrupt(uint16_t baseAddress,
1111 uint16_t captureCompareRegister);
1138 extern uint32_t Timer_D_getCaptureCompareInterruptStatus(uint16_t baseAddress,
1139 uint16_t captureCompareRegister,
1164 extern uint16_t Timer_D_getHighResInterruptStatus(uint16_t baseAddress,
1178 extern void Timer_D_clear(uint16_t baseAddress);
1197 extern void Timer_D_clearHighResInterrupt(uint16_t baseAddress,
1224 extern uint8_t Timer_D_getSynchronizedCaptureCompareInput(uint16_t baseAddress,
1225 uint16_t captureCompareRegister,
1226 uint16_t
synchronized);
1248 extern uint8_t Timer_D_getOutputForOutputModeOutBitValue(uint16_t baseAddress,
1249 uint16_t captureCompareRegister);
1269 extern uint16_t Timer_D_getCaptureCompareCount(uint16_t baseAddress,
1270 uint16_t captureCompareRegister);
1290 extern uint16_t Timer_D_getCaptureCompareLatchCount(uint16_t baseAddress,
1291 uint16_t captureCompareRegister);
1314 extern uint8_t Timer_D_getCaptureCompareInputSignal(uint16_t baseAddress,
1315 uint16_t captureCompareRegister);
1341 extern void Timer_D_setOutputForOutputModeOutBitValue(uint16_t baseAddress,
1342 uint16_t captureCompareRegister,
1343 uint8_t outputModeOutBitValue);
1359 extern void Timer_D_outputPWM(uint16_t baseAddress,
1360 Timer_D_outputPWMParam *
param);
1373 extern void Timer_D_stop(uint16_t baseAddress);
1396 extern void Timer_D_setCompareValue(uint16_t baseAddress,
1397 uint16_t compareRegister,
1398 uint16_t compareValue);
1411 extern void Timer_D_clearTimerInterrupt(uint16_t baseAddress);
1434 extern void Timer_D_clearCaptureCompareInterrupt(uint16_t baseAddress,
1435 uint16_t captureCompareRegister);
1456 extern uint8_t Timer_D_initHighResGeneratorInFreeRunningMode(uint16_t baseAddress,
1457 uint8_t desiredHighResFrequency);
1473 extern void Timer_D_initHighResGeneratorInRegulatedMode(uint16_t baseAddress,
1474 Timer_D_initHighResGeneratorInRegulatedModeParam *
param);
1490 extern void Timer_D_combineTDCCRToOutputPWM(uint16_t baseAddress,
1491 Timer_D_combineTDCCRToOutputPWMParam *
param);
1510 extern void Timer_D_selectLatchingGroup(uint16_t baseAddress,
1511 uint16_t groupLatch);
1530 extern void Timer_D_selectCounterLength(uint16_t baseAddress,
1531 uint16_t counterLength);
1560 extern void Timer_D_initCompareLatchLoadEvent(uint16_t baseAddress,
1561 uint16_t compareRegister,
1562 uint16_t compareLatchLoadEvent);
1575 extern void Timer_D_disableHighResFastWakeup(uint16_t baseAddress);
1588 extern void Timer_D_enableHighResFastWakeup(uint16_t baseAddress);
1601 extern void Timer_D_disableHighResClockEnhancedAccuracy(uint16_t baseAddress);
1614 extern void Timer_D_enableHighResClockEnhancedAccuracy(uint16_t baseAddress);
1629 extern void Timer_D_disableHighResGeneratorForceON(uint16_t baseAddress);
1645 extern void Timer_D_enableHighResGeneratorForceON(uint16_t baseAddress);
1663 extern void Timer_D_selectHighResCoarseClockRange(uint16_t baseAddress,
1664 uint16_t highResCoarseClockRange);
1681 extern void Timer_D_selectHighResClockRange(uint16_t baseAddress,
1682 uint16_t highResClockRange);
1698 extern uint16_t Timer_D_getCounterValue(uint16_t baseAddress);
1732 extern void Timer_D_setOutputMode(uint16_t baseAddress,
1733 uint16_t compareRegister,
1734 uint16_t compareOutputMode);
MPU_initThreeSegmentsParam param