PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : AD7190_24bit



hadiabdi
04-01-2012, 12:41
برنامه يكي از بهترين 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) ;
}

hadiabdi
04-01-2012, 12:46
You can see links before reply

esisafa
04-01-2012, 18:28
سلام
این برنامه چه کار میکنه
برای راه انداژی ad7190 استفاده شده؟

hadiabdi
04-01-2012, 23:23
بله مدار راه انداز 7190 هستش اي سي فوق العاده ايي هستش خيلي عالي

aryanaar
04-04-2014, 23:43
لطفا توضیح بیشتری بدین و ایا شما با این ای سی لودسل درایو کردین ؟
شماتیک ؟
لطفا فایل های مربوطه رو اپلود کنید

omid.r
10-01-2019, 11:07
سلام
من یدونه ad7190 رو با adr421 راه انداختم برای خواندن ولتاژ، ولی مثلا ولتاژ رو بهش اعمال میکنم خیلی خوب نشون میده ولی بعد از حدود شاید 5 ثانیه ولتاژ نشون داده سریع افت میکنه مثلا باطری قلمی میزنم نشون میده 1.5 ولی بعد از چند ثانیه ولتاژش میاد روی 1.3 ولت درحالی که ولتاژ باطری یا رفرنس هیچ تغییری نکرده.
کسی دلیلشو میدونه ؟
خیلی مهمه
ممنون