Search found 102 matches
- Tue Nov 26, 2013 9:15 am
- Forum: V-USB
- Topic: Using generic signal diodes instead of zeners
- Replies: 3
- Views: 6649
Using generic signal diodes instead of zeners
Using generic signal diodes instead of zeners I work on a tight budget and don't have 3.6V zener diodes (low-current or otherwise) and wanted to build the hardware side of V-USB myself (so far I've only programmed with V-USB on USBASP programmers by reprogramming them with my own programs). I decide...
- Mon Nov 25, 2013 11:20 pm
- Forum: V-USB
- Topic: How Do You Check CRC16 From Application?
- Replies: 2
- Views: 5465
Re: How Do You Check CRC16 From Application?
Or, if wasting a few cycles isn't a problem (and you know that len < 256-2), uchar usbFunctionWrite( uchar* data, uchar len ) { if ( usbCrc16( data, len + 2 ) != 0x4FFE ) { // CRC error } ... } This relies on the property that the checksum of some data with its usb CRC appended is 0x4FFE, which is j...
- Mon Nov 25, 2013 8:15 pm
- Forum: V-USB
- Topic: Entirely polled V-USB? [yes, it works!]
- Replies: 18
- Views: 20378
Re: Entirely polled V-USB? [yes, it works!]
Yes, you're way off This doesn't alter USB behavior, rather simply allows one to avoid using hardware interrupts on the AVR side. The main use is in a bootloader on an AVR without a separate vector table, where you want to preserve the user program's vectors and not hijack the INT0 handler (or rathe...
- Mon Nov 25, 2013 4:44 am
- Forum: V-USB
- Topic: Entirely polled V-USB? [yes, it works!]
- Replies: 18
- Views: 20378
Re: Entirely polled V-USB?
I solved the mystery, and now feel much more confident about polling. I now see it as a legitimate alternative to an interrupt where you know the timing of your code well and aren't doing much. It might help for really constrained systems. Here is what I found with a scope. First, I modified the cod...
- Sun Nov 24, 2013 12:06 am
- Forum: V-USB
- Topic: Entirely polled V-USB? [yes, it works!]
- Replies: 18
- Views: 20378
Re: Entirely polled V-USB?
OK, after thinking it was working, then that I was merely running the bootloader and being fooled, I'm sure it's working now. The critical change was a check for the interrupt in the small loop in usbPoll(). It's odd because that loop only checks a register, so the loop should only take a few micros...
- Sat Nov 23, 2013 9:45 pm
- Forum: V-USB
- Topic: Entirely polled V-USB? [yes, it works!]
- Replies: 18
- Views: 20378
Re: Entirely polled V-USB?
Yeah, I was going to just poll the port when I realized that the interrupt flag tells us whenever the interesting conditions occurred without having to dig around to see which edge it wants the interrupt on, etc. (and as you noted, past-tense as well; will have to try that as a diagnostic). I am als...
- Sat Nov 23, 2013 8:54 pm
- Forum: V-USB
- Topic: Entirely polled V-USB? [yes, it works!]
- Replies: 18
- Views: 20378
Re: Entirely polled V-USB?
The basic approach (with interrupts always disabled of course, and the interrupt handler modified to end in RET instead of RETI): for ( ;; ) { USB_INTR_PENDING = 1<<USB_INTR_PENDING_BIT; while ( !(USB_INTR_PENDING & (1<<USB_INTR_PENDING_BIT)) ) { } USB_INTR_PENDING = 1<<USB_INTR_PENDING_BIT; INT...
- Tue Nov 19, 2013 9:49 pm
- Forum: V-USB
- Topic: Entirely polled V-USB? [yes, it works!]
- Replies: 18
- Views: 20378
Entirely polled V-USB? [yes, it works!]
Any reasons an entirely polled V-USB wouldn't work? I gave it a try but got host errors (polling the interrupt flag between usbPoll() calls). Fundamentally, you've got the loop that calls usbPoll(), and periodic interrupts to run code that handles the timing-critical I/O. The I/O interrupts come at ...
- Sat Nov 16, 2013 4:27 am
- Forum: V-USB
- Topic: USBaspLoader 18-byte code reduction
- Replies: 1
- Views: 4298
USBaspLoader 18-byte code reduction
I shaved 18 bytes off USBaspLoader without removing functionality (at least for avr-gcc 4.5.3). This is small but given that out of the box it's around 2028 bytes, very close to the 2048 limit, this might be critical to someone. One change involved eliminating the wdt_reset() call, which seems fine ...
- Thu Nov 14, 2013 10:34 pm
- Forum: V-USB
- Topic: schar and uchar macros in usbdrv.h
- Replies: 1
- Views: 5693
schar and uchar macros in usbdrv.h
Perhaps a minor issue, but I'd rather mention it than keep quiet. I am thrilled with V-USB so small things like this stand out more. I am also aware that there's a feedback channel, but I'd rather discuss this with other users rather than merely have it be a request. The schar and uchar macros can c...
- Thu Nov 14, 2013 10:24 pm
- Forum: V-USB
- Topic: Char signedness bug in usbGenericSetInterrupt() [fixed]
- Replies: 3
- Views: 7382
Re: V-USB assumes that char is signed?!?
OK, so it does not assume that char is signed, and what I found today was a bug and happened to be fixed two days ago. Hah.
- Thu Nov 14, 2013 10:03 pm
- Forum: V-USB
- Topic: Char signedness bug in usbGenericSetInterrupt() [fixed]
- Replies: 3
- Views: 7382
Char signedness bug in usbGenericSetInterrupt() [fixed]
static void usbGenericSetInterrupt(uchar *data, uchar len, usbTxStatus_t *txStatus) { uchar *p; char i; [...] i = len; do{ /* if len == 0, we still copy 1 byte, but that's no problem */ *p++ = *data++; }while(--i > 0); /* loop control at the end is 2 bytes shorter than at beginning */ [...] It sure...