📄 main.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 + -