32-0100 64-0101 128-0110 256-0111)], 1, 1);
}
+sub do_T0ov8 { do_T0ov(8); }
sub do_T0ov16 { do_T0ov(16); }
sub do_T1ov { do_T13ov(1); }
sub do_T3ov { do_T13ov(3); }
}
sub doline () {
- my ($orgname,$mswant,$specd,$unit,$how);
+ my ($orgname,$mswant,$specd,$unit,$cy,$how,$baseinterval);
chomp;
- s/[;\#].*//;
+ s/\s*[;\#].*//;
return unless m/^\S/;
die "$_ ?" unless
- m/^(\w+)\s+(M|S|MS)\s+(\w+)\s+([0-9.]+)(s|ms|us|ns|Hz|kHz|MHz)$/;
- ($orgname,$mswant,$how,$interval,$unit) = ($1,$2,$3,$4,$5);
- $specd= $interval.$unit;
- if ($unit =~ m/M/) { $interval *= 1.e6; }
- if ($unit =~ m/k/) { $interval *= 1.e3; }
- if ($unit =~ m/m/) { $interval *= 1.e-3; }
- if ($unit =~ m/u/) { $interval *= 1.e-6; }
- if ($unit =~ m/n/) { $interval *= 1.e-9; }
- if ($unit =~ s/Hz//) { $interval = 1.0 / $interval; }
- p(";========== $orgname ($specd, $interval) ==========\n");
- provide_interval($orgname, $interval, 'us', 1.e-6);
- provide_interval($orgname, $interval, 'ms', 1.e-3);
- provide_interval($orgname, $interval, 's', 1.0);
+ m/^(\w+)\s+(M|S|MS)\s+(\w+)\s+([0-9.]+)(s|ms|us|ns|Hz|kHz|MHz)((?:[-+][0-9.]+cy)?)$/;
+ ($orgname,$mswant,$how,$baseinterval,$unit,$cy) = ($1,$2,$3,$4,$5,$6,$7);
+ $specd= $baseinterval.$unit.$cy;
+ if ($unit =~ m/M/) { $baseinterval *= 1.e6; }
+ if ($unit =~ m/k/) { $baseinterval *= 1.e3; }
+ if ($unit =~ m/m/) { $baseinterval *= 1.e-3; }
+ if ($unit =~ m/u/) { $baseinterval *= 1.e-6; }
+ if ($unit =~ m/n/) { $baseinterval *= 1.e-9; }
+ if ($unit =~ s/Hz//) { $baseinterval = 1.0 / $baseinterval; }
+ if ($cy =~ s/cy$//) { $cy *= 4.0; }
+ elsif ($cy = m//) { $cy = 0.0; }
+ else { die "$cy ?"; }
+ p(";========== $orgname ($specd: ${baseinterval}s, ${cy}cy) ==========\n");
+ provide_interval($orgname, $baseinterval, 'us', 1.e-6);
+ provide_interval($orgname, $baseinterval, 'ms', 1.e-3);
+ provide_interval($orgname, $baseinterval, 's', 1.0);
foreach $ms (qw(m s)) {
next unless $mswant =~ m/$ms/i;
$msclock= "${ms}clock";
die $msclock unless exists $defs{$msclock};
$msclock= $defs{$msclock};
+ $interval= $baseinterval + $cy / ($msclock * 1000.0);
+ p(";---------- $orgname, ${interval}s, ${msclock}kHz ----------\n");
$name = $orgname.'_'.($ms eq 'm' ? 'master' : 'slave');
&{ "do_$how" };
}