Exemplo n.º 1
0
/****************************************************************************
* 名    称: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();
}
Exemplo n.º 2
0
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)
		{
		}
    }
}