$o = $cmd << 20;
$o |= $chan << 16;
$o |= (($val*1.+$offset)/$reference*65536.) & 0xFFFF;
-
+
my @values;
+ $values[16] = $chain;
+
+ if($dac == 16) {
+ foreach my $i (0..15) {
+ $values[$i] = 0x00F00000;
+ }
+ $values[17] = 16;
+ trb_register_write($board,0xd417, $chain | ($chain << 16));
+ trb_register_write_mem($board,0xd400,0,\@values,18) or die "trb_register_write_mem: ", trb_strerror();
+ usleep(5*$chainlen);
+ }
+
+
foreach my $i (0..15) {
$values[$i] = 0x00F00000;
}
- $values[16] = $chain;
$values[17] = $chainlen;
- $values[$chainlen-1-$dac] = $o;
+ $values[$chainlen-1-($dac & 0xf)] = $o;
# print Dumper @values;
# print "\n";
trb_register_write_mem($board,0xd400,0,\@values,18) or die "trb_register_write_mem: ", trb_strerror();
usleep(5*$chainlen);
+
+ if($dac == 16) {
+ trb_register_write($board,0xd417,0);
+ }
}
}