EmbdSoftwareDevelopment

Last-modified: 2006-10-09 (月) 22:27:52

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");