Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Mitch Costa
- September 16th 2016
- Built with IAR Embedded Workbench Version: V7.3.1.3987 (6.40.1)
- */
- #include "msp430.h"
- #include "functions.h"
- #include "macros.h"
- volatile unsigned int Time_Sequence;
- volatile char one_time;
- volatile unsigned int five_msec_count;
- volatile unsigned int five_msec_flag;
- volatile unsigned int fifty_msec_flag = 0;
- /*
- Global Variables Used
- None
- Local Variables
- None
- Arguments Passed
- None
- Arguments Returned
- None
- */
- void Init_Timers(void){
- //------------------------------------------------------------------------------
- // Timer Configurations
- //------------------------------------------------------------------------------
- Init_Timer_A0(); //
- // Init_Timer_A1(); //
- // Init_Timer_B0(); //
- // Init_Timer_B1(); //
- // Init_Timer_B2(); // Required for provided compiled code to work
- //------------------------------------------------------------------------------
- }
- /*
- Global Variables Used
- Time_Sequence
- one_time
- five_msec_count
- Local Variables
- None
- Arguments Passed
- None
- Arguments Returned
- None
- */
- void Timer_code(void){
- //------------------------------------------------------------------------------
- // Timer A0 interrupt code
- //------------------------------------------------------------------------------
- Time_Sequence++;
- one_time = Pos_1;
- if (five_msec_count < One_Sec){
- five_msec_count++;
- }
- //------------------------------------------------------------------------------
- }
- /*
- Global Variables Used
- five_msec_count
- Local Variables
- None
- Arguments Passed
- fivemsec
- Arguments Returned
- None
- */
- /*
- void five_msec_sleep(unsigned int fivemsec){
- //------------------------------------------------------------------------------
- //Each count passed is at least x times 5 milliseconds
- five_msec_count = Reset1;
- while(fivemsec > (five_msec_count+Pos_1));
- //------------------------------------------------------------------------------
- }
- */
- void five_msec_sleep(unsigned int fivemsec){
- five_msec_count = Reset1;
- int old_five_msec_flag = five_msec_flag;
- while(fivemsec>(five_msec_count))
- {
- if(old_five_msec_flag != five_msec_flag){
- five_msec_count++;
- old_five_msec_flag = five_msec_flag;
- }
- }
- }
- //------------------------------------------------------------------------------
- // Timer A0 initialization sets up both A0_0 and A0_1-A0_2
- void Init_Timer_A0(void) {
- TA0CTL = TASSEL__SMCLK; // SMCLK source
- TA0CTL |= TACLR; // Resets TA0R, clock divider, count direction
- TA0CTL |= MC__CONTINOUS; // Continuous up
- TA0CTL |= ID__2; // Divide clock by 2
- TA0CTL &= ~TAIE; // Disable Overflow Interrupt
- TA0CTL &= ~TAIFG; // Clear Overflow Interrupt flag
- TA0EX0 = TAIDEX_7; // Divide clock by an additional 8
- TA0CCR0 = TA0CCR0_INTERVAL; // CCR0
- TA0CCTL0 |= CCIE; // CCR0 enable interrupt
- TA0CCR1 = TA0CCR1_INTERVAL; // CCR1
- TA0CCTL1 |= CCIE; // CCR1 enable interrupt
- // TA0CCR2 = TA0CCR2_INTERVAL; // CCR2
- // TA0CCTL2 |= CCIE; // CCR2 enable interrupt
- }
- //--
- //------------------------------------------------------------------------------
- // TimerA0 0 Interrupt handler
- #pragma vector = TIMER0_A0_VECTOR
- __interrupt void Timer0_A0_ISR(void){
- if(five_msec_flag == 0){
- five_msec_flag = 1;
- }
- else{
- five_msec_flag = 0;
- }
- fifty_msec_flag++;
- TA0CCR0 += TA0CCR0_INTERVAL; // Add Offset to TACCR0
- }
- //----------------------------------------------------------------------------
- //------------------------------------------------------------------------------
- // TimerA0 0 Interrupt handler
- #pragma vector = TIMER1_A0_VECTOR
- __interrupt void Timer1_A0_ISR(void){
- fifty_msec_flag++;
- TA0CCR1 += TA0CCR1_INTERVAL; // Add Offset to TACCR0
- }
- //----------------------------------------------------------------------------
- // TimerA0 1-2, Overflow Interrupt Vector (TAIV) handler
- #pragma vector=TIMER0_A1_VECTOR
- __interrupt void TIMER0_A1_ISR(void){
- switch(__even_in_range(TA0IV,14)){
- case 0: break; // No interrupt
- case 2: // CCR1 not used
- //...... Add What you need happen in the interrupt ......
- //TA0CCR1 += TA0CCR1_INTERVAL; // Add Offset to TACCR1
- break;
- case 4: // CCR2 not used
- //...... Add What you need happen in the interrupt ......
- //TA0CCR2 += TA0CCR2_INTERVAL; // Add Offset to TACCR2
- break;
- case 14: // overflow
- //...... Add What you need happen in the interrupt ......
- break;
- default: break;
- }
- }
- //----------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement