|
ADS1115.C
- #include "ads1115.h"
- #include "usart.h"
- #include "myiic.h"
- #include "delay.h"
- unsigned int Config;
- unsigned char Writebuff[4],Readbuff[3];
- unsigned int Result[2];
- unsigned long ADC_DAT;
- void ads_write(void)
- {
- IIC_Start();
- /*寫地址ads1115*/
- IIC_Send_Byte(Writebuff[0]);
- IIC_Wait_Ack();
- delay_ms(20);
- /*寫ADS1115數據,用pointer寄存器來配置config寄存器*/
- IIC_Send_Byte(Writebuff[1]);
- IIC_Wait_Ack();
- delay_ms(20);
- /*寫ADS1115數據,寫config寄存器高位*/
- IIC_Send_Byte(Writebuff[2]);
- IIC_Wait_Ack();
- delay_ms(20);
- /*寫ADS1115數據,寫config寄存器低位*/
- IIC_Send_Byte(Writebuff[3]);
- IIC_Wait_Ack();
- delay_ms(20);
- IIC_Stop();
- }
- void ads_read(void)
- {
- IIC_Start();
- /*寫地址ads1115*/
- IIC_Send_Byte(Readbuff[0]);
- IIC_Wait_Ack();
- delay_ms(20);
-
- IIC_Send_Byte(Readbuff[1]);
- IIC_Wait_Ack();
- delay_ms(20);
- IIC_Stop();
-
- IIC_Start();
- IIC_Send_Byte(Readbuff[2]);
- IIC_Wait_Ack();
- delay_ms(20);
-
- Result[0] = IIC_Read_Byte(1);
- delay_ms(20);
-
- Result[1] = IIC_Read_Byte(1);
- delay_ms(20);
- IIC_Stop();
- }
- //**********************************************
- //unsigned char Write_N_Byte(unsigned char *writebuffer,unsigned char n)
- //{
- // uint i;
- //
- // for(i=0;i<n;i++)
- // {
- // Write_1_Byte(*writebuffer);
- // if(Check())
- // {
- // writebuffer ++;
- // }
- // else
- // {
- // Stop();
- // return FALSE;
- // }
- // }
- //
- // Stop();
- // return TRUE;
- //}
- //**********************************************
- //void Read_N_Byte(unsigned int*readbuff, unsigned char n)
- //{ uchar i;
- // for(i=0;i<n;i++)
- // {
- // readbuff[i]=Read_1_Byte();
- // if(i==n-1)
- // NACK(); //不連續讀字節
- // else
- // ACK(); //連續讀字節
- // }
- // Stop();
- //}
- //**********************************************
- void InitADS1115(uchar S_MUX_0, uchar S_MUX_1)
- {
- if (S_MUX_0 == 0 && S_MUX_1 == 0) //AIN0
- Config = OS+MUX_A0+PGA+DR+COMP_QUE+MODE;
- if (S_MUX_0 == 0 && S_MUX_1 == 1) //AIN1
- Config = OS+MUX_A1+PGA+DR+COMP_QUE+MODE;
- if (S_MUX_0 == 1 && S_MUX_1 == 0) //AIN2
- Config = OS+MUX_A2+PGA+DR+COMP_QUE+MODE;
- if (S_MUX_0 == 1 && S_MUX_1 == 1) //AIN3
- Config = OS+MUX_A3+PGA+DR+COMP_QUE+MODE;
- Writebuff[0]=ADDRESS_W;
- Writebuff[1]=Pointer_1;
- Writebuff[2]=Config/256;
- Writebuff[3]=Config%256;
- Readbuff[0]=ADDRESS_W;
- Readbuff[1]=Pointer_0;
- Readbuff[2]=ADDRESS_R;
- }
- //**********************************************
- //void WriteWord(void)
- //{
- //uint t;
- //Start(); //寫入4個字節
- // do
- // {
- // t=Write_N_Byte(Writebuff,4);
- // printf("1\r\n");
- // }while(t==0);
- //}
- //**********************************************
- //void ReadWord(void)
- //{
- //int t;
- // Start(); //寫入2個字節
- // do
- // {
- // t=Write_N_Byte(Readbuff,2);
- // }while(t==0);
- // Start();
- ////寫入2個字節
- // do
- // {
- // t=Write_N_Byte(&Readbuff[2],1);
- // }while(t==0);
- // Read_N_Byte(Result,2); //讀出2個字節
- // }
- //**********************************************
- void ADS1115(uchar S_MUX_0, uchar S_MUX_1)
- {
- InitADS1115(S_MUX_0, S_MUX_1);
- ads_write();
- ads_read();
- //WriteWord();
- //ReadWord();
- }
復制代碼
|
評分
-
查看全部評分
|