]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
Adding stripped version of padiwa.pl as adc.pl, works on padiwa, but not on ADC addon...
authorAndreas Neiser <neiser@kph.uni-mainz.de>
Mon, 7 Jul 2014 11:44:02 +0000 (13:44 +0200)
committerAndreas Neiser <neiser@kph.uni-mainz.de>
Mon, 7 Jul 2014 11:44:02 +0000 (13:44 +0200)
tools/adc.pl [new file with mode: 0755]

diff --git a/tools/adc.pl b/tools/adc.pl
new file mode 100755 (executable)
index 0000000..f36cc61
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/perl -w
+use warnings;
+use strict;
+use FileHandle;
+use Time::HiRes qw( usleep );
+use Data::Dumper;
+use HADES::TrbNet;
+use Date::Format;
+
+if (!defined $ENV{'DAQOPSERVER'}) {
+  die "DAQOPSERVER not set in environment";
+}
+
+if (!defined &trb_init_ports()) {
+  die("can not connect to trbnet-daemon on the $ENV{'DAQOPSERVER'}");
+}
+
+unless(defined $ARGV[0] && defined $ARGV[1]) {
+  print 'usage: adc.pl $FPGA $cmd [$value]',"\n\n";
+  exit;
+}
+
+# define "constants" to make code more readable
+# chain=0 : MachXO on addon
+# chain=1 : 1st chain on Addon connector SPI_CONN_L
+# chain=2 : 2nd chain on Addon connector SPI_CONN_H
+# chain=3 : ADC chains (CS via MachXO!)
+# chain=4 : 1st LMK clock chip
+# chain=5 : 2nd LMK clock chip
+my %chain = (
+             'machxo'  => 0,
+             'addon_0' => 1,
+             'addon_1' => 2,
+             'adc'     => 3,
+             'lmk_0'   => 4,
+             'lmk_1'   => 5
+            );
+
+my $board;
+($board) = $ARGV[0] =~ /^0?x?(\w+)/;
+$board = hex($board);
+
+
+sub sendcmd {
+  my $cmd = shift;
+  my $chain = shift;
+  my $c = [$cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1<<$chain,1];
+  trb_register_write_mem($board,0xd400,0,$c,scalar @{$c});
+  #   trb_register_write($board,0xd410,1<<$chain) or die "trb_register_write: ", trb_strerror();
+  #   trb_register_write($board,0xd411,1);
+  #usleep(1000);
+  return trb_register_read($board,0xd412);
+}
+
+if ($ARGV[1] eq "time") {
+  my $ids;
+  for (my $i = 0; $i <= 1; $i++) {
+    my $b = sendcmd(0x21000000 + $i*0x10000, $chain{machxo});
+    foreach my $e (sort keys %$b) {
+      $ids->{$e}->{$i} = $b->{$e}&0xffff;
+    }
+  }
+  foreach my $e (sort keys %$ids) {
+    printf("0x%04x\t0x%04x%04x\t%s\n",$e,$ids->{$e}->{1},
+           $ids->{$e}->{0},time2str('%Y-%m-%d %H:%M',($ids->{$e}->{1}*2**16+$ids->{$e}->{0})));
+  }
+}