[r8]: / trunk / MEGAIO_FB_1 / MEGAIO_FB / svnobj  Maximize  Restore  History

Download this file

46 lines (44 with data), 4.1 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
FUNCTION_BLOCK MEGAIO_FB EXTENDS i2c
VAR_INPUT
	stIn : IoDrvInput;
	stCfg : IoDrvConfig;
END_VAR
VAR_OUTPUT
	stOut : IoDrvOutput;
VAR
	timer: TON := (IN:=TRUE);
	dacRawValue: UINT :=0;
	relayRaw: USINT :=0;
	odRaw: USINT := 0;
	odLastState: ARRAY[0..3] OF BOOL;
	gpioDirRaw: USINT := 16#FF;
	gpioOutLastState: ARRAY[0..5] OF BOOL;
VAR_TEMP	
	i, usi: USINT;
	buff: ARRAY[0..2] OF USINT;	
SUPER^();
CASE _iState OF
0:
	usiAddress := stCfg.i2cAddress;
	IF usiAddress < 16#31 OR  usiAddress > 16#34 THEN
		usiAddress := 16#31;
	END_IF
	//usiAddress := 16#31 + StackLevel;
	IF SUPER^.init() THEN
		_iState := 5;
	END_IF	
5:	
	Timer.pt := T#70MS;
	buff[0] := MEGAIO_DAC_ADD;
	buff[1] := 0;
	buff[2] := 0;
	// init DAC 0.0V
  	write(ADR(buff), 3);
	// init all relay off
	write8(0, relayRaw);
	// set all gpio input
	write8(GPIO_DIR_ADD, gpioDirRaw);
	// set all open drain
	write8(MEGAIO_OD_ADD, odRaw);
	
	_iState := 10;
END_CASE