private void buttonReadSignature_Click(object sender, EventArgs e) { listBoxProgramMessages.Items.Clear(); textBoxSignature.Text = "Signature not read"; USB_ATTinyTPI usb = createInterface(); List <string> msgs = new List <string>(); bool connected = usb.connect(msgs); postMessages(msgs); if (!connected) { postMessage("Target: connection failed"); return; } postMessage("Target: connected"); usb.NVM_command(USB_ATTinyTPI.NVMCommand.NO_OPERATION); usb.NVM_waitbusy(); byte[] devid = usb.CPU_deviceidbits_read(); string sigbytes = string.Format("0x{0:X02} 0x{1:X02} 0x{2:X02}", devid[0], devid[1], devid[2]); textBoxSignature.Text = sigbytes; postMessage("Signature is " + sigbytes); USB_ATTinyTPI.Processor proc = usb.CPU_identify(); postMessage("CPU is " + proc.ToString()); postMessage("Deselecting device"); usb.S_HIGH(); usb.flush(); }
public static void Main() { USB_ATTinyTPI usb = new USB_ATTinyTPI(); if (!usb.connect()) { return; } USB_ATTinyTPI.Processor proc = usb.CPU_identify(); usb.NVM_command(USB_ATTinyTPI.NVMCommand.NO_OPERATION); usb.NVM_waitbusy(); byte[] fuses = usb.CPU_configurationbits_read(); byte[] locks = usb.CPU_nvmlockbits_read(); byte[] devid = usb.CPU_deviceidbits_read(); OpenFileDialog fd = new OpenFileDialog(); fd.ShowDialog(); string filename = fd.FileName;// "ATTiny10_helloworld.hex"; if (filename == "") { return; } IntelHEXfile hexfile = new IntelHEXfile(filename); byte[] hexdata = hexfile.GetData(); long tick1 = System.DateTime.Now.Ticks; usb.NVM_SECTION_ERASE(usb.CPU_flashaddress()); usb.NVM_WORD_WRITE(usb.CPU_flashaddress(), hexdata); double tock1 = (System.DateTime.Now.Ticks - tick1) / 10000000.0; return; long tick2 = System.DateTime.Now.Ticks; byte[] flashprogrammemory = usb.CPU_readbytes(0x4000, hexdata.Length);//usb.CPU_flashsize()); // 64 bytes : 26.5s // 40 bytes : 20.0s // 32 bytes : 18.0s // 24 bytes : 16.1s // 16 bytes : 13.9s // 9 bytes : 13.9s double tock2 = (System.DateTime.Now.Ticks - tick2) / 10000000.0; bool flashedok = true; for (int i = 0; i < hexdata.Length; i++) { if (flashprogrammemory[i] != hexdata[i]) { flashedok = false; break; } } usb.S_HIGH(); usb.flush(); }