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

📄 main.cpp

📁 msp430f2013 sample and save in vector data.
💻 CPP
字号:
// 23/04
// prova salvataggio campionamento in vettore
//test quanta memoria RAM presente

#include <msp430x20x3.h>

#define VETTMAX 100

//unsigned int vettore[VETTMAX];
unsigned int cont=0;
unsigned int somma=0;
unsigned int media=0;
unsigned int MAX=0;
unsigned int MIN=65535;
unsigned int val=0;
int *ptr = (int *) 0x1000;
int *flash_write(int val2mem, int *mem_pointer);

int main()
{

  //giochini sul clock da prova_02
  BCSCTL2 |= SELM_0 + DIVM_0 + DIVS_2; // MCLK = DCOCLK/1, SMCLK/4
  BCSCTL1 = CALBC1_8MHZ;              // MCLK = 8MHz
  DCOCTL = CALDCO_8MHZ;               // DCO = 8MHz
  FCTL2 = FWKEY + FSSEL0 + FN1;             // MCLK/3 for Flash Timing Generator

  WDTCTL = WDTPW + WDTHOLD;            // Ferma il whatchdog
  //WDTCTL = WDT_MDLY_32;                // WDT Timer interval

  //Settaggi per l'ADC
  SD16CTL = SD16SSEL_1 + SD16REFON;    // 1.2V ref, SMCLK
  SD16INCTL0 = SD16INCH0;              // A1+/- interrupt dopo 1 conversione
  SD16CCTL0 =  SD16UNI + SD16IE ;       // 256OSR, unipolar, interrupt enable, single conversion
  SD16AE = SD16AE1;                    // P1.1 A1+, A1- = VSS

  P1DIR |= 0x01;                       // P1.0 Output
  
  _BIS_SR(GIE);                        // Attiva gli interrupt
  
  

 	/*for (int i= 0; i < VETTMAX; i++)
 	{
 		vettore[i]=0;						//inizializzo la posizione del vettore
 	}
 	 */ 	 
SD16CCTL0 |= SD16SC;                 // Set bit to start conversion 	  	 
   
  
   	    
		_bis_SR_register(LPM0 + GIE);  	 
		    
		    
  return 0; 	

}

#pragma vector = SD16_VECTOR
__interrupt void SD16ISR(void)
{
 
  P1OUT ^= 0x01;							//accende e spegne il led
  SD16CCTL0 &= ~(SD16IFG);					//cancella il flag
  //vettore[cont]=(SD16MEM0/65.536);
  val=(SD16MEM0/65.536);
   somma=somma+val;
   if (MAX<val) MAX=val;
   if (MIN>val) MIN=val;
   
   ptr=flash_write(val, ptr);
   
 cont++;
 

 	if (cont>VETTMAX-1) 
 	{
 		_BIC_SR_IRQ(LPM0_bits);
 		SD16CCTL0 &= ~SD16IE;
 		SD16CCTL0 &= ~SD16SC;
 		media=somma/VETTMAX;
 		
 		};                // Exit LPM0
}

 int *flash_write(int val2mem, int *mem_pointer)

{
  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                     
  {  
    while(1);                               // If calibration constants erased
                                            // do not load, trap CPU!!
  } 
  //BCSCTL1 = CALBC1_1MHZ;                    // Set DCO to 1MHz
  //DCOCTL = CALDCO_1MHZ;
  FCTL2 = FWKEY + FSSEL0 + FN1;             // MCLK/3 for Flash Timing Generator
    
    
    FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  FCTL3 = FWKEY;                            // Clear Lock bit

  FCTL1 = FWKEY + WRT;                     // Set WRT bit for write operation                           
  
     *mem_pointer = val2mem;             // Write value to flash
	
    mem_pointer=(int *) mem_pointer+1;
    
FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit

return mem_pointer;
}

⌨️ 快捷键说明

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