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

📄 main.c

📁 基于LF2407A和ADS8364的采集系统
💻 C
字号:
#include "REGS240X.H"
#include "PORT.H"
#define BUFFERSIZE 1024
//#define P5 199                     /*for debug only*/
void Sysinit(void);
void Gpioinit(void);
void ADS8364_RST(void);
void ADS8364_CLK(void);
void Start_ADS8364(void);
void Read_Result(void);
void interrupt ADS8364_EOC(void);
void Timer3init(void);             /*for debug only*/

int A0[BUFFERSIZE];
//int A1[BUFFERSIZE];
//int B0[BUFFERSIZE];
//int B1[BUFFERSIZE];
//int C0[BUFFERSIZE];
//int C1[BUFFERSIZE];
unsigned int ADS8364_READY = 1;
unsigned int count = 0;

main()
{
 Sysinit();
 Gpioinit();
 ADS8364_RST();
 ADS8364_CLK();  
 /*IMR=0x02;for debug only*/
 IMR=0x02;                  /*open INT1*/
 asm(" clrc INTM");         /*enable all maskable interrupt*/
 Timer3init();              /*for debug only*/
 while(1)                   /*forever loop*/
{
 if(ADS8364_READY == 1)      
 {
  Start_ADS8364();         
  ADS8364_READY = 0;
 }
}

}
void Sysinit(void)
{
  WDCR = 0xEF;              /*dsiable watchdog*/
  WDKEY = 0x55;
  WDKEY = 0xAA;             /*kick watchdog*/      
  asm(" setc INTM");        /*disable all maskable interrupt*/
  asm(" setc SXM");         /*enable sign expand mode*/
  asm(" clrc CNF");         /*daram block b0 mapped to data space*/
  asm(" clrc OVM");         /*disable overflow mode*/
  SCSR1 = 0x81FE;           /*DSP run at 40MHZ; enable clock to ADC SCI SPI CAN EVB EVA */
  //SCSR2 &= 0xFFFE;        /* probably should be set at gel file  */
  IMR = 0x0000;
  IFR = 0xFFFF;
  WSGR = 0x01C0;            /* set 7 watestates to IO space*/
  //XINT1CR = 0x0001;         /* falling edge senstive; high priority;enable interrupt; */
  return;
}


void Gpioinit(void)
{ 
 MCRA |= 0x1004;	       /*xint1 function; t1pwm function;*/ 
 MCRA &= 0xFF7F;       
 PADATDIR |= 0x8080;       /*IOPA7 OUT =1*/
 MCRC &= 0xFFD5;
 PEDATDIR |= 0x2A2A;       /*PWM7(IOPE1) OUT =1; PWM9(IOPE3) OUT =1; PWM11(IOPE5) OUT =1;*/
 return;
}

void ADS8364_RST(void)
{
 PADATDIR &= 0xFF7F;      /*IOPA7 OUT =0*/  
 asm(" RPT #10");        /*RESET low at least 40ns */
 asm(" NOP");
 PADATDIR |= 0x8080;      /*IOPA7 OUT =1*/
 return;
}

void ADS8364_CLK(void)    /*provide 4MHZ clock to ADS8364*/
{
 T1PR = 0x0009;           /*DSP clock devided by 10*/
 T1CMPR = 0x0005;         /*50% duty cycle*/
 T1CNT = 0x0000;
 T1CON = 0x1002;          /*continous increse mode;enable compare*/
 GPTCONA = 0x0041;        /*enable TIPWM compare out;active low*/
 T1CON |= 0x0040;         /*start timer1*/
 return; 
}

void Start_ADS8364(void)
{
 PEDATDIR &= 0xFFFD;
 //PEDATDIR &= 0xFFD5;     /*IOPE1 OUT=0 IOPE3 OUT=0 IOPE5 OUT=0*/
 asm(" RPT #3");         /*HOLDx low at least 30ns*/
 asm(" NOP");
 PEDATDIR |= 0x0002;
 //PEDATDIR |= 0x002A;     /*IOPE1 OUT=1 IOPE3 OUT=1 IOPE5 OUT=1*/
 return;
}

void interrupt ADS8364_EOC(void)
{
 if(PIVR == 0x002F)      /*for debug only*/
 {
 EVBIFRA |=0x80; 
 }
 
 //XINT1CR = 0x8000;
 Read_Result();
/*add data processing routine here*/
 //XINT1CR = 0x0001;      
 return;
}

void Read_Result(void)
{
 A0[count] = CHA0;
 //A1[count] = CHA1;
 //B0[count] = CHB0;
 //B1[count] = CHB1;
 //C0[count] = CHC0;
 //C1[count] = CHC1;
 ADS8364_READY = 1;
 count += 1;
 if(count == BUFFERSIZE)
 {
 count = 0;
 }
 return;
}

void Timer3init(void)                /*for debug only*/
{
 EVBIMRA = 0x80;
 EVBIFRA = 0xFFFF;
 T3PR = 0x18F;
 GPTCONB = 0x0000;
 T3CNT = 0x0000;
 T3CON = 0x1040;
 return;
}

⌨️ 快捷键说明

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