command
char cmd;
int ch=1;
int i;
long data=0;
long mode_reg, conf_reg;
cmd=fgetc(PC);
if(cmd=='@'){
cmd=fgetc(PC);
switch(cmd)
{
case '@':
reset();
fputc('0',PC);
break;
case 'd'://debug mode
write_com_reg(CR_READ|CR_CONF); //read conf reg
conf_reg = read_long_reg();
write_com_reg(CR_READ|CR_MODE); //read mode reg
mode_reg = read_long_reg();
fprintf(PC,"STAT A/D; %x\r\n",read_stat());
fprintf(PC,"CONF A/D: %lX, PIC: %lX\r\n", conf_reg, gain|pole);
fprintf(PC,"MODE A/D: %lX, PIC: %lX\r\n", mode_reg, SNGL|freq);
break;
case 'a': //A/D ALL
//select_MI(4);
for(i=1;i<=3;i++){
data=read_analog_single(i);
fprintf(PC,"%lx",data);
}
//select_MI(0);
break;
case 'c':
cmd=fgetc(PC);
ch=cmd-'0';
data=read_analog_single(ch);
fprintf(PC,"%lx",data);
break;
case '1':
case '2':
case '3':
ch=cmd-'0';
if(ch<=0 || ch>3){
ch=1;
}
//select_MI(ch);
output_low(nCS);
write_com_reg(CR_WRITE|CR_CONF); //write conf reg
write_long_reg(gain|pole|chan[ch]);
write_com_reg(CR_WRITE|CR_MODE); //write mode reg
write_long_reg(CONT|freq);
for(i=0;i<times;i++){
data=read_analog_cont();
fprintf(PC,"%lx",data);
}
//select_MI(0);
break;
case 't':
cmd=fgetc(PC);
times=cmd-'0';
if(times==0){
times=10;
fputc('0',PC);
}
else if(times>9){
times=9;
fputc('0',PC);
}else{
fputc('1',PC);
}
break;
case 'p':
cmd=fgetc(PC);
switch(cmd){
case 'u':
pole=UNI;
fputc('1',PC);
break;
case 'b':
pole=BI;
fputc('1',PC);
break;
default:
fputc('0',PC);
break;
}
break;
case 'g':
cmd=fgetc(PC);
switch(cmd){
case '0':
gain=GAIN1;
fputc('1',PC);
break;
case '1':
gain=GAIN2;
fputc('1',PC);
break;
case '2':
gain=GAIN4;
fputc('1',PC);
break;
case '3':
gain=GAIN8;
fputc('1',PC);
break;
case '4':
gain=GAIN16;
fputc('1',PC);
break;
case '5':
gain=GAIN32;
fputc('1',PC);
break;
case '6':
gain=GAIN64;
fputc('1',PC);
break;
case '7':
gain=GAIN128;
fputc('1',PC);
break;
default:
fputc('0',PC);
break;
}
break;
case 'r':
cmd=fgetc(PC);
switch(cmd){
case 'a':
freq=F_4;
fputc('1',PC);
break;
case 's':
freq=F_16_50Hz;
fputc('1',PC);
break;
case 'd':
freq=F_50;
fputc('1',PC);
break;
case 'f':
freq=F_125;
fputc('1',PC);
break;
case 'g':
freq=F_250;
fputc('1',PC);
break;
case 'h':
freq=F_500;
fputc('1',PC);
break;
default:
fputc('0',PC);
break;
}
break;
case 'o':
cmd=fgetc(PC);
ch=cmd-'0';
data=read_offset(ch);
fprintf(PC,"%lx",data);
break;
case 'f':
cmd=fgetc(PC);
ch=cmd-'0';
data=read_fullscale(ch);
fprintf(PC,"%lx",data);
break;
case 'O':
read_offset(1);delay_us(10);
read_fullscale(1);delay_us(10);
read_offset(2);delay_us(10);
read_fullscale(2);delay_us(10);
read_offset(3);delay_us(10);
read_fullscale(3);delay_us(10);
fputc('1',PC);
break;
default:
fputc('0',PC);
break;
}
}else if(cmd=='%'){//monitor mode
cmd=fgetc(PC);
switch(cmd)
{
case 'r':
cmd=fgetc(PC);
switch(cmd){
case 'a'://all channel
case '1'://ch 1
case '2'://ch 2
case '3'://ch 3
ch=cmd-'0';
break;
}
break;
case 'g':
break;
case 't':
cmd=fgetc(PC);
}
}else{
fputc(cmd,PC);
}
fprintf(PC,"\n");