no warnings "portable";
use HADES::TrbNet;
use Time::HiRes qw(usleep);
+
#use FileHandle;
#use Data::Dumper;
-
sub adc_i2c_command {
- my ($fpga, $addr, $cmd, $data, $readwrite, $skipcmd, $wordbyte) = @_;
+ my ( $fpga, $addr, $cmd, $data, $readwrite, $skipcmd, $wordbyte ) = @_;
- $reg_data = ($data << 16) + ($cmd << 8) + 0x80 + $addr;
- $reg_flag = ($readwrite << 8) + ($skipcmd << 4) + $wordbyte;
+ $reg_data = ( $data << 16 ) + ( $cmd << 8 ) + 0x80 + $addr;
+ $reg_flag = ( $readwrite << 8 ) + ( $skipcmd << 4 ) + $wordbyte;
- if($readwrite == 0) {
- trb_register_write_mem($fpga,0xd681,0,[$reg_flag,$reg_data],2);
- }
- elsif($readwrite == 1) {
- trb_register_write_mem($fpga,0xd681,0,[$reg_flag,$reg_data],2);
- usleep(1000);
- my $reg_return = trb_register_read($fpga,0xd684);
- return $reg_return->{$fpga} & 0xffff;
- }
+ if ( $readwrite == 0 ) {
+ trb_register_write_mem( $fpga, 0xd681, 0, [ $reg_flag, $reg_data ], 2 );
+ }
+ elsif ( $readwrite == 1 ) {
+ trb_register_write_mem( $fpga, 0xd681, 0, [ $reg_flag, $reg_data ], 2 );
+ usleep(1000);
+ my $reg_return = trb_register_read( $fpga, 0xd684 );
+ return $reg_return->{$fpga} & 0xffff;
+ }
}
+sub mimosis_i2c_command {
-sub adc_register_write {
- my ($fpga, $mimosis_reg, $mimosis_data) = @_;
- my ($addr, $cmd, $data);
-
- $addr = 0x12;
- $cmd = ($mimosis_reg >> 8);
- $data = (($mimosis_reg & 0xff) << 8) + $mimosis_data;
-
-# printf("%x %x\n", $cmd, $data);
- adc_i2c_command($fpga, $addr, $cmd, $data, 0, 0, 1);
-}
+ my ( $fpga, $addr, $cmd, $data, $readwrite, $skipcmd, $wordbyte ) = @_;
+ $reg_data = ( $data << 16 ) + ( $cmd << 8 ) + ( $addr << 1 );
+ $reg_flag = ( $readwrite << 8 ) + ( $skipcmd << 4 ) + $wordbyte;
-sub adc_register_read {
- my ($fpga, $mimosis_reg) = @_;
- my ($addr, $cmd, $data);
+ if ( $readwrite == 0 ) {
- $addr = 0x12;
- $cmd = ($mimosis_reg >> 8);
- $data = ($mimosis_reg & 0xff);
+ # printf( "%x %x %x %x\n", $fpga, $addr, $cmd, $data );
+ # printf( "%x %x\n", $reg_flag, $reg_data );
+ trb_register_write_mem( $fpga, 0xde01, 0,
+ [ $reg_flag, $reg_data, 0x1 ], 3 );
+ }
+ elsif ( $readwrite == 1 ) {
-# printf("%x %x\n", $cmd, $data);
- $val = adc_i2c_command($fpga, $addr, $cmd, $data, 1, 0, 1);
- return $val;
+ # printf( "%x %x %x %x\n", $fpga, $addr, $cmd, $data );
+ trb_register_write_mem( $fpga, 0xde01, 0,
+ [ $reg_flag, $reg_data, 0x1 ], 3 );
+ usleep(1000);
+ my $reg_return = trb_register_read( $fpga, 0xde04 );
+ return $reg_return->{$fpga} & 0xffff;
+ }
}
-sub mimosis_i2c_command {
-
- my ($fpga, $addr, $cmd, $data, $readwrite, $skipcmd, $wordbyte) = @_;
-
- $reg_data = ($data << 16) + ($cmd << 8) + ($addr << 1);
- $reg_flag = ($readwrite << 8) + ($skipcmd << 4) + $wordbyte;
-
- if($readwrite == 0) {
- trb_register_write_mem($fpga,0xde01,0,[$reg_flag,$reg_data,0x1],3);
- }
- elsif($readwrite == 1) {
- trb_register_write_mem($fpga,0xde01,0,[$reg_flag,$reg_data,0x1],3);
- usleep(1000);
- my $reg_return = trb_register_read($fpga,0xde04);
- return $reg_return->{$fpga} & 0xffff;
- }
-}
-
-
sub mimosis_register_write {
- my ($fpga, $mimosis_reg, $mimosis_data) = @_;
- my ($addr, $cmd, $data);
+ my ( $fpga, $mimosis_reg, $mimosis_data ) = @_;
+ my ( $addr, $cmd, $data );
$addr = 0x12;
- $cmd = ($mimosis_reg >> 8);
- $data = (($mimosis_reg & 0xff) << 8) + $mimosis_data;
+ $cmd = ( $mimosis_reg >> 8 );
+ $data = ( ( $mimosis_reg & 0xff ) << 8 ) + $mimosis_data;
-# printf("%x %x\n", $cmd, $data);
- mimosis_i2c_command($fpga, $addr, $cmd, $data, 0, 0, 1);
+ # printf( "%x %x\n", $cmd, $data );
+ mimosis_i2c_command( $fpga, $addr, $cmd, $data, 0, 0, 1 );
+ usleep(1000);
}
-
sub mimosis_register_read {
- my ($fpga, $mimosis_reg) = @_;
- my ($addr, $cmd, $data);
+ 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);
+ $cmd = ( $mimosis_reg >> 8 );
+ $data = ( $mimosis_reg & 0xff );
+ mimosis_i2c_command( $fpga, $addr, $cmd, $data, 0, 0, 0 );
+
+ # printf( "%x %x %x %x\n", $fpga, $addr, $cmd, $data );
usleep(1000);
-# printf("%x %x\n", $cmd, $data);
$addr = 0x15;
- $val = mimosis_i2c_command($fpga, $addr, 0, 0, 1, 1, 0);
+ $val = mimosis_i2c_command( $fpga, $addr, 0, 0, 1, 1, 0 );
+
+ # printf( "%x\n", $val );
return $val;
}
1;
-
-
-
__END__
my $fpga = 0xa000;
my %vdac = (
-
- 3 => 0x004c,
-
- 4 => 0x0047,
-
- 5 => 0x004d,
-
- 7 => 0x0048,
-
- 8 => 0x0049,
-
- 9 => 0x004a,
-
+ 3 => 0x004c,
+ 4 => 0x0047,
+ 5 => 0x004d,
+ 7 => 0x0048,
+ 8 => 0x0049,
+ 9 => 0x004a,
10 => 0x004b,
);
+my %vdac_reset = (
+ 3 => 0x53,
+ 4 => 0x43,
+ 5 => 0x32,
+ 7 => 0x53,
+ 8 => 0x53,
+ 9 => 0x53,
+ 10 => 0x53,
+);
+
my %idac = (
1 => 0x0040,
2 => 0x0042,
3 => 0x0041,
);
+my %idac_reset = (
+ 1 => 0x40,
+ 2 => 0x1c,
+ 3 => 0x34,
+);
+
my %odac = (
1 => 0x0045,
2 => 0x0044,
6 => 0x0043,
);
+my %odac_reset = (
+ 1 => 0x68,
+ 2 => 0x57,
+ 6 => 0xab,
+);
+
+$conv_f = ( 2 * 4096 ) / 2**16;
+
trb_init_ports() or die trb_strerror();
my $vmon_file = "vmon_data.csv";
$volt_raw = Mimosis::adc_i2c_command( $fpga, 0x48, 0x0, 0x0, 1, 0, 1 );
# printf( "%x\t%i\t%i\n", $vdac{$dac}, $setv, $volt_raw );
- printf( v_FH "%x\t%i\t%i\n", $vdac{$dac}, $setv, $volt_raw );
+ printf( v_FH "%x\t%f\t%i\n", $vdac{$dac}, $setv, $volt_raw * $conv_f );
}
+ Mimosis::mimosis_register_write( $fpga, $vdac{$dac}, $vdac_reset{$dac} );
+
+ usleep(10000);
+
# printf("\n\n");
printf( v_FH "\n\n" );
}
$curr_raw = Mimosis::adc_i2c_command( $fpga, 0x48, 0x0, 0x0, 1, 0, 1 );
# printf( "%x\t%i\t%i\n", $idac{$dac}, $seti, $curr_raw );
- printf( i_FH "%x\t%i\t%i\n", $idac{$dac}, $seti, $curr_raw );
+ printf( i_FH "%x\t%i\t%i\n", $idac{$dac}, $seti, $curr_raw * $conv_f );
}
+ Mimosis::mimosis_register_write( $fpga, $idac{$dac}, $idac_reset{$dac} );
+ usleep(10000);
+
# printf("\n\n");
printf( i_FH "\n\n" );
}
close(i_FH);
+
open( o_FH, '>', $other_file ) or die $!;
#MONVOLT_others
$volt_raw = Mimosis::adc_i2c_command( $fpga, 0x48, 0x0, 0x0, 1, 0, 1 );
# printf( "%x\t%i\t%i\n", $odac{$dac}, $setv, $volt_raw );
- printf( o_FH "%x\t%i\t%i\n", $odac{$dac}, $setv, $volt_raw );
+ printf( o_FH "%x\t%i\t%i\n", $odac{$dac}, $setv, $volt_raw * $conv_f );
}
+ Mimosis::mimosis_register_write( $fpga, $odac{$dac}, $odac_reset{$dac} );
+ usleep(10000);
+
# printf("\n\n");
printf( o_FH "\n\n" );
}