Repositório do ISTTOK
Bernardo Carvalho
2020-01-27 21d175abcd2ae1e3e80abd5d15f2322c5ee35a16
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")
}