****************************************
*	 Prozeßnummer = 10
*	 Delay = 400000
*	 Eventsource = 0
*	 Number of Loops = 0
*	 Priorität = 0
*	 Version = 1
*	 FastStop = 0
*	 AdbasicVersion = 4000001
*	 ATSRAM = 0
*	 OPT_LEVEL = 1
*	 SAVECOMPIL = 0
****************************************
'Pour l'ampli multiplexé des entrées analogiques
DIM bits_AnIn,bits_AnIn_Temp2 AS LONG
DIM bits_AnIn_Temp AS FLOAT 
DIM numADC AS LONG

INIT :
'Entrées analogiques
par_1=0'Numéro de l'entrée analogique 1 .. 32
par_2=0'Valeur associée à l'entrée analogique sélectionnée

'Entrées numériques
par_3=0'Numéro de l'entrée numérique
par_4=0'Valeur associée à l'entrée numérique sélectionnée

'Sorties analogiques
par_5=0'Numéro de la sortie analogique 1 .. 4
par_6=0'Valeur associée à la sortie analogique sélectionnée 0 .. 65535

'Sortie numériques
par_7=-1'Numéro de la sortie numérique 0 .. 31
par_8=0'Valeur associée à la sortie numérique sélectionnée 0 ou 1

'Prog du DIO tout en entrée par défaut à la mise sous tension
'par_9=0
'par_10=0
'par_11=0
'par_12=0 'SE ou DIFF : pas besoin car les entrées sont différentielles par défaut
					'dans les Gold (donc 16 entrées différentielle)
par_14=1 'gain des entrées analogiques 1,2,4 ou 8
GLOBALDELAY = 10^9/(1000*25)

CONF_DIO(1100b)

par_13=DIGIN_WORD() + shift_left(PEEK(204001B0h),16)'Lecture etat initial des ESnum



EVENT :
'Acquisition entrée analogique
IF (par_1>0) then	  		
		bits_AnIn_Temp = LOG(par_14)/LOG(2)+0.1	
		bits_AnIn_Temp2 = bits_AnIn_Temp
		bits_AnIn = shift_left(bits_AnIn_Temp2 ,2)'Gain PGA 2
		bits_AnIn = bits_AnIn  + bits_AnIn_Temp2 'Gain PGA 1
		
		if ((par_1 = 1) or (par_1=2)) then 
			bits_AnIn = shift_left(bits_AnIn,3)
			bits_AnIn = shift_left(bits_AnIn,3)
			if(par_1=1) then 
				numADC = 1 
			else 
				numADC = 2 
			endif
		endif
		if ((par_1 = 3) or (par_1=4)) then 
			bits_AnIn = shift_left(bits_AnIn,3) + 1
			bits_AnIn = shift_left(bits_AnIn,3) + 1 
			if(par_1=3) then 
					numADC = 1 
			else 
					numADC = 2 
			endif
		endif
		if ((par_1 = 5) or (par_1=6)) then 
			bits_AnIn = shift_left(bits_AnIn,3) + 2
			bits_AnIn = shift_left(bits_AnIn,3) + 2 
			if(par_1=5) then 
				numADC = 1 
			else 
				numADC = 2 
			endif
		endif
		if ((par_1 = 7) or (par_1=8)) then 
			bits_AnIn = shift_left(bits_AnIn,3) + 3
			bits_AnIn = shift_left(bits_AnIn,3) + 3 
			if(par_1=7) then 
					numADC = 1
			else 
					numADC = 2 
			endif
		endif
		if ((par_1 = 9) or (par_1=10)) then 
			bits_AnIn = shift_left(bits_AnIn,3) + 4
			bits_AnIn = shift_left(bits_AnIn,3) + 4 
			if(par_1=9) then 
					numADC = 1 
			else 
					numADC = 2 
			endif
		endif
		if ((par_1 = 11) or (par_1=12)) then 
			bits_AnIn = shift_left(bits_AnIn,3) + 5
			bits_AnIn = shift_left(bits_AnIn,3) + 5 
			if(par_1=11) then 
					numADC = 1 
			else 
				numADC = 2 
			endif
		endif
		if ((par_1 = 13) or (par_1=14)) then 
			bits_AnIn = shift_left(bits_AnIn,3) + 6
			bits_AnIn = shift_left(bits_AnIn,3) + 6 
			if(par_1=13) then 
				numADC = 1 
			else 
				numADC = 2 
			endif
		endif
		if ((par_1 = 15) or (par_1=16)) then 
			bits_AnIn = shift_left(bits_AnIn,3) + 7
			bits_AnIn = shift_left(bits_AnIn,3) + 7 
			if(par_1=15) then 
				numADC = 1 
			else 
				numADC = 2 
			endif
		endif

		set_mux(bits_AnIn)		
		sleep(60)
		start_conv(11011b)
		wait_eoc(11b)
		if (numADC = 1) then
		  par_2 =readadc(1)
		else
			par_2 =readadc(2)
		endif
		par_1 = 0
ENDIF

'Acquisition entrée numérique
IF (par_3>0) then
	par_4 = DIGIN_WORD() and par_3
	par_3=0
ENDIF

'sortie d'un valeur analogique
IF (par_5>0) then
  DAC(par_5,par_6)
	par_5=0
ENDIF

'Sortie d'un valeur numérique
IF (par_7>-1) then
  if (par_8 = 1) then SET_DIGOUT(par_7 - 16)
  if (par_8 = 0) then CLEAR_DIGOUT(par_7 - 16)
	par_7=-1
ENDIF
