/**************************************************************************** * 名 称:AD7708Init * 功 能:初始化AD7708 * 入口参数:chop:斩波允许标志 为1,斩波允许,0则不允许 * 出口参数:无 * 说 明: 完成AD7708的初始化工作 ****************************************************************************/ void AD7708Init(char chop) { P3DIR|=BIT0; P3OUT&=~BIT0; //CS选中 //主机模式,115200,8位数据位,三线模式,时钟模式1(具体见spi.c) SpiMasterInit(115200,8,3,1); //时钟不是准确的115200(具体见spi.c) _EINT(); //开中断,spi读写程序要需要中断 char filter; adccon = 0x0f; if(chop == 0) { filter = 0x03; //滤波寄存器设为最小值,可以更改 mode = 0x91; //斩波禁止,10通道,无缓冲,空闲模式 } else { filter = 0x0D; //滤波寄存器设为最小值,可以更改 mode = 0x11; //斩波启用,10通道,无缓冲,空闲模式 } AD7708WriteRegister(0x07,0x00); //IO寄存器,不用== AD7708WriteRegister(0x03,filter); //滤波寄存器 AD7708WriteRegister(0x02,0x0F); //ADC控制寄存器,0通道,单极性 AD7708WriteRegister(0x01,mode); //模式寄存器 if(chop == 0) for(int i = 0; i<5;i++) { //校准,因只有5个失调寄存器,多的就会覆盖之前的,只校准5个即可 AD7708Cal(5); } _DINT(); }
int main(void) { InitUART(); printf("\n\n**************************************************"); printf("\nAVR-Ethernet"); //DEBUG printf("\n**************************************************\n"); printf("\nInitalizing SPI..."); //DEBUG SpiMasterInit(); printf("initialization done."); //DEBUG while(1) { int user_input = 0xFFFF; printf("\n\nSelect an option:"); printf("\n\t0: Option zero"); printf("\n\t1: Option one\n"); scanf("%d", &user_input); switch (user_input) { case 0 : printf("\nYou entered 0"); break; case 1 : printf("\nYou entered 1"); break; default : printf("\nERROR, invalid entry"); break; } while(1) { } } }