speed up input output current monitoring tuning
This MR improves the speed of the input and output current monitoring tuning.
The main reason of the previous version being slow is that every time you call the AMACv2::readAM
function, it does two things: 1) write the AMAC MUX field to set the MUX of the AMAC ADC; 2) read the AMAC ADC. And in the write part (wrField
) there is a 10 ms sleep after each write. And in the input/output current monitoring part (which uses function like AMACv2::getCUR10V
), we call about 10^4 times of readAM
function to get an average number of the ADC reading. So we see here the problem is that actually we only need to write the AMAC MUX once and read the AMAC ADC about 10^4 times to avoid the sleep time in the wrField
part. The proposed solution is: instead of calling readAM
N times and then take the average, now we call readAM
one time and pass the N to readAM
and do the average inside readAM
.
Before the change:
AMACv2::getCUR10V(100)
takes about 1.7 seconds.
After the change:
AMACv2::getCUR10V(100)
takes about 0.35 seconds.
After this fix, the basic test of one powerboard now takes around 3 minutes (was around 10 minutes before the fix).