use HADES::TrbNet;
use Time::HiRes qq|usleep|;
+
+if(!defined $ARGV[0] || $ARGV[0] eq '-h') {
+print <<HDOC;
+
+./trb3scadc.pl ADDRESS TYPE
+
+
+Select board type for readout:
+0: Trb3sc (mostly obsolete since 08.2022)
+1: DiRich
+2: RICH Concentrator
+3: RICH Powerboard Voltages
+4: RICH Powerboard Currents (since 02.2019)
+5: RICH Powerboard Currents (until 02.2019)
+6: Trb5sc (mostly obsolete since 08.2022)
+7: MDC (obsolete since 08.2022)
+
+HDOC
+exit;
+}
+
trb_init_ports() or die trb_strerror();
-my $board = hex($ARGV[0]);
-#0 for TRB3sc, 1 for DiRich, 2 for Concentrator, 3 for PowerVoltages, 4 for PowerCurrents, 5 for Trb5sc
+my $board = hex($ARGV[0]);
my $mode = $ARGV[1] || 0;
+
+
+
my $t = [['mV (3.3)','mV (2.5)','mV (1.2)','mV (6)'],
['mV (3.3)','mV (2.5)','mV (1.1)',''],
['mV (3.3)','mV (2.5)','mV (1.2)','mA (@1.2)'],
['mV (3.3)','mV (2.5)','mV (1.2)','mV (1.1)'],
['mA (@1.1)','mA (@1.2)','mA (@2.5)','mA (@3.3)'],
+ ['mA (@1.1)','mA (@1.2)','mA (@2.5)','mA (@3.3)'],
['mV (5)','mV (1.1)','mV (2.5)','mV (3.3)']];
-my $channel = [7,7,7,6,5,7]; #SPI interface number
+my $channel = [7,7,7,6,6,5,7,7]; #SPI interface number
#1:4V, 2:2V, 3:1V
-my $resolution = [[2,1,2,1], [2,2,2,1], [2,2,2,4], [2,2,2,2], [3,3,2,2], [1,2,1,2]];
-my $multiplier= [[1,1,0.5,2],[1,1,0.5,0],[1,1,0.5,3.125],[1,1,0.5,0.5], [2.5,1.25,1,0.5], [2,0.5,1,1]];
-my $modedesc = [ 'Trb3sc', 'DiRich', 'Concentrator', 'Power-Voltages','Power-Currents', 'Trb5sc'];
+my $resolution = [[2,1,2,1], [2,2,2,1], [2,2,2,4], [2,2,2,2], [2,3,2,2], [2,3,2,2], [1,2,1,2], [1,2,1,2]];
+my $multiplier= [[1,1,0.5,2],[1,1,0.5,0],[1,1,0.5,3.125],[1,1,0.5,0.5], [5,1.25,1,0.5], [5,1.25,1,0.5], [2,0.5,1,1], [1,0.5,2,1]];
+my $modedesc = [ 'Trb3sc', 'DiRich', 'Concentrator', 'Power-Voltages','Power-Currents', 'Power-Currents 2018', 'Trb5sc', 'MDC'];
print "\nRunning in mode ".$modedesc->[$mode]."\n\n";
system("trbcmd w $board 0xd41a 25");
my $cmd; my $s;
+trb_register_write($board,0xd417,0x40) if($mode == 4);
$cmd = 0xc1830000 + ($resolution->[$mode][0] << 25);
$s = Dmon::PadiwaSendCmd($cmd,$board,$channel->[$mode]);
$s = Dmon::PadiwaSendCmd(0,$board,$channel->[$mode]);
printf("0x%08x\t%.2f °C\n",$s->{$board},(($s->{$board}>>19)&0xfff)/16.);
+trb_register_write($board,0xd417,0x0) if($mode == 4);
+
+
#back to normal SPI speed
system("trbcmd w $board 0xd41a 7");
print "\n";