00001
00002 #ifndef __MSP430WARE_TIMER_H__
00003 #define __MSP430WARE_TIMER_H__
00004
00005 #define __MSP430_HAS_TxA7__
00006
00007
00008
00009
00010
00011
00012
00013 #define TIMER_CLOCKSOURCE_EXTERNAL_TXCLK TASSEL__TACLK
00014 #define TIMER_CLOCKSOURCE_ACLK TASSEL__ACLK
00015 #define TIMER_CLOCKSOURCE_SMCLK TASSEL__SMCLK
00016 #define TIMER_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK TASSEL__INCLK
00017
00018
00019
00020
00021
00022
00023
00024
00025 #define TIMER_CLOCKSOURCE_DIVIDER_1 0x01
00026 #define TIMER_CLOCKSOURCE_DIVIDER_2 0x02
00027 #define TIMER_CLOCKSOURCE_DIVIDER_4 0x04
00028 #define TIMER_CLOCKSOURCE_DIVIDER_8 0x08
00029 #define TIMER_CLOCKSOURCE_DIVIDER_3 0x03
00030 #define TIMER_CLOCKSOURCE_DIVIDER_5 0x05
00031 #define TIMER_CLOCKSOURCE_DIVIDER_6 0x06
00032 #define TIMER_CLOCKSOURCE_DIVIDER_7 0x07
00033 #define TIMER_CLOCKSOURCE_DIVIDER_10 0x0A
00034 #define TIMER_CLOCKSOURCE_DIVIDER_12 0x0C
00035 #define TIMER_CLOCKSOURCE_DIVIDER_14 0x0E
00036 #define TIMER_CLOCKSOURCE_DIVIDER_16 0x10
00037 #define TIMER_CLOCKSOURCE_DIVIDER_20 0x14
00038 #define TIMER_CLOCKSOURCE_DIVIDER_24 0x18
00039 #define TIMER_CLOCKSOURCE_DIVIDER_28 0x1C
00040 #define TIMER_CLOCKSOURCE_DIVIDER_32 0x20
00041 #define TIMER_CLOCKSOURCE_DIVIDER_40 0x28
00042 #define TIMER_CLOCKSOURCE_DIVIDER_48 0x30
00043 #define TIMER_CLOCKSOURCE_DIVIDER_56 0x38
00044 #define TIMER_CLOCKSOURCE_DIVIDER_64 0x40
00045
00046
00047
00048
00049
00050
00051
00052 #define TIMER_DO_CLEAR TACLR
00053 #define TIMER_SKIP_CLEAR 0x00
00054
00055
00056
00057
00058
00059
00060
00061
00062 #define TIMER_CAPTURECOMPARE_INPUT SCCI
00063 #define TIMER_SYNCHRONIZED_CAPTURECOMPARE_INPUT CCI
00064
00065
00066
00067
00068
00069
00070
00071 #define TIMER_CAPTURECOMPARE_INPUT_HIGH 0x01
00072 #define TIMER_CAPTURECOMPARE_INPUT_LOW 0x00
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083 #define TIMER_OUTPUTMODE_OUTBITVALUE_HIGH OUT
00084 #define TIMER_OUTPUTMODE_OUTBITVALUE_LOW 0x00
00085
00086
00087
00088
00089
00090
00091
00092 #define TIMER_CAPTURE_OVERFLOW COV
00093 #define TIMER_CAPTURECOMPARE_INTERRUPT_FLAG CCIFG
00094
00095
00096
00097
00098
00099
00100
00101
00102 #define TIMER_TAIE_INTERRUPT_ENABLE TAIE
00103 #define TIMER_TAIE_INTERRUPT_DISABLE 0x00
00104
00105
00106
00107
00108
00109
00110
00111
00112 #define TIMER_CCIE_CCR0_INTERRUPT_ENABLE CCIE
00113 #define TIMER_CCIE_CCR0_INTERRUPT_DISABLE 0x00
00114
00115
00116
00117
00118
00119
00120 #define TIMER_STOP_MODE MC_0
00121 #define TIMER_UP_MODE MC_1
00122 #define TIMER_CONTINUOUS_MODE MC_2
00123 #define TIMER_UPDOWN_MODE MC_3
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134 #define TIMER_CAPTURECOMPARE_REGISTER_0 0x02
00135 #define TIMER_CAPTURECOMPARE_REGISTER_1 0x04
00136 #define TIMER_CAPTURECOMPARE_REGISTER_2 0x06
00137 #define TIMER_CAPTURECOMPARE_REGISTER_3 0x08
00138 #define TIMER_CAPTURECOMPARE_REGISTER_4 0x0A
00139 #define TIMER_CAPTURECOMPARE_REGISTER_5 0x0C
00140 #define TIMER_CAPTURECOMPARE_REGISTER_6 0x0E
00141
00142
00143
00144
00145
00146
00147
00148
00149 #define TIMER_OUTPUTMODE_OUTBITVALUE OUTMOD_0
00150 #define TIMER_OUTPUTMODE_SET OUTMOD_1
00151 #define TIMER_OUTPUTMODE_TOGGLE_RESET OUTMOD_2
00152 #define TIMER_OUTPUTMODE_SET_RESET OUTMOD_3
00153 #define TIMER_OUTPUTMODE_TOGGLE OUTMOD_4
00154 #define TIMER_OUTPUTMODE_RESET OUTMOD_5
00155 #define TIMER_OUTPUTMODE_TOGGLE_SET OUTMOD_6
00156 #define TIMER_OUTPUTMODE_RESET_SET OUTMOD_7
00157
00158
00159
00160
00161
00162
00163
00164 #define TIMER_CAPTUREMODE_NO_CAPTURE CM_0
00165 #define TIMER_CAPTUREMODE_RISING_EDGE CM_1
00166 #define TIMER_CAPTUREMODE_FALLING_EDGE CM_2
00167 #define TIMER_CAPTUREMODE_RISING_AND_FALLING_EDGE CM_3
00168
00169
00170
00171
00172
00173
00174
00175 #define TIMER_CAPTURE_ASYNCHRONOUS 0x00
00176 #define TIMER_CAPTURE_SYNCHRONOUS SCS
00177
00178
00179
00180
00181
00182
00183
00184
00185 #define TIMER_CAPTURECOMPARE_INTERRUPT_ENABLE CCIE
00186 #define TIMER_CAPTURECOMPARE_INTERRUPT_DISABLE 0x00
00187
00188
00189
00190
00191
00192
00193
00194 #define TIMER_CAPTURE_INPUTSELECT_CCIxA CCIS_0
00195 #define TIMER_CAPTURE_INPUTSELECT_CCIxB CCIS_1
00196 #define TIMER_CAPTURE_INPUTSELECT_GND CCIS_2
00197 #define TIMER_CAPTURE_INPUTSELECT_Vcc CCIS_3
00198
00199
00200
00201
00202
00203
00204
00205 #define TIMER_INTERRUPT_NOT_PENDING 0x00
00206 #define TIMER_INTERRUPT_PENDING 0x01
00207
00208
00209
00210
00211
00212
00213
00214 #define TIMER_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT SCCI
00215 #define TIMER_READ_CAPTURE_COMPARE_INPUT CCI
00216
00217
00218
00219
00220
00221
00222 extern
00223 void Timer_startContinuousMode ( unsigned int baseAddress,
00224 unsigned int clockSource,
00225 unsigned int clockSourceDivider,
00226 unsigned int timerInterruptEnable_TAIE,
00227 unsigned int timerclear
00228 );
00229 extern
00230 void Timer_startContinousMode ( unsigned int baseAddress,
00231 unsigned int clockSource,
00232 unsigned int clockSourceDivider,
00233 unsigned int timerInterruptEnable_TAIE,
00234 unsigned int timerclear
00235 );
00236 extern
00237 void Timer_startUpMode ( unsigned int baseAddress,
00238 unsigned int clockSource,
00239 unsigned int clockSourceDivider,
00240 unsigned int timerPeriod,
00241 unsigned int timerInterruptEnable_TAIE,
00242 unsigned int captureCompareInterruptEnable_CCR0_CCIE,
00243 unsigned int timerclear
00244 );
00245 extern
00246 void Timer_startUpDownMode (
00247 unsigned int baseAddress,
00248 unsigned int clockSource,
00249 unsigned int clockSourceDivider,
00250 unsigned int timerPeriod,
00251 unsigned int timerInterruptEnable_TAIE,
00252 unsigned int captureCompareInterruptEnable_CCR0_CCIE,
00253 unsigned int timerclear
00254 );
00255 extern
00256 void Timer_initCapture (unsigned int baseAddress,
00257 unsigned int captureRegister,
00258 unsigned int captureMode,
00259 unsigned int captureInputSelect,
00260 unsigned short synchronizeCaptureSource,
00261 unsigned short captureInterruptEnable,
00262 unsigned int captureOutputMode
00263 );
00264 extern
00265 void Timer_initCompare ( unsigned int baseAddress,
00266 unsigned int compareRegister,
00267 unsigned short compareInterruptEnable,
00268 unsigned int compareOutputMode,
00269 unsigned int compareValue
00270 );
00271 extern
00272 void Timer_enableInterrupt (unsigned int baseAddress);
00273 extern
00274 void Timer_disableInterrupt (unsigned int baseAddress);
00275 extern
00276 unsigned long Timer_getInterruptStatus (unsigned int baseAddress);
00277 extern
00278 void Timer_enableCaptureCompareInterrupt (unsigned int baseAddress,
00279 unsigned int captureCompareRegister
00280 );
00281 extern
00282 void Timer_disableCaptureCompareInterrupt (unsigned int baseAddress,
00283 unsigned int captureCompareRegister
00284 );
00285 extern
00286 unsigned long Timer_getCaptureCompareInterruptStatus
00287 (unsigned int baseAddress,
00288 unsigned int mask
00289 );
00290 extern
00291 void Timer_clear (unsigned int baseAddress);
00292 extern
00293 unsigned short Timer_getSynchronizedCaptureCompareInput
00294 (unsigned int baseAddress,
00295 unsigned int captureCompareRegister,
00296 unsigned short synchronized
00297 );
00298 extern
00299 void Timer_setOutputForOutputModeOutBitValue
00300 (unsigned int baseAddress,
00301 unsigned int captureCompareRegister,
00302 unsigned char outputModeOutBitValue
00303 );
00304 extern
00305 unsigned char Timer_getOutputForOutputModeOutBitValue
00306 (unsigned int baseAddress,
00307 unsigned int captureCompareRegister
00308 );
00309
00310 extern
00311 void Timer_generatePWM ( unsigned int baseAddress,
00312 unsigned int clockSource,
00313 unsigned int clockSourceDivider,
00314 unsigned int timerPeriod,
00315 unsigned int compareRegister,
00316 unsigned int compareOutputMode,
00317 unsigned int dutyCycle
00318 );
00319 extern
00320 void Timer_stop ( unsigned int baseAddress );
00321
00322 extern
00323 unsigned int Timer_getCaptureCompareCount
00324 (unsigned int baseAddress,
00325 unsigned int captureCompareRegister
00326 );
00327 extern
00328 void Timer_setCompareValue ( unsigned int baseAddress,
00329 unsigned int compareRegister,
00330 unsigned int compareValue
00331 );
00332 extern
00333 void Timer_clearCaptureCompareInterruptFlag (unsigned int baseAddress,
00334 unsigned int compareRegister
00335 );
00336 extern
00337 void Timer_clearTimerInterruptFlag (unsigned int baseAddress);
00338 #endif