⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inits.c

📁 MSP430F1610 generates a sine wave from a look up table using timer interrupt.
💻 C
字号:
//#include  "includes.h"
#include  <msp430x16x.h>
#include  <defines.h>


unsigned int MuxByte[8], ADC_control[4];

//==================== config_MainCLK () ==============================
void config_MainCLK(void)
{ int i; 
  BCSCTL1 &= ~XT2OFF;           // XT2on => runing from 8MHz crystal
  do { IFG1 &= ~OFIFG;           // Clear OSCFault flag
       for (i = 0xFF; i > 0; i--);// Time for flag to set
     }
  while ((IFG1 & OFIFG));       // OSCFault flag still set?                
  BCSCTL2 |= SELM_2 + SELS;     // MCLK= SMCLK= XT2 (safe)
}
//======================= init_vectors() ================================
void init_vectors()
{ 
  ADC_control[0]  = 0x9F;  // CH0: OXIMETER
  ADC_control[1]  = 0xDF;  // CH1: EEG1 (On the processor board)
  ADC_control[2]  = 0xAF;  // CH2: EEG2
  ADC_control[3]  = 0xEF;  // CH3: ECG  1110 1111

    
  MuxByte[0]  = 0x18;  // xxx1 1xxx   ExG_DATA 
  MuxByte[1]  = 0x18;  // xxx1 1xxx   ExG_DATA
   
  MuxByte[1]  = 0x0B;  // xxx0 1011   ExG_Zpos   
  MuxByte[2]  = 0x08;  // xxx0 1001   ExG_Zneg   
  MuxByte[3]  = 0x00;  // xxx0 1100   ExG_DRL  
}
//==================== IO_control_lines( ) ==============================
void IO_control_lines()
{ 
  //******** PORT 1 *******//
  P1DIR  = 0x7F;    
  P1OUT  = 0x00;    

  //******** PORT 2 *******//
  P2DIR  = 0x3F;  
  P2OUT  = 0xFF;    


  //******** PORT 4 *******//
  P4DIR  = 0xFF;     
  P4SEL  = 0x00;     
  P4OUT  &= 0x00;    

  
  //-------- PORT 5 --------//
  P5DIR  = 0xFF;   
  P5OUT  = 0x00;    // 

}
//==================== set_USART0_SPI( ) ================================
void set_USART0_SPI(void)
{
  //---------SPI configuration----------------------------------------
  UCTL0  |= 0x01;              
  ME1   |= USPIE0;             
  U0CTL |= CHAR + SYNC + MM;   
  U0TCTL |= CKPL + SSEL0 + SSEL1 + STC;
  U0BR0  = 0x05; 
  U0BR1  = 0x00;                
  U0MCTL = 0x00; 
  U0CTL &= ~SWRST;
  P3OUT |= 0x01;
}
//==================== set_USART0_UART () ===============================
void set_USART0_UART()
{
  P3SEL |= 0xF0;    
  UCTL0  |= 0x01;           
  ME1 |= UTXE0 + URXE0;     
  UCTL0 = 0x10;             
  UTCTL0 = 0x31;            
  //Configuration for 115200 bps
  UBR00 = 0x45;             
  UBR10 = 0x00;             
  UMCTL0 = 0x2C;            
  UCTL0 &= ~SWRST;          
}
//==================== set_USART1_UART( ) ================================
void set_USART1_UART(void)
{
  ME2 |= UTXE1 + URXE1;     
  UCTL1 |= CHAR;               
  UTCTL1 |= SSEL1;             
  //Configuration for 115200 bps
  UBR01 = 0x45;               
  UBR11 = 0x00;               
  UMCTL1 = 0x00;              
  UCTL1 &= ~SWRST;            
}

//==================== config_Timer_A_TimerINT () =================================
void config_Timer_A_TimerINT()
{ 
    CCTL0 = CCIE;                
//  CONFIGURATION FOR 32 kHZ
//  CCR0 = TIMER_A_CCR0 - 1;
//  TACTL = TASSEL_1 + MC_1;
//  CONFIGURATION FOR 8MHZ
    CCR0 = TIMER_A_CCR0 * 2; 
    TACTL = TASSEL_2 + MC_1; 
}

//==================== config_Timer_B_TimerINT () =================================
void config_Timer_B_TimerINT()
{ 
    TBCCTL0 = CCIE;             
//  CONFIGURATION FOR 8MHZ
    TBCCR0 = TIMER_B_CCR0;
    TBCTL  = TBSSEL_2 + MC_1;
}

//==================== config_Timer_A_PWM_ON () =================================
void config_Timer_A_PWM_ON()
{ 
  P2DIR |= 0x10;                 
  P2SEL |= 0x10;                 
  CCR0 = TIMER_A_COUNTER - 1;  
  CCTL2 = OUTMOD_4;            
  //CCR2 = 128;                
  TACTL = TASSEL_1 + MC_1;     
}
//==================== config_Timer_A_PWM_OFF () =================================
void config_Timer_A_PWM_OFF()
{ 
  TACTL &= TIMER_A_OFF;
  TACCTL0 = OUTMOD_0;       
}

//==================== Timer B Configuration ============================
void config_Timer_B_PWM()
{ 
//  P4DIR |= 0x7e;               
//  P4SEL |= 0x7e;               
  TBCCR0 = TIMER_B_COUNTER - 1;  
  
  // Only for TB1 
  TBCCTL1 = OUTMOD_4;          
  
  //GLOBAL 
  TBCTL = TBSSEL_2 + MC_1;        // ACLK, up mode, START TIMER
}

//================== timer_B_OFF (void) ============================
void timer_B_OFF(void)
{
  TBCTL &= TIMER_B_OFF;
  TBCCTL0 = OUTMOD_0;       // CCR0 OUT mode
}

//====================== MUXs_Port4(VOID) ===============================
void MUX_extZ(unsigned int code_value)
{

}

//==================================================================
//==================================================================
//==================================================================

//==================== config_all ()  ==============================
void config_all(void)
{
  //------- WATCHDOG
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
 
  //------- CONFIGURATIONS
  config_MainCLK();                     
  init_vectors();                       
  IO_control_lines();                   

  set_USART0_UART();
  //set_USART0_SPI();  
  set_USART1_UART();
  

  //=== DAC12 configuration:
  ADC12CTL0 = REF2_5V + REFON;        

#ifdef BITS12  
  //-- 12 bits DAC 
  DAC12_1CTL = DAC12IR + DAC12AMP_5 + DAC12ENC; // Internal ref gain 1
#endif                
#ifdef BITS8
  //--  8 bits DAC 
  DAC12_1CTL = DAC12IR + DAC12AMP_2 + DAC12ENC + DAC12RES;// + DAC12IE; 
  //           Gain x1 +            +  Enable  +  8bits   + Int    
#endif 

  config_Timer_A_TimerINT(); 
  

           
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -