برنامه يكي از بهترين ad هاي كه واقعا چيزه عاليه با قدرت 4800 نمونه در ثانيه
#include "main.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <LCD.h>
#ZERO_RAM
#define RDY PIN_C0
#define CS PIN_C3
//***************COMMUNICATIONS REGISTER****************
#define Status_reg 0
#define Mode_reg 8
#define Configuration_reg 16
#define Data_reg 24
#define ID_reg 32
#define GPOCON_reg 40
#define Offset_reg 48
#define Full_scale_reg 56
#define CREAD 4
#define no_CREAD 0
#define read 64
#define write 0
//***************MODE REGISTER ****************
#define Continuous_conversion 0
#define Single_conversion 32
#define Idle_mode 64
#define Power_down_mode 96
#define Internal_zero_scale 128
#define Internal_full_scale 160
#define System_zero_scale 192
#define System_full_scale 224
#define DAT_STA 16
#define SINC_3 128
#define ENPAR 32
#define Single 8
#define REJ60 4
#define FS9_to_FS0_1 16
#define FS9_to_FS0_2 0
#define SINC_4 0
#define no_DAT_STA 0
#define no_ENPAR 0
#define no_Single 0
#define no_REJ60 0
#define External_crystal_M1 0
#define External_crystal_M2 4
#define Internal_crystal_M1 8
#define Internal_crystal_M2 12
//***************CONFIGURATION REGISTER****************
#define chop_en 128
#define chop_dis 0
#define refsel_en 16
#define refsel_dis 0
#define select_cha 1
#define born_en 128
#define born_dis 0
#define refdet_en 64
#define refdet_dis 0
#define buf_en 16
#define buf_dis 0
#define unipolar 8
#define bipolar 0
#define Gain_1 0
#define Gain_8 3
#define Gain_16 4
#define Gain_32 5
#define Gain_64 6
#define Gain_128 7
//*************** GPOCON register ****************
#define Bridge_power_down_en 64
#define Bridge_power_down_dis 0
#define GPOCON 0 //1 to 32
//*********************************************
#define AIN1_AIN2 1
#define AIN3_AIN4 2
#define Temperature_sensor 4
#define AIN2_AIN2 8
#define AIN1_AINCOM 16
#define AIN2_AINCOM 32
#define AIN3_AINCOM 64
#define AIN4_AINCOM 128
//*********************************************
int8 M_M_s,M_D_S,M_SIN_3_4,M_ENP,M_Singl,M_RE_60,M_F9_F 0_1,M_F9_F0_2,M_m_crys;
//int8 CR_chop,CR_refsel,CR_sel_cha,CR_born,CR_ref_det,CR _bufer,CR_polar,CR_Gain;
//*********************************************
void reset_ad7190();
void read_ad7190(int8 rd);
void initation_AD7190();
void Communications_reg( int8 sta_bite,int8 R_W,int8 Continuous_read);
void mode_regis(int8 M_s,int8 D_S,int8 SIN_3_4,int8 ENP,int8 Singl,int8 RE_60,int8 F9_F0_1,int8 F9_F0_2,int8 m_crys);
void configuration_regis(int8 chop,int8 refsel,int8 sel_cha,int8 born,int8 ref_det,int8 bufer,int8 polar,int8 Gain);
void GPOCON_regis(int8 BPDSW,int8 GP);
void Channel_select(int8 chaa_s);
void Internal_CALIBRATION_AD7190();
//*********************************************
void main()
{
port_b_pullups(TRUE);
output_high(CS);
setup_timer_0(RTCC_INTERNAL);
setup_oscillator(OSC_NORMAL);
cls();
delay_ms(300);
reset_ad7190();
initation_AD7190();
Internal_CALIBRATION_AD7190();
while(TRUE){
read_ad7190(Data_reg);
delay_ms(100);
printf(" \f " );
}
}
//************************************************** *********
void initation_AD7190(){
Communications_reg(Mode_reg,write,no_CREAD );
mode_regis(Continuous_conversion,DAT_STA,SINC_4,no _ENPAR,no_Single,no_REJ60,FS9_to_FS0_1,FS9_to_FS0_ 2,Internal_crystal_M1);
Communications_reg(Configuration_reg,write,no_CREA D );
configuration_regis(chop_dis,refsel_dis,select_cha ,born_dis,refdet_dis,buf_dis,bipolar,Gain_128);
}
//************************************************** *********
void read_ad7190(int8 rd){
int8 data_1=0,data_2=0,data_3=0,data_4=0;
output_low(CS);
Communications_reg(rd,read,CREAD );
//************************************
while(input(RDY)==0);
while(input(RDY)==1);
//************************************
if(input(RDY)==0){
data_1=spi_xfer(0);
data_2=spi_xfer(0);
data_3=spi_xfer(0);
data_4=spi_xfer(0);
output_high(CS);
printf("1=%u ",data_1);
printf("2=%u ",data_2);
printf("3=%u ",data_3);
printf("4=%u ",data_4);
bin(data_1);
printf(" ");
bin(data_2);
printf(" ");
bin(data_3);
}
}
//************************************************** *********
void reset_ad7190(){
int8 i;
output_low(CS);
for(i=0;i<4;i++)spi_xfer(255);
output_high(CS);
}
//************************************************** *********
void Communications_reg(int8 sta_bite,int8 R_W,int8 Continuous_read){
int8 total_co=0;
total_co=(sta_bite+R_W+Continuous_read);
output_low(CS);
spi_xfer(total_co);
}
//*********************************************
void mode_regis(int8 M_s,int8 D_S,int8 SIN_3_4,int8 ENP,int8 Singl,int8 RE_60,int8 F9_F0_1,int8 F9_F0_2,int8 m_crys){
int8 total_M_1=0,total_M_2=0,total_M_3=0;
M_M_s=M_s;
M_D_S=D_S;
M_SIN_3_4=SIN_3_4;
M_ENP=ENP;
M_Singl=Singl;
M_RE_60=RE_60;
M_F9_F0_1=F9_F0_1;
M_F9_F0_2=F9_F0_2;
M_m_crys=m_crys;
total_M_1=(M_s+D_S+m_crys);
total_M_2=(Singl+ENP+SIN_3_4+RE_60+F9_F0_2);
total_M_3=F9_F0_1;
output_low(CS);
spi_xfer(total_M_1);
spi_xfer(total_M_2);
spi_xfer(total_M_3);
output_high(CS);
}
//************************************************** *
void configuration_regis(int8 chop,int8 refsel,int8 sel_cha,int8 born,int8 ref_det,int8 bufer,int8 polar,int8 Gain){
int8 total_M_1=0,total_M_2=0,total_M_3=0;
/*CR_chop=chop;
CR_refsel=refsel;
CR_sel_cha=sel_cha;
CR_born=born;
CR_ref_det=ref_det;
CR_bufer=bufer;
CR_polar=polar;
CR_Gain=Gain;*/
total_M_1=(chop+refsel);
total_M_2=sel_cha;
total_M_3=(born+ref_det+bufer+polar+Gain);
output_low(CS);
spi_xfer(total_M_1);
spi_xfer(total_M_2);
spi_xfer(total_M_3);
output_high(CS);
}
//************************************************** *
void GPOCON_regis(int8 BPDSW,int8 GP){
int8 total_M_1=0;
total_M_1=(BPDSW+GP);
output_low(CS);
spi_xfer(total_M_1);
output_high(CS);
}
//************************************************** *
void Channel_select(int8 chaa_s){
Communications_reg(Configuration_reg,write,no_CREA D );
configuration_regis(chop_dis,refsel_dis,chaa_s,bor n_dis,refdet_dis,buf_dis,bipolar,Gain_128);
}
//************************************************** *
void Internal_CALIBRATION_AD7190(){
Communications_reg(Mode_reg,write,no_CREAD );
mode_regis(Internal_zero_scale,M_D_S,M_SIN_3_4,M_E NP,M_Singl,M_RE_60,M_F9_F0_1,M_F9_F0_2,M_m_crys);
delay_ms(300);
Communications_reg(Mode_reg,write,no_CREAD );
mode_regis(Internal_full_scale,M_D_S,M_SIN_3_4,M_E NP,M_Singl,M_RE_60,M_F9_F0_1,M_F9_F0_2,M_m_crys);
delay_ms(300);
Communications_reg(Mode_reg,write,no_CREAD );
mode_regis(Continuous_conversion,M_D_S,M_SIN_3_4,M _ENP,M_Singl,M_RE_60,M_F9_F0_1,M_F9_F0_2,M_m_crys) ;
}