use Time::HiRes qw(usleep);
#use FileHandle;
-#use Data::Dumper;
+use Data::Dumper;
sub adc_i2c_command {
[ $reg_flag, $reg_data, 0x1 ], 3 );
usleep(1000);
my $reg_return = trb_register_read( $fpga, 0xde04 );
+
+ # print Dumper $reg_return;
return $reg_return->{$fpga} & 0xffff;
}
}
sub mimosis_register_read {
my ( $fpga, $mimosis_reg ) = @_;
- my ( $addr, $cmd, $data );
- $addr = 0x12;
- $cmd = ( $mimosis_reg >> 8 );
- $data = ( $mimosis_reg & 0xff );
- mimosis_i2c_command( $fpga, $addr, $cmd, $data, 0, 0, 0 );
+ my $cmd = ( $mimosis_reg >> 8 );
+ my $data = ( $mimosis_reg & 0xff );
- # printf( "%x %x %x %x\n", $fpga, $addr, $cmd, $data );
- usleep(1000);
- $addr = 0x15;
- $val = mimosis_i2c_command( $fpga, $addr, 0, 0, 1, 1, 0 );
+ mimosis_i2c_command( $fpga, 0x12, 0x0, $mimosis_reg, 0, 1, 1 );
- # printf( "%x\n", $val );
- return $val;
+ # printf( "%x %x %x\n", $fpga, $cmd, $data );
+ usleep(1000);
+ return mimosis_i2c_command( $fpga, 0x15, 0x0, 0x0, 1, 1, 0 );
}
1;
Mimosis::mimosis_register_write( $fpga, @$a[0], @$a[1] );
- # usleep(1000);
+ usleep(1000);
# printf( "%x %x %x\n", $fpga, @$a[0], @$a[1] );
}
}
+
+foreach my $a (@config) {
+ if ( defined( @$a[1] ) )
+ {
+ my $val = Mimosis::mimosis_register_read $fpga, @$a[0];
+ usleep(1000);
+ unless(($val & 0xff) == @$a[1])
+ {
+ my $reg_return = trb_register_read $fpga, 0xde04;
+ my $status = ($reg_return->{$fpga} >> 16 ) & 0xff;
+ printf "%x %x Status: %x\n", @$a[0], $val, $status;
+ }
+ }
+}
--- /dev/null
+#!/usr/bin/perl
+
+use warnings;
+use Getopt::Long;
+use HADES::TrbNet;
+use lib ".";
+use Mimosis;
+use Time::HiRes qw(usleep);
+
+my $fpga = 0xa000;
+my @config = do $ARGV[0];
+
+Getopt::Long::Configure(qw(gnu_getopt));
+GetOptions(
+ "fpga|f=s" => \$fpga,
+ "file|d=s" => \$file,
+ "help|h" => \$help,
+);
+
+if ($help) {
+ my $message = <<'END_MESSAGE';
+-f, --fpga -> Hex address of the FPGA. Must be provided, should not be a broadcast address.
+-d, --file -> File with configurations. Must be provided.
+-h, --help -> Print this help.
+END_MESSAGE
+ print $message;
+ exit();
+}
+
+defined($fpga) ? $fpga = hex($fpga) : die print("Must provide FPGA address.\n");
+defined($file)
+ ? @config = do $file
+ : die print("Must provide path to config file.\n");
+
+trb_init_ports() or die trb_strerror();
+
+foreach my $a (@config) {
+ if ( defined( @$a[1] ) )
+ {
+ my $val = Mimosis::mimosis_register_read $fpga, @$a[0];
+ usleep(1000);
+ my $reg_return = trb_register_read $fpga, 0xde04;
+ my $status = ($reg_return->{$fpga} >> 16 ) & 0xff;
+ usleep(1000);
+ if ( ($val & 0xff) != @$a[1] )
+ {
+ printf "%x %x %x\n", @$a[0], $val, $status;
+ }
+ else
+ {
+ printf "%x %x\n", @$a[0], $val;
+ }
+ }
+}
--- /dev/null
+#!/usr/bin/perl
+
+use warnings;
+use Getopt::Long;
+use HADES::TrbNet;
+use lib ".";
+use Mimosis;
+use Time::HiRes qw(usleep);
+
+my $fpga = 0xa000;
+my @config = do $ARGV[0];
+
+Getopt::Long::Configure(qw(gnu_getopt));
+GetOptions(
+ "fpga|f=s" => \$fpga,
+ "file|d=s" => \$file,
+ "help|h" => \$help,
+);
+
+if ($help) {
+ my $message = <<'END_MESSAGE';
+-f, --fpga -> Hex address of the FPGA. Must be provided, should not be a broadcast address.
+-d, --file -> File with configurations. Must be provided.
+-h, --help -> Print this help.
+END_MESSAGE
+ print $message;
+ exit();
+}
+
+defined($fpga) ? $fpga = hex($fpga) : die print("Must provide FPGA address.\n");
+defined($file)
+ ? @config = do $file
+ : die print("Must provide path to config file.\n");
+
+trb_init_ports() or die trb_strerror();
+
+foreach my $a (@config) {
+ if ( defined( @$a[1] ) ) {
+ Mimosis::mimosis_register_write( $fpga, @$a[0], @$a[1] );
+ usleep(1000);
+ }
+}
#MONVOLT
for my $dac ( sort keys %vdac ) { #loop over voltage DACs
+ printf "Scan: %x\n", $vdac{$dac};
+
Mimosis::mimosis_register_write( $fpga, 0x0026, $dac );
usleep(1000);
#MONCURR
for my $dac ( sort keys %idac ) { #loop over current DACs
+ printf "Scan: %x\n", $idac{$dac};
+
Mimosis::mimosis_register_write( $fpga, 0x0025, $dac );
usleep(1000);
#MONVOLT_others
for my $dac ( sort keys %odac ) {
+ printf "Scan: %x\n", $odac{$dac};
+
Mimosis::mimosis_register_write( $fpga, 0x0026, $dac );
usleep(1000);
--- /dev/null
+#!/usr/bin/perl -I.
+
+use warnings;
+use Getopt::Long;
+use HADES::TrbNet;
+use Time::HiRes qw(usleep);
+use lib ".";
+use Mimosis;
+
+my ( $fpga, $addr, $cmd, $cmd_t, $data, $data_t, $word );
+
+Getopt::Long::Configure(qw(gnu_getopt));
+GetOptions(
+ "fpga|f=s" => \$fpga,
+ "addr|a=s" => \$addr,
+ "cmd|c=s" => \$cmd_t,
+ "data|d=s" => \$data_t,
+ "word|w" => \$word,
+ "help|h" => \$help_t,
+);
+
+if ($help_t) {
+ print("Usage:\n");
+ print("-f, --fpga:\n");
+ print("-a, --addr:\n");
+ print("-c, --cmd:\n");
+ print("-d, --data:\n");
+ print("-w, --word:\n");
+ print("-h, --help:\n");
+}
+
+trb_init_ports() or die trb_strerror();
+
+defined($fpga) ? $fpga = hex($fpga) : die print("Must provide FPGA address.\n");
+defined($addr) ? $addr = hex($addr) : die print("Must provide I2C address.\n");
+$cmd = defined($cmd_t) ? hex($cmd_t) : 0x0;
+$data = defined($data_t) ? hex($data_t) : 0x0;
+
+$val = Mimosis::send_i2c_command( $fpga, $addr, $cmd, $data, !defined($data_t),
+ !defined($cmd_t), defined($word) );
+if ( not defined($data_t) ) {
+ printf( "%x\n", $val );
+}
}
if ( defined $fpga_t && defined $reg_t) {
- $fpga_t = hex $fpga_t if ( $fpga_t =~ /^0x/ );
- $reg_t = hex $reg_t if ( $reg_t =~ /^0x/ );
+ $fpga_t = hex $fpga_t if ( $fpga_t =~ /^0x/ );
+ $reg_t = hex $reg_t if ( $reg_t =~ /^0x/ );
}
else {die print "Must provide FPGA address and register.\n";}