Download - MSP430 Clock Timers
![Page 1: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/1.jpg)
MSP430 Clock System and TimerTA: Yin WangCSU610 SWARM, Spring 2007
CCIS, Northeastern University
![Page 2: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/2.jpg)
Outline
MSP430 basic clock module
MSP430 Timer A
Timer A examples
![Page 3: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/3.jpg)
MSP430 Basic Clock Module
Clock Sources:LFXT1CLK : Low-frequency/high-frequency oscillatorXT2CLK : Optional high-frequency oscillatorDCOCLK : Internal digitally controlled oscillator (DCO)
Tmote Sky Configuration:LFXT1CLK : 32.768KHz crystalXT2CLK : N/ADCOCLK : Built-in DCO with configurable range from
<100KHz to 4MHz
![Page 4: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/4.jpg)
MSP430 Basic Clock ModuleClock Signals:
ACLK: Auxiliary clock. The signal is sourced from LFXT1CLK with a divider of 1, 2, 4, or 8. (The calibration program for the serial link sets the divider to 4, but after the calibration it can be changed to any other values.) ACLK can be used as the clock signal for Timer A and Timer B.
MCLK: Master clock. The signal can be sourced from LFXT1CLK, XT2CLK (if available), or DCOCLK with a divider of 1, 2, 4, or 8. MCLK is used by the CPU and system.
SMCLK: Sub-main clock. The signal is sourced from either XT2CLK (if available), or DCOCLK with a divider of 1, 2, 4, or 8. SMCLK can be used as the clock signal for Timer A and Timer B.
![Page 5: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/5.jpg)
![Page 6: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/6.jpg)
Clock System Registers
![Page 7: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/7.jpg)
![Page 8: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/8.jpg)
![Page 9: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/9.jpg)
MSP430 Timer_A
A 16-bit counter4 modes of operation – Stop, Up, Continuous, Up/Down3 capture/compare registers (CCRx)2 interrupt vectors – TACCR0 and TAIV
![Page 10: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/10.jpg)
![Page 11: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/11.jpg)
Modes of Operation: Up Mode
![Page 12: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/12.jpg)
Modes of Operation: Continuous Mode
![Page 13: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/13.jpg)
Modes of Operation: Up/Down Mode
![Page 14: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/14.jpg)
Timer_A Interrupt VectorsTACCR0 interrupt vector for CCIFG of CCR0TAIV interrupt vector for TAIFG and CCIFGs of CCR1,CCR2
CCR0 CCIFG0 TACCR0 Interrupt Vector
CCR1 CCIFG1
CCR2 CCIFG2 TACCR0 Interrupt Vector
TAIFGTAR Overflow
CCIE0
CCIE1
CCIE2
TAIE
TAIV
![Page 15: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/15.jpg)
Timer_A RegistersTACTL, Timer_A Control Register (PART 1)
![Page 16: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/16.jpg)
TACTL, Timer_A Control Register (PART 2)
![Page 17: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/17.jpg)
TACCTLx, Capture/Compare Control Register
![Page 18: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/18.jpg)
TAIV, Timer_A Interrupt Vector Register
![Page 19: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/19.jpg)
#include "include/include.h"#include "include/hardware.h"
void main ( void ){
WDTCTL = WDTPW + WDTHOLD; // Stop WDTP6DIR |= 0x01; // P6.0 outputCCTL0 = CCIE; // CCR0 interrupt enabledCCR0 = 50;TACTL = TASSEL_1 + MC_2; // ACLK, contmodeeint(); // Enable the global interruptLPM0; // Enter low power mode
}
// Timer_A TACCR0 interrupt vector handlerinterrupt (TIMERA0_VECTOR) TimerA_procedure( void ){
P6OUT ^= 0x01; // Toggle P6.0CCR0 += 50; // Add offset to CCR0
}
Example 1
_BIS_SR(LPM0_bits + GIE);
OR
Continuous Mode
Output pin P6.0 with toggle rate = 32768/(2*50) = 328Hz
![Page 20: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/20.jpg)
#include "include/include.h"#include "include/hardware.h"
void main ( void ){
WDTCTL = WDTPW + WDTHOLD; // Stop WDTP6DIR |= 0x01; // P6.0 outputCCTL0 = CCIE; // CCR0 interrupt enabledCCR0 = 50-1;TACTL = TASSEL_1 + MC_1; // ACLK, upmode_BIS_SR(LPM0_bits + GIE); // Enable the global interrupt and enter LPM0
}
// Timer_A TACCR0 interrupt vector handlerinterrupt (TIMERA0_VECTOR) TimerA_procedure ( void ){
P6OUT ^= 0x01; // Toggle P6.0}
Example 2Up Mode
Output pin P6.0 with toggle rate = 32768/(2*50) = 328Hz
![Page 21: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/21.jpg)
#include "include/include.h"#include "include/hardware.h"void main ( void ){
WDTCTL = WDTPW + WDTHOLD; // Stop WDTP6DIR |= 0x0F; // P6.0, P6.1, P6.2 and P6.3 outputCCTL0 = CCIE; // CCR0 interrupt enabledCCTL1 = CCIE; // CCR0 interrupt enabledCCTL2 = CCIE; // CCR0 interrupt enabledCCR0 = 0;CCR1 = 0;CCR2 = 0;TACTL = TASSEL_1 + MC_2+ TAIE; // ACLK, contmode, TAIE enabled_BIS_SR(LPM0_bits + GIE); // Enable the global interrupt and enter LPM0
}
Example 3Continuous Mode
Output pin P6.0 with toggle rate = 32768/(2*5) = 3277Hz
Output pin P6.1 with toggle rate = 32768/(2*50) = 328Hz
Output pin P6.2 with toggle rate = 32768/(2*500) = 32.79Hz
Output pin P6.3 with toggle rate = 32768/(2*65536) = 0.25Hz
![Page 22: MSP430 Clock Timers](https://reader033.vdocument.in/reader033/viewer/2022050801/5534c3e84a7959614e8b4c29/html5/thumbnails/22.jpg)
// Timer_A TACCR0 interrupt vector handlerinterrupt (TIMERA0_VECTOR) TimerA0_procedure ( void ){
P6OUT ^= 0x01; // Toggle P6.0CCR0 += 5; // Add offset to CCR0
}
// Timer_A TAIV interrupt vector handlerinterrupt (TIMERA1_VECTOR) TimerA1_procedure ( void ){
switch( TAIV ){
case 2: P6OUT ^= 0x02; // Toggle P6.1CCR1 += 50; // Add offset to CCR1break;
case 4: P6OUT ^= 0x04; // Toggle P6.2CCR2 += 500; // Add offset to CCR2break;
case 10: P6OUT ^= 0x08; // Toggle P6.3break;
}}
Example 3, continued