diff options
author | Tim <cpldcpu@gmail.com> | 2014-07-15 22:52:39 +0200 |
---|---|---|
committer | Tim <cpldcpu@gmail.com> | 2014-07-15 22:52:39 +0200 |
commit | df94369d5291f8842d36938f7b2bb2c926cf0740 (patch) | |
tree | ff31e7c3a0fc1f26ccc1a7444b4fc45370111353 /firmware | |
parent | a1e06e102573dbb2bdb9db3c0acd774a7f9c6346 (diff) | |
parent | 3c997b042f0480e15818fcd55802dba6277f383a (diff) | |
download | micronucleus-df94369d5291f8842d36938f7b2bb2c926cf0740.tar.gz micronucleus-df94369d5291f8842d36938f7b2bb2c926cf0740.tar.bz2 micronucleus-df94369d5291f8842d36938f7b2bb2c926cf0740.zip |
Merge pull request #53 from gblargg/testing-V2-New
Fix osccalASM.S to work when connected to hub
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/osccalASM.S | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/firmware/osccalASM.S b/firmware/osccalASM.S index e8e174e..fa26dc4 100644 --- a/firmware/osccalASM.S +++ b/firmware/osccalASM.S @@ -113,6 +113,8 @@ usbCOloop: #endif nop +usbCOLoopNoCal: + ; Delay values = F_CPU * 999e-6 / 5 + 0.5 #if (F_CPU == 16500000) @@ -145,6 +147,22 @@ usbCOWaitLoop: sbic USBIN, USBMINUS ;[2] rjmp usbCOWaitLoop ;[3] + sbis USBIN, USBPLUS ; ignore frame if data is present + rjmp usbCOnotdata + +usbCOWaitNoData: + in cnt16H, USBIN ; wait for SE0 state (both lines low) + andi cnt16H, (1<<USBPLUS)|(1<<USBMINUS) + brne usbCOWaitNoData + in cnt16H, USBIN ; be sure SE0 state wasn't a glitch + andi cnt16H, (1<<USBPLUS)|(1<<USBMINUS) + brne usbCOWaitNoData +usbCOWaitNoData2: + sbis USBIN, USBMINUS ; wait for D- go to high + rjmp usbCOWaitNoData2 + rjmp usbCOLoopNoCal + +usbCOnotdata: sbrs cnt16H, 7 ;delay overflow? rjmp usbCOclocktoolow sub try, stp |