]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
fixed SPI when lock bit is stuck
authorJan Michel <j.michel@gsi.de>
Fri, 11 Jul 2014 13:23:04 +0000 (15:23 +0200)
committerJan Michel <j.michel@gsi.de>
Fri, 11 Jul 2014 14:24:14 +0000 (16:24 +0200)
web/htdocs/commands/getpadiwa.pl

index d4b7a5d30edb5017cff85ade46a8811b01fd9fdd..b704c6050f8c408e618755d706ec22c82cd67a9c 100755 (executable)
@@ -36,9 +36,22 @@ $board = hex($board);
 sub sendcmd {
   my ($cmd,$chain) = @_;
   my $c = [$cmd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1<<$chain,0x10001];
-  do{
+  my $errcnt = 0;
+  while(1){
     trb_register_write_mem($board,0xd400,0,$c,scalar @{$c});
-    } while(trb_strerror() ne "No Error");
+    if (trb_strerror() ne "No Error") {
+      sleep 1;
+      if($errcnt >= 12) {
+        die "SPI still blocked\n";
+        }
+      elsif($errcnt++ >= 10) {
+        trb_register_read($board,0xd412);
+        }
+      }
+    else {
+      last;
+      }
+    } 
   return trb_register_read($board,0xd412);
   }