Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
PyPCC
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LOFAR2.0
PyPCC
Commits
aea74308
Commit
aea74308
authored
1 year ago
by
Paulus Kruger
Browse files
Options
Downloads
Patches
Plain Diff
APSPU array of 2
parent
2cf6ab24
No related branches found
No related tags found
1 merge request
!23
Pts1
Pipeline
#82379
passed
1 year ago
Stage: run
Changes
3
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
pypcc/config/APSPUTR.yaml
+19
-2
19 additions, 2 deletions
pypcc/config/APSPUTR.yaml
pypcc/config/APSPUTR_1.yaml
+177
-0
177 additions, 0 deletions
pypcc/config/APSPUTR_1.yaml
pypcc/i2cserv/i2c_switch_smb.py
+65
-0
65 additions, 0 deletions
pypcc/i2cserv/i2c_switch_smb.py
with
261 additions
and
2 deletions
pypcc/config/APSPUTR.yaml
+
19
−
2
View file @
aea74308
...
@@ -3,13 +3,22 @@ description: "1234"
...
@@ -3,13 +3,22 @@ description: "1234"
drivers
:
drivers
:
-
name
:
I2C
-
name
:
I2C
type
:
i2c_smb
us
type
:
i2c_s
witch_s
mb
parameters
:
[
4
]
#I2C port number
parameters
:
[
4
]
#I2C port number
devreg
:
[
0x70
]
-
name
:
I2C_PU
-
name
:
I2C_PU
type
:
i2c_
dev
#I2C devices
type
:
i2c_
array
parent
:
I2C
parent
:
I2C
parameters
:
[
0
,
1
]
#lookup table
I2Ccut
:
10
status
:
APSPUTR_I2C_error
status
:
APSPUTR_I2C_error
# - name: I2C_PU
# type: i2c_dev #I2C devices
# parent: I2C
# status: APSPUTR_I2C_error
#This is the I2C devices in the RCU
#This is the I2C devices in the RCU
device_registers
:
device_registers
:
-
name
:
ROM
-
name
:
ROM
...
@@ -75,6 +84,7 @@ variables:
...
@@ -75,6 +84,7 @@ variables:
driver
:
I2C_PU
driver
:
I2C_PU
rw
:
ro
#server RW variable, not linked to IO
rw
:
ro
#server RW variable, not linked to IO
dtype
:
uint8
dtype
:
uint8
dim
:
2
-
name
:
APSPUTR_monitor_rate
-
name
:
APSPUTR_monitor_rate
description
:
Monitor rate in seconds
description
:
Monitor rate in seconds
...
@@ -93,6 +103,7 @@ variables:
...
@@ -93,6 +103,7 @@ variables:
width
:
32
width
:
32
rw
:
ro
rw
:
ro
dtype
:
uint32
dtype
:
uint32
dim
:
2
-
name
:
APSPU_PCB_version
-
name
:
APSPU_PCB_version
description
:
Version number
description
:
Version number
...
@@ -101,6 +112,7 @@ variables:
...
@@ -101,6 +112,7 @@ variables:
width
:
0x100
#32 characters
width
:
0x100
#32 characters
rw
:
ro
rw
:
ro
dtype
:
string
dtype
:
string
dim
:
2
-
name
:
APSPU_PCB_number
-
name
:
APSPU_PCB_number
description
:
PCB number
description
:
PCB number
...
@@ -109,6 +121,7 @@ variables:
...
@@ -109,6 +121,7 @@ variables:
width
:
0x100
#32 characters
width
:
0x100
#32 characters
rw
:
ro
rw
:
ro
dtype
:
string
dtype
:
string
dim
:
2
-
name
:
[
APSPU_LBA_VOUT
,
APSPU_RCU2A_VOUT
,
APSPU_RCU2D_VOUT
]
-
name
:
[
APSPU_LBA_VOUT
,
APSPU_RCU2A_VOUT
,
APSPU_RCU2D_VOUT
]
description
:
Output voltage (V)
description
:
Output voltage (V)
...
@@ -120,6 +133,7 @@ variables:
...
@@ -120,6 +133,7 @@ variables:
endian
:
"
<"
endian
:
"
<"
scale
:
4.8828e-4
#2^-11
scale
:
4.8828e-4
#2^-11
monitor
:
true
monitor
:
true
dim
:
2
-
name
:
[
APSPU_LBA_IOUT
,
APSPU_RCU2A_IOUT
,
APSPU_RCU2D_IOUT
]
-
name
:
[
APSPU_LBA_IOUT
,
APSPU_RCU2A_IOUT
,
APSPU_RCU2D_IOUT
]
description
:
Output current (A)
description
:
Output current (A)
...
@@ -130,6 +144,7 @@ variables:
...
@@ -130,6 +144,7 @@ variables:
dtype
:
double
dtype
:
double
scale
:
smbus_2bytes_to_float
scale
:
smbus_2bytes_to_float
monitor
:
true
monitor
:
true
dim
:
2
-
name
:
[
APSPU_LBA_TEMP
,
APSPU_RCU2A_TEMP
,
APSPU_RCU2D_TEMP
]
-
name
:
[
APSPU_LBA_TEMP
,
APSPU_RCU2A_TEMP
,
APSPU_RCU2D_TEMP
]
description
:
DC-DC converter temperature (Celsius)
description
:
DC-DC converter temperature (Celsius)
...
@@ -140,6 +155,7 @@ variables:
...
@@ -140,6 +155,7 @@ variables:
dtype
:
double
dtype
:
double
scale
:
smbus_2bytes_to_float
scale
:
smbus_2bytes_to_float
monitor
:
true
monitor
:
true
dim
:
2
-
name
:
[
APSPU_FAN1_RPM
,
APSPU_FAN2_RPM
,
APSPU_FAN3_RPM
]
-
name
:
[
APSPU_FAN1_RPM
,
APSPU_FAN2_RPM
,
APSPU_FAN3_RPM
]
description
:
FAN speed in RPM.
description
:
FAN speed in RPM.
...
@@ -153,6 +169,7 @@ variables:
...
@@ -153,6 +169,7 @@ variables:
scale
:
4.7684e-7
#FAN_TACHS/TACH_COUNT_FREQ/TACH_PERIODS = 1/8192/16 /16 (bitoffset=0)
scale
:
4.7684e-7
#FAN_TACHS/TACH_COUNT_FREQ/TACH_PERIODS = 1/8192/16 /16 (bitoffset=0)
convert_unit
:
period2RPM
convert_unit
:
period2RPM
monitor
:
true
monitor
:
true
dim
:
2
methods
:
methods
:
-
name
:
APSPUTR_Init
#Called after startup to load. Should have all stored registers
-
name
:
APSPUTR_Init
#Called after startup to load. Should have all stored registers
...
...
This diff is collapsed.
Click to expand it.
pypcc/config/APSPUTR_1.yaml
0 → 100644
+
177
−
0
View file @
aea74308
1version
:
"
1.0"
description
:
"
1234"
drivers
:
-
name
:
I2C
type
:
i2c_smbus
parameters
:
[
4
]
#I2C port number
-
name
:
I2C_PU
type
:
i2c_dev
#I2C devices
parent
:
I2C
status
:
APSPUTR_I2C_error
#This is the I2C devices in the RCU
device_registers
:
-
name
:
ROM
address
:
0x50
driver
:
I2C_PU
registers
:
-
name
:
ID
description
:
Random
address
:
0xfc
-
name
:
Version
description
:
Set in production
address
:
0
-
name
:
Serial
address
:
0x20
-
name
:
POL_LBA
address
:
0x3C
driver
:
i2c_smbus
registers
:
-
{
name
:
"
TEMP"
,
address
:
0x8D
,
crc
:
True
}
-
{
name
:
"
VIN"
,
address
:
0x88
,
crc
:
True
}
-
{
name
:
"
VOUT"
,
address
:
0x8B
,
crc
:
True
}
-
{
name
:
"
IOUT"
,
address
:
0x8C
,
crc
:
True
}
-
name
:
POL_RCU2A
address
:
0x3D
driver
:
i2c_smbus
registers
:
-
{
name
:
"
TEMP"
,
address
:
0x8D
,
crc
:
True
}
-
{
name
:
"
VIN"
,
address
:
0x88
,
crc
:
True
}
-
{
name
:
"
VOUT"
,
address
:
0x8B
,
crc
:
True
}
-
{
name
:
"
IOUT"
,
address
:
0x8C
,
crc
:
True
}
-
name
:
POL_RCU2D
address
:
0x3E
driver
:
i2c_smbus
registers
:
-
{
name
:
"
TEMP"
,
address
:
0x8D
,
crc
:
True
}
-
{
name
:
"
VIN"
,
address
:
0x88
,
crc
:
True
}
-
{
name
:
"
VOUT"
,
address
:
0x8B
,
crc
:
True
}
-
{
name
:
"
IOUT"
,
address
:
0x8C
,
crc
:
True
}
-
name
:
MAX
description
:
MAX6620 fan speed controller
address
:
0x29
driver
:
I2C_PU
registers
:
-
{
name
:
GLOBAL
,
address
:
0x00
}
-
{
name
:
TACH1
,
address
:
0x10
}
-
{
name
:
TACH2
,
address
:
0x12
}
-
{
name
:
TACH3
,
address
:
0x14
}
-
{
name
:
r2
,
address
:
0x2
}
-
{
name
:
r3
,
address
:
0x3
}
-
{
name
:
r4
,
address
:
0x4
}
-
{
name
:
r5
,
address
:
0x5
}
-
{
name
:
r6
,
address
:
0x6
}
-
{
name
:
r7
,
address
:
0x7
}
-
{
name
:
r8
,
address
:
0x8
}
variables
:
-
name
:
APSPUTR_I2C_error
description
:
0=Good, >0 I2C communication error
driver
:
I2C_PU
rw
:
ro
#server RW variable, not linked to IO
dtype
:
uint8
-
name
:
APSPUTR_monitor_rate
description
:
Monitor rate in seconds
rw
:
variable
dtype
:
uint8
-
name
:
APSPUTR_translator_busy
description
:
True when I2C line busy
rw
:
ro
#server variable, not linked to IO
dtype
:
boolean
-
name
:
APSPU_PCB_ID
description
:
Unique PCB ID
driver
:
I2C_PU
devreg
:
ROM.ID
width
:
32
rw
:
ro
dtype
:
uint32
-
name
:
APSPU_PCB_version
description
:
Version number
driver
:
I2C_PU
devreg
:
ROM.Version
width
:
0x100
#32 characters
rw
:
ro
dtype
:
string
-
name
:
APSPU_PCB_number
description
:
PCB number
driver
:
I2C_PU
devreg
:
ROM.Serial
width
:
0x100
#32 characters
rw
:
ro
dtype
:
string
-
name
:
[
APSPU_LBA_VOUT
,
APSPU_RCU2A_VOUT
,
APSPU_RCU2D_VOUT
]
description
:
Output voltage (V)
driver
:
I2C_PU
devreg
:
[
POL_LBA.VOUT
,
POL_RCU2A.VOUT
,
POL_RCU2D.VOUT
]
width
:
16
rw
:
ro
dtype
:
double
endian
:
"
<"
scale
:
4.8828e-4
#2^-11
monitor
:
true
-
name
:
[
APSPU_LBA_IOUT
,
APSPU_RCU2A_IOUT
,
APSPU_RCU2D_IOUT
]
description
:
Output current (A)
driver
:
I2C_PU
devreg
:
[
POL_LBA.IOUT
,
POL_RCU2A.IOUT
,
POL_RCU2D.IOUT
]
width
:
16
rw
:
ro
dtype
:
double
scale
:
smbus_2bytes_to_float
monitor
:
true
-
name
:
[
APSPU_LBA_TEMP
,
APSPU_RCU2A_TEMP
,
APSPU_RCU2D_TEMP
]
description
:
DC-DC converter temperature (Celsius)
driver
:
I2C_PU
devreg
:
[
POL_LBA.TEMP
,
POL_RCU2A.TEMP
,
POL_RCU2D.TEMP
]
width
:
16
rw
:
ro
dtype
:
double
scale
:
smbus_2bytes_to_float
monitor
:
true
-
name
:
[
APSPU_FAN1_RPM
,
APSPU_FAN2_RPM
,
APSPU_FAN3_RPM
]
description
:
FAN speed in RPM.
driver
:
I2C_PU
devreg
:
[
MAX.TACH1
,
MAX.TACH2
,
MAX.TACH3
]
# bitoffset: 5
width
:
16
rw
:
ro
dtype
:
double
# scale: 1.52588e-5 #FAN_TACHS/TACH_COUNT_FREQ/TACH_PERIODS = 1/8192/16 *2 (bitoffset=5) - not working correctly
scale
:
4.7684e-7
#FAN_TACHS/TACH_COUNT_FREQ/TACH_PERIODS = 1/8192/16 /16 (bitoffset=0)
convert_unit
:
period2RPM
monitor
:
true
methods
:
-
name
:
APSPUTR_Init
#Called after startup to load. Should have all stored registers
driver
:
I2C_PU
debug
:
True
instructions
:
-
APSPU_PCB_ID
:
Update
-
APSPU_PCB_version
:
Update
-
APSPU_PCB_number
:
Update
-
APSPU_FAN_monitor_on
:
0
-
name
:
APSPU_FAN_monitor_on
description
:
Setup the FAN monitor. Called automatically on power-on.
driver
:
I2C_PU
instructions
:
-
MAX.GLOBAL
:
0x02
#Run monitor
-
MAX.r2
:
0x88
-
MAX.r6
:
0x80
# int((math.log(TACH_PERIODS{16}) / math.log(2))) << 5,
-
MAX.r3
:
0x88
-
MAX.r7
:
0x80
-
MAX.r4
:
0x88
-
MAX.r8
:
0x80
This diff is collapsed.
Click to expand it.
pypcc/i2cserv/i2c_switch_smb.py
0 → 100644
+
65
−
0
View file @
aea74308
import
logging
#from .i2c import i2c
from
.i2c_smbus
import
i2c_smbus
as
i2c
#import HWconf
#SWaddr=0x70
class
i2c_switch_smb
(
i2c
):
def
__init__
(
self
,
config
):
i2c
.
__init__
(
self
,
config
)
# self.SWaddr=config['devreg'][0]['addr']
self
.
SWcnt
=
len
(
config
[
'
devreg
'
]);
self
.
SWaddrs
=
[
config
[
'
devreg
'
][
x
][
'
addr
'
]
for
x
in
range
(
self
.
SWcnt
)];
self
.
CurrentChannel
=
[
-
1
for
x
in
range
(
self
.
SWcnt
)];
self
.
NoSwitch
=
self
.
SWcnt
==
0
;
S
=
''
;
for
x
in
range
(
self
.
SWcnt
):
S
+=
str
(
self
.
SWaddrs
[
x
])
+
"
,
"
;
logging
.
info
(
"
i2c switch at address
"
+
S
)
if
self
.
NoSwitch
:
logging
.
warn
(
"
i2c switch disabled!
"
)
def
clearSwitch
(
self
):
for
x
in
range
(
self
.
SWcnt
):
self
.
CurrentChannel
[
x
]
=-
1
;
def
SetSW1
(
self
,
channelbit
):
# channel=(0 if (channelbit>5) else 1<<(channelbit)) #LTS
if
self
.
NoSwitch
:
return
True
;
SWn
=
channelbit
>>
3
;
channel
=
1
<<
(
channelbit
&
0x07
)
result
=
True
for
x
in
range
(
self
.
SWcnt
):
if
x
==
SWn
:
if
(
channel
)
!=
self
.
CurrentChannel
[
x
]:
self
.
CurrentChannel
[
x
]
=
channel
logging
.
debug
(
"
SetChannel addr %i = val %i
"
%
(
SWn
,
channel
));
if
not
(
self
.
i2csetget
(
self
.
SWaddrs
[
x
],[
channel
])):
result
=
False
else
:
if
self
.
CurrentChannel
[
x
]
!=
0
:
logging
.
debug
(
"
SetChannel addr %i = val %i
"
%
(
x
,
0
));
self
.
CurrentChannel
[
x
]
=
0
if
not
(
self
.
i2csetget
(
self
.
SWaddrs
[
x
],[
0
])):
result
=
False
if
not
(
result
):
logging
.
info
(
"
Switch set error!
"
)
return
result
def
ClearNewChannel
(
self
):
self
.
newChannel
=
[
0
for
x
in
self
.
SWaddrs
]
+
[
0
];
#last one is a dummy
def
AddNewChannel
(
self
,
channelbit
):
SWn
=
(
channelbit
>>
3
);
channel
=
1
<<
(
channelbit
&
0x07
)
self
.
newChannel
[
SWn
]
|=
channel
;
def
UpdateNewChannel
(
self
):
# channel&=0x3F;#LTS
if
self
.
NoSwitch
:
return
True
;
for
x
in
range
(
self
.
SWcnt
):
if
self
.
newChannel
[
x
]
!=
self
.
CurrentChannel
[
x
]:
self
.
CurrentChannel
[
x
]
=
self
.
newChannel
[
x
];
logging
.
debug
(
"
SetChannel2 addr %i = val %i
"
%
(
x
,
self
.
newChannel
[
x
]));
if
not
(
self
.
i2csetget
(
self
.
SWaddrs
[
x
],[
self
.
newChannel
[
x
]])):
return
False
;
# logging.debug("SetChannel=%i" % channel)
# self.CurrentChannel=channel
return
True
# def I2Ccallback(self,RCU,addr,data,reg=None,read=0):
# self.callback1(addr,data,reg,read)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment