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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
| #######################################################
| # ### ### #
| # ### EPICS Database for ### #
| # ### I2C PCF8591 board ### #
| # ### ### #
| # ### author: B. Carvalho IPFN ### #
| # ### ### #
| # ### Ref 2.0; 2019-10-14 ### #
| # ### ### #
| # ### macros: ID I2C address of ADC ### #
| # ### Description: ### #
| # ### This DB file is using ### #
| # ### stream(asynI2C) to read/write ### #
| # ### an PCF8591 ADDA chip ### #
| #######################################################
|
| #####################################################
| # Read/Write pcf8591 register @ address 0x48=d72 ### #
| #####################################################
| record( mbboDirect, "$(P)$(R)PCF8591:72:CTRLREGISTER") {
| field(DTYP, "stream")
| field(OUT, "@pcf8591.proto wReg(72) I2C")
| field(SHFT, "0")
| field(NOBT, "8")
| field(VAL, 255)
| field(PINI,"YES")
| }
| # Receiving two bytes. last one counts
| record( longin, "$(P)$(R)PCF8591:72:ADC_CH1" ) {
| field(DTYP, "stream")
| field(INP, "@pcf8591.proto rConvAdc0(72) I2C")
| }
| record( calc, "$(P)$(R)PCF8591:72:BYTE2_CH1" ) {
| field(INPA, "$(P)$(R)PCF8591:72:ADC_CH1 PP NMS")
| # extract LSB =last byte received
| field(CALC, " (A & 255 )" )
| }
|
| record( ai, "$(P)$(R)TMPump2-Speed" ) {
| field(DESC, "TMPump2-Speed")
| field(DTYP, "Raw Soft Channel" )
| field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH1 PP NMS")
| field(SCAN, "1 second")
| field(ASLO, "16" )
| field(AOFF, "0" )
| field(EGU, "RPM" )
| field(PREC, "3" )
| field(HOPR, "5000" )
| field(LOPR, "0" )
| field(LOW, "200.0")
| # # field(LOLO,"0.0")
| field(LSV, "MINOR")
| # # field(LLSV,"MAJOR")
| }
| record( longin, "$(P)$(R)PCF8591:72:ADC_CH2" ) {
| field(DTYP, "stream")
| field(INP, "@pcf8591.proto rConvAdc1(72) I2C")
| }
| record( calc, "$(P)$(R)PCF8591:72:BYTE2_CH2" ) {
| field(INPA, "$(P)$(R)PCF8591:72:ADC_CH2 PP NMS")
| # LSB i=last byte received
| field(CALC, " (A & 255)" )
| }
|
| record( ai, "$(P)$(R)TMPump2-Current" ) {
| field(DESC, "TMPump2-Current")
| field(DTYP, "Raw Soft Channel" )
| field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH2 PP NMS")
| field(SCAN, "1 second")
| field(ASLO, "0.1" )
| field(AOFF, "0" )
| field(EGU, "mA" )
| field(PREC, "3" )
| field(HOPR, "50" )
| field(LOPR, "0" )
| field(LOW, "2.0")
| # # field(LOLO,"0.0")
| field(LSV, "MINOR")
| # # field(LLSV,"MAJOR")
| }
|
| # Receiving two bytes. last one counts
| record( longin, "$(P)$(R)PCF8591:72:ADC_CH3" ) {
| field(DTYP, "stream")
| field(INP, "@pcf8591.proto rConvAdc2(72) I2C")
| }
| record( calc, "$(P)$(R)PCF8591:72:BYTE2_CH3" ) {
| field(INPA, "$(P)$(R)PCF8591:72:ADC_CH3 PP NMS")
| # extract LSB =last byte received
| field(CALC, " (A & 255 )" )
| }
| record(ai, "$(P)$(R)Shot-TorPSCurrentImage" ) {
| field(DESC, "Toroidal Current Image")
| field(DTYP, "Raw Soft Channel" )
| field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH3 PP NMS")
| field(SCAN, ".2 second")
| field(ASLO, "39.215686275" )
| field(AOFF, "0.0" )
| field(EGU, "A" )
| field(PREC, "3" )
| field(HOPR, "10000" )
| field(LOPR, "0" )
| field(MDEL, "20" )
| # field(LOW, "200.0")
| # # field(LOLO,"0.0")
| # field(LSV, "MINOR")
| # # field(LLSV,"MAJOR")
| }
|
|
| record( longout, "$(P)$(R)PCF8591:72:DAC") {
| field(DTYP, "stream")
| field(OUT, "@pcf8591.proto wDac(72) I2C")
| field(DRVH, "255" )
| field(DRVL, "0" )
| field(VAL, 128)
| field(PINI,"YES")
| }
|
|