diff options
author | Tim <cpldcpu@gmail.com> | 2015-06-06 22:40:52 +0200 |
---|---|---|
committer | Tim <cpldcpu@gmail.com> | 2015-06-06 22:40:52 +0200 |
commit | 1548e70077127c079a801c396e2d790763b23e08 (patch) | |
tree | 233cd87a07fd1fdbb91d710e9870dd9a28111d2b /firmware/usbdrv/usbdrvasm165.inc | |
parent | 21d57991d6b321e1cc3690df9addb3b26e4145aa (diff) | |
parent | f0bb13678d45c2c87fb3439aef50e92de1f0e52b (diff) | |
download | micronucleus-1548e70077127c079a801c396e2d790763b23e08.tar.gz micronucleus-1548e70077127c079a801c396e2d790763b23e08.tar.bz2 micronucleus-1548e70077127c079a801c396e2d790763b23e08.zip |
Merge pull request #43 from micronucleus/testing-V2-New
First release of V2.0 to master.
Diffstat (limited to 'firmware/usbdrv/usbdrvasm165.inc')
-rw-r--r-- | firmware/usbdrv/usbdrvasm165.inc | 43 |
1 files changed, 6 insertions, 37 deletions
diff --git a/firmware/usbdrv/usbdrvasm165.inc b/firmware/usbdrv/usbdrvasm165.inc index 450d2fd..ae91588 100644 --- a/firmware/usbdrv/usbdrvasm165.inc +++ b/firmware/usbdrv/usbdrvasm165.inc @@ -4,9 +4,7 @@ * Creation Date: 2007-04-22 * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH - * Portions Copyright: (c) 2012 Louis Beaudoin * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm165.inc 740 2009-04-13 18:23:31Z cs $ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the @@ -36,41 +34,12 @@ of CPU cycles, but even an exact number of cycles! ; Numbers in brackets are clocks counted from center of last sync bit ; when instruction starts -; the code enabled by TINY85MODE is inteded only for use with the tiny85-compatible USBaspLoader -; project. -; with TINY85MODE set, the beginning of the ISR checks for a magic word "B007" at the very bottom of the stack -; and jumps to the application's ISR if the magic word isn't present -; the max allowable interrupt latency is lower given this additional code before getting to the -; USB-specific portion of the ISR. USB_INTR_VECTOR: ;order of registers pushed: YL, SREG [sofError], r0, YH, shift, x1, x2, x3, x4, cnt - push YL ; push only what is necessary to sync with edge ASAP - in YL, SREG ; - push YL ; - -#ifdef TINY85MODE -; look for magic word "B007" at the bottom of the stack - lds YL, RAMEND - cpi YL, 0xB0 - brne cleanupAndJumpToApp - - lds YL, RAMEND-1 - cpi YL, 0x07 - breq cleanupBootloaderIntStack - -cleanupAndJumpToApp: -; magic word was not found, put registers back to where they were before this ISR ran, and jump to application ISR - pop YL - out SREG, YL - pop YL - - rjmp __vectors - TINYVECTOR_USBPLUS_OFFSET - -cleanupBootloaderIntStack: -; magic word was found, put registers - CLR YL ; [-19] ensure we meet below requirements for YL < 0x80 -#endif + push YL ;[-23] push only what is necessary to sync with edge ASAP + in YL, SREG ;[-21] + push YL ;[-20] ;---------------------------------------------------------------------------- ; Synchronize with sync pattern: ;---------------------------------------------------------------------------- @@ -80,9 +49,9 @@ cleanupBootloaderIntStack: ;YL is guarenteed to be < 0x80 because I flag is clear. When we jump to ;waitForJ, ensure that this prerequisite is met. waitForJ: - inc YL ; [-18] - sbis USBIN, USBMINUS ; [-17] - brne waitForJ ; [-16] just make sure we have ANY timeout + inc YL + sbis USBIN, USBMINUS + brne waitForJ ; just make sure we have ANY timeout waitForK: ;The following code results in a sampling window of < 1/4 bit which meets the spec. sbis USBIN, USBMINUS ;[-15] |