chiark / gitweb /
computing clocks in perl seems to work
authorian <ian>
Mon, 19 Dec 2005 12:09:09 +0000 (12:09 +0000)
committerian <ian>
Mon, 19 Dec 2005 12:09:09 +0000 (12:09 +0000)
detpic/make-clocks
pic.make

index b8708b144ab1b170684c4f306b587cbf27aa0056..40ee2e21f8880698502fe815d0ab50f1e0be5904 100755 (executable)
@@ -1,11 +1,17 @@
 #!/usr/bin/perl -w
+# usage   ../make-clocks [<input-file> ...] -Dmclock=khz -Dsclock=khz
 
 use strict qw(vars);
 use POSIX;
 
+sub p ($) { print $_[0] or die $!; }
+
 our (%defs);
+
+p("; autogenerated - do not edit\n");
+p("; $0 @ARGV\n");
 while ($ARGV[$#ARGV] =~ m/^\-/) {
-    $_ = pop @argv;
+    $_ = pop @ARGV;
     last if m/^\-\-$/;
     die unless m/^\-D(\w+)\=(\w+)$/;
     $defs{$1}= $2;
@@ -21,8 +27,6 @@ our ($name,$ms,$interval,$msclock);
 #                 ie  cycles = interval * foscscale * msclock / prescale
 #                 or  msclock = cycles * prescale / (foscscale * interval)
 
-sub p ($) { print $_[0] or die $!; }
-
 sub scaleable ($$$$$) {
     my ($width, $foscscale, $scalebitnums, $scales, $deadcycles) = @_;
     my ($maxcycles, $scalespec, $scalebits);
@@ -84,13 +88,14 @@ sub do_T1ov { do_T13ov(1); }
 sub do_T3ov { do_T13ov(3); }
 
 sub doline () {
-    my ($orgname,$mswant,$unit,$how);
+    my ($orgname,$mswant,$specd,$unit,$how);
     chomp;
     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; }
@@ -103,7 +108,7 @@ sub doline () {
        die $msclock unless exists $defs{$msclock};
        $msclock= $defs{$msclock};
        $name = $orgname.'_'.($ms eq 'm' ? 'master' : 'slave');
-       p(";---------- $name ----------\n");
+       p(";---------- $name ($specd, $interval) ----------\n");
        &{ "do_$how" };
     }
 }
index e407dfad9b47260ac2808464792ab7f7be1d241b..8cd8f77199868efdfe41659f207395bd0948bc95 100644 (file)
--- a/pic.make
+++ b/pic.make
@@ -15,7 +15,8 @@
 #   perpicNUMBER.hex                   idlocsNUMBER.o  config.o
 
 #ASFLAGS=      -Dmclock=20000 -Dsclock=20000
-ASFLAGS=       -Dmclock=20000 -Dsclock=5000
+CLOCKS=                -Dmclock=20000 -Dsclock=5000
+ASFLAGS=       $(CLOCKS)
 
 HEXMERGER=     $(CEBPIC)merge-hex
 MERGEHEX=      ./$^ $o