From f6c4c6f65e540aa373199fd6e6f99dea43d68ce6 Mon Sep 17 00:00:00 2001 From: Jenna Fox Date: Mon, 24 Sep 2012 10:32:09 +1000 Subject: get rid of writeLength variable, free up another 32 bytes for user program space, make the finish mechanism more sensible --- firmware/upload.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'firmware/upload.rb') diff --git a/firmware/upload.rb b/firmware/upload.rb index f49a94f..a457a42 100644 --- a/firmware/upload.rb +++ b/firmware/upload.rb @@ -31,7 +31,8 @@ class MicroBoot @info = { flash_length: flash_length, page_size: page_size, - write_sleep: 0.020, #write_sleep.to_f / 1000.0, + pages: (flash_length.to_f / page_size.to_f).ceil, + write_sleep: write_sleep.to_f / 1000.0, version: "#{@device.bcdDevice >> 8}.#{@device.bcdDevice & 0xFF}", version_numeric: @device.bcdDevice } @@ -42,7 +43,11 @@ class MicroBoot def erase! info = self.info control_transfer(function: :erase_application) - sleep(info[:write_sleep] * ((info[:flash_length] / info[:page_size]) + 1)) # sleep for as many pages as the chip has + + # sleep for long enough for application to completely erase + info[:pages].times do + sleep(info[:write_sleep]) + end end # upload a new program -- cgit v1.2.3