GoodFET.CCstop() is now GoodFET.stop()
[goodfet] / client / goodfet.avr
index 65426db..8692dcf 100755 (executable)
@@ -10,7 +10,7 @@ if(len(sys.argv)==1):
     print "Usage: %s verb [objects]\n" % sys.argv[0];
     print "%s test" % sys.argv[0];
     print "%s info" % sys.argv[0];
-    print "%s lockbits" % sys.argv[0];
+    print "%s lockbits [value]" % sys.argv[0];
     #print "%s dump $foo.hex [0x$start 0x$stop]" % sys.argv[0];
     print "%s erase" % sys.argv[0];
     #print "%s flash $foo.hex [0x$start 0x$stop]" % sys.argv[0];
@@ -27,12 +27,28 @@ client.start();
 
 if(sys.argv[1]=="glitch"):
     print "Identifies as %s" % client.identstr();
+    client.glitchVoltages(0x880, 0xfff);
     for i in range(1,20):
         client.start();
         print "Identifies as %s, fused 0x%02x" % (
             client.identstr(),
             client.lockbits());
-
+if(sys.argv[1]=="glitchgraph"):
+    print "Identifies as %s" % client.identstr();
+    for voltage in range(0x860,0x890,5):
+        str="";
+        count=0;
+        #five minutes for 1,80
+        #thirty minutes for 1,500
+        
+        for i in range(1,40):
+            client.glitchVoltages(voltage, voltage);
+            client.start();
+            if(client.lockbits()==0xFF):
+                str="%s." % str;
+                count+=1;
+        print "%04x %s" % (voltage,str);
+        #print "%f, %i" % (voltage*(3.3/4096.0),count);
 if(sys.argv[1]=="info"):
     print "Identifies as %s" % client.identstr();
 if(sys.argv[1]=="erase"):
@@ -40,6 +56,8 @@ if(sys.argv[1]=="erase"):
     client.erase();
 if(sys.argv[1]=="lockbits"):
     print "Lockbits are 0x%02x" % client.lockbits();
+    if(len(sys.argv)>2):
+        print "Lockbits set 0x%02x" %  client.setlockbits(int(sys.argv[2],16));
 #if(sys.argv[1]=="lock"):
 #if(sys.argv[1]=="unlock"):