diff options
author | Jenna Fox <a@creativepony.com> | 2012-09-24 10:32:09 +1000 |
---|---|---|
committer | Jenna Fox <a@creativepony.com> | 2012-09-24 10:32:09 +1000 |
commit | f6c4c6f65e540aa373199fd6e6f99dea43d68ce6 (patch) | |
tree | ab46dcf5600d2ced7d8ec64fe8c6287ff7341d41 /firmware/upload.rb | |
parent | 3974acefcd51203c69f5432c8d29feb5d96fa007 (diff) | |
download | micronucleus-f6c4c6f65e540aa373199fd6e6f99dea43d68ce6.tar.gz micronucleus-f6c4c6f65e540aa373199fd6e6f99dea43d68ce6.tar.bz2 micronucleus-f6c4c6f65e540aa373199fd6e6f99dea43d68ce6.zip |
get rid of writeLength variable, free up another 32 bytes for user program space, make the finish mechanism more sensible
Diffstat (limited to 'firmware/upload.rb')
-rw-r--r-- | firmware/upload.rb | 9 |
1 files changed, 7 insertions, 2 deletions
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 |