summaryrefslogtreecommitdiffstats
path: root/firmware/upload.rb
diff options
context:
space:
mode:
authorJenna Fox <a@creativepony.com>2012-09-24 10:32:09 +1000
committerJenna Fox <a@creativepony.com>2012-09-24 10:32:09 +1000
commitf6c4c6f65e540aa373199fd6e6f99dea43d68ce6 (patch)
treeab46dcf5600d2ced7d8ec64fe8c6287ff7341d41 /firmware/upload.rb
parent3974acefcd51203c69f5432c8d29feb5d96fa007 (diff)
downloadmicronucleus-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.rb9
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