📄 ads1156.h
字号:
/*************************************************************************************/
volatile void delay_us(unsigned char a) //挺时1uS
{
volatile unsigned int i=0,j=0;
for(i=0;i<a;i++)
for(j=0;j<100;j++)
;
}
/*************************************************************************************/
//ads126发送一字节的数据
unsigned char ads_senddata(unsigned char data) //SPI发送数据,要在外部保证SS = 0
{
SPDR = data; //启动数据传输
while((SPSR & 0x80) == 0); // 等待传输结束
data = SPDR;
return data;
}
/*************************************************************************************/
void ad_write(unsigned char reg,unsigned char data)//写寄存器。选择寄存器地址,写入的数据。
{
PORTB&=~(1<<PB1); //SPI的CS=0使能
//while((PIND&0X8)!=0); //DRDY信号高时才能写寄存器
ads_senddata(0x60+reg);//选择写入寄存器
ads_senddata(data); //写入1个寄存器数据
PORTB|=(1<<PB1); //SPI的CS=1,停止
delay_us(100); //挺时1uS
}
/*************************************************************************************/
unsigned long int ad_read()//读A/D数据。
{
unsigned long int sum=0;
unsigned char r=0,a=0;
PORTB&=~(1<<PB1); //SPI的CS=0使能
//ads_senddata(0xfc); //SYNC AD同步
//ads_senddata(0xff); //WAKEUP 唤醒,并启动AD转换
// while((PIND&0X8)!=0); //DRDY信号低时才能写寄存器 ,等待转换完毕
{
ads_senddata(0x80); //ad
PORTB|=(1<<PB1); //SPI的CS=1,停止
delay_us(500); //挺时1uS
PORTB&=~(1<<PB1); //SPI的CS=0使能
delay_us(10); //挺时1uS
a=ads_senddata(0x00); //发送读取数据命令
USART_Transmit(a);
delay_us(100); //挺时1uS
for (r=0;r<2;r++) //读取24位数据
{
a=ads_senddata(0x00); //读取数据,先高位,后低位
USART_Transmit(a);
sum|=a;
sum=sum<<8;
}
//sum=sum>>8;
}
PORTB|=(1<<PB1); //SPI的CS=1,停止
return sum;
delay_us(1); //挺时1uS
}
/*************************************************************************************/
unsigned long int ads_sum(unsigned char data)//读A/D数据。
{
unsigned long int aa=0;
ad_write(01,0x80+data); //第几通道为选通
ads_senddata(0xf0); //自校准
aa=ad_read(); //读24位A/D数据。
return aa;
}
/*************************************************************************************/
void ADS1158(void) //初始化ADS1256
{
DDRD&=~(1<<PD3); //DRDY
PORTD|=(1<<PD3);
DDRD|=(1<<PD4); //START
PORTD&=~(1<<PD4);
PORTB&=~(1<<PB2); //复位ADS1256
PORTB|=1<<PB2;
ad_write(0,0x02);
ad_write(1,0x03);
ad_write(2,0x00);
ad_write(3,0x01);
ad_write(4,0x00);
ad_write(5,0x00);
ad_write(6,0x00);
ad_write(7,0x00);
ad_write(8,0xff);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -