EmbeddedRelated.com
Forums
Memfault State of IoT Report

Bit-banged USB?!?!

Started by Tim Wescott February 15, 2012
Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> writes:

> On 2012-02-15, Tim Wescott <tim@seemywebsite.com> wrote: >> On Wed, 15 Feb 2012 22:18:01 -0600, Les Cargill wrote: >>> That's from PD0(RXD) and PD2(INT0)? Are those configured then as just >>> PIO (emphasis O)? >>> >>> Pretty crazy, but keyboard events are relatively infrequent - hundreds >>> per second at most. >> >> I have absolutely no clue how it's configured -- the source code isn't >> available. I'm still trying to get past bit-banged USB. >> > > :-) > > Well you never know what crazy stuff you can justify when you have the > freedom to play with this stuff on your own time (and are funding it out > of your own pocket) instead of having to charge per hour of your time. :-) > > Never underestimate the ingenuity of a hobbyist looking to save a few > pounds/dollars by building their own device instead of using a > preassembled widget. > > The cost versus time tradeoffs for someone like myself are completely > different from those experienced by a embedded person like yourself > who is doing this for a living. > > BTW, I'm amused that you are astonished by this and it did make me > wonder what other things people building things out of their own pocket > can justify which would astonish a person doing this for a living. :-)
Yes there are the TCP/IP on a 8051 type projects too. Don't think anyone bitbanged that though! -- John Devereux
Tim Wescott <tim@seemywebsite.please> wrote:

> Has anyone ever heard of doing this? Tried it? Succeeded?
The USBtinyISP kit I use for programming AVRs uses bit-banged USB. Haven't had issues with it so far. <http://ladyada.net/make/usbtinyisp/index.html> -a
Tim Wescott wrote:
> On Wed, 15 Feb 2012 22:18:01 -0600, Les Cargill wrote: > >> Tim Wescott wrote: >>> I came across this schematic (well, my son dragged it into my >>> attention): >>> http://www.otd.kr/data/file/ > pj_LIMKB/1964092542_24157b90_Aikon28LIMKB29- >>> SMD_Schematic.PNG >>> >>> This is for a universal keyboard controller. The thing that is really >>> catching my eye, though, is that the thing appears to be set up to bit- >>> bang the USB. >>> >>> Has anyone ever heard of doing this? Tried it? Succeeded? USB slow >>> is 1.5MHz, so there's a remote possibility that one might possibly have >>> enough time to do something if the processor isn't doing much else (the >>> processor in the above schematic is clocking at 12MHz), but I'm pretty >>> astonished that they're even managing that. >>> >>> >> >> That's from PD0(RXD) and PD2(INT0)? Are those configured then as just >> PIO (emphasis O)? >> >> Pretty crazy, but keyboard events are relatively infrequent - hundreds >> per second at most. > > I have absolutely no clue how it's configured -- the source code isn't > available. I'm still trying to get past bit-banged USB. >
I seem to be beyond surprise any more. What's the jitter spec for USB, anyway? -- Les Cargill
Tim Wescott wrote:
> On Wed, 15 Feb 2012 22:18:01 -0600, Les Cargill wrote: > >> Tim Wescott wrote: >>> I came across this schematic (well, my son dragged it into my >>> attention): >>> http://www.otd.kr/data/file/ > pj_LIMKB/1964092542_24157b90_Aikon28LIMKB29- >>> SMD_Schematic.PNG >>> >>> This is for a universal keyboard controller. The thing that is really >>> catching my eye, though, is that the thing appears to be set up to bit- >>> bang the USB. >>> >>> Has anyone ever heard of doing this? Tried it? Succeeded? USB slow >>> is 1.5MHz, so there's a remote possibility that one might possibly have >>> enough time to do something if the processor isn't doing much else (the >>> processor in the above schematic is clocking at 12MHz), but I'm pretty >>> astonished that they're even managing that. >>> >>> >> >> That's from PD0(RXD) and PD2(INT0)? Are those configured then as just >> PIO (emphasis O)? >> >> Pretty crazy, but keyboard events are relatively infrequent - hundreds >> per second at most. > > I have absolutely no clue how it's configured -- the source code isn't > available. I'm still trying to get past bit-banged USB. >
Also, wasn't one of the old-school UARTs (the 8530/82530 ) just ... like... a Z80 with special firmware & some peripherals? They'd do T1 rate, if not more... I only used 'em for mid-speed Iloop and RS232/422 before the 68360 & descendents came along... I know the 16550 predecessors were not. -- Les Cargill
On Thu, 16 Feb 2012 12:42:38 -0600, Les Cargill wrote:

> Tim Wescott wrote: >> On Wed, 15 Feb 2012 22:18:01 -0600, Les Cargill wrote: >> >>> Tim Wescott wrote: >>>> I came across this schematic (well, my son dragged it into my >>>> attention): >>>> http://www.otd.kr/data/file/ >> pj_LIMKB/1964092542_24157b90_Aikon28LIMKB29- >>>> SMD_Schematic.PNG >>>> >>>> This is for a universal keyboard controller. The thing that is >>>> really catching my eye, though, is that the thing appears to be set >>>> up to bit- bang the USB. >>>> >>>> Has anyone ever heard of doing this? Tried it? Succeeded? USB slow >>>> is 1.5MHz, so there's a remote possibility that one might possibly >>>> have enough time to do something if the processor isn't doing much >>>> else (the processor in the above schematic is clocking at 12MHz), but >>>> I'm pretty astonished that they're even managing that. >>>> >>>> >>>> >>> That's from PD0(RXD) and PD2(INT0)? Are those configured then as just >>> PIO (emphasis O)? >>> >>> Pretty crazy, but keyboard events are relatively infrequent - hundreds >>> per second at most. >> >> I have absolutely no clue how it's configured -- the source code isn't >> available. I'm still trying to get past bit-banged USB. >> >> > > I seem to be beyond surprise any more. What's the jitter spec for USB, > anyway?
I don't know. I've pulled out my USB book and I'm reading it. -- My liberal friends think I'm a conservative kook. My conservative friends think I'm a liberal kook. Why am I not happy that they have found common ground? Tim Wescott, Communications, Control, Circuits & Software http://www.wescottdesign.com
On Thu, 16 Feb 2012 12:43:45 +0000, Simon Clubley wrote:

> On 2012-02-15, Tim Wescott <tim@seemywebsite.com> wrote: >> On Wed, 15 Feb 2012 22:18:01 -0600, Les Cargill wrote: >>> That's from PD0(RXD) and PD2(INT0)? Are those configured then as just >>> PIO (emphasis O)? >>> >>> Pretty crazy, but keyboard events are relatively infrequent - hundreds >>> per second at most. >> >> I have absolutely no clue how it's configured -- the source code isn't >> available. I'm still trying to get past bit-banged USB. >> >> > :-) > > Well you never know what crazy stuff you can justify when you have the > freedom to play with this stuff on your own time (and are funding it out > of your own pocket) instead of having to charge per hour of your time. > :-) > > Never underestimate the ingenuity of a hobbyist looking to save a few > pounds/dollars by building their own device instead of using a > preassembled widget. > > The cost versus time tradeoffs for someone like myself are completely > different from those experienced by a embedded person like yourself who > is doing this for a living. > > BTW, I'm amused that you are astonished by this and it did make me > wonder what other things people building things out of their own pocket > can justify which would astonish a person doing this for a living. :-)
It'd make sense in a system that ships in high volume, too -- if production is going to be 100/year and you save a penny on the BOM, then every year you've made a buck. If production is 10000 a month and you save a penny on the BOM, then every year you've made $1200 -- so the amount of engineering time you should spend to save that penny varies depending on who you're working for, and what they're doing. -- My liberal friends think I'm a conservative kook. My conservative friends think I'm a liberal kook. Why am I not happy that they have found common ground? Tim Wescott, Communications, Control, Circuits & Software http://www.wescottdesign.com
Tim Wescott schrieb:

> I came across this schematic (well, my son dragged it into my attention): > http://www.otd.kr/data/file/pj_LIMKB/1964092542_24157b90_Aikon28LIMKB29- > SMD_Schematic.PNG > > This is for a universal keyboard controller. The thing that is really > catching my eye, though, is that the thing appears to be set up to bit- > bang the USB. > > Has anyone ever heard of doing this? Tried it? Succeeded? USB slow is > 1.5MHz, so there's a remote possibility that one might possibly have > enough time to do something if the processor isn't doing much else (the > processor in the above schematic is clocking at 12MHz), but I'm pretty > astonished that they're even managing that.
Just one more: <http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20%28AVR%29_eng.htm> Tilmann
>>>>> Tim Wescott <tim@seemywebsite.please> writes:
> I came across this schematic (well, my son dragged it into my > attention): > http://www.otd.kr/data/file/pj_LIMKB/1964092542_24157b90_Aikon28LIMKB29- > SMD_Schematic.PNG > This is for a universal keyboard controller. The thing that is > really catching my eye, though, is that the thing appears to be set > up to bit- bang the USB. I'm somewhat surprised by the fact that V-USB [1] wasn't explicitly mentioned in this thread. [1] http://obdev.at/products/vusb/ > Has anyone ever heard of doing this? Tried it? Succeeded? Once, I've built a simplistic USB device based on ATmega8 (or a similar MCU) and V-USB, which was talking USB-MIDI to the host. As V-USB had no USB-MIDI-specific parts back then (and I wonder if they have it nowadays) I had to check the "reference", for which I've used the source code of the Linux kernel. > USB slow is 1.5MHz, so there's a remote possibility that one might > possibly have enough time to do something if the processor isn't > doing much else (the processor in the above schematic is clocking at > 12MHz), but I'm pretty astonished that they're even managing that. -- FSF associate member #7257
On 16 Feb., 04:34, Tim Wescott <t...@seemywebsite.please> wrote:
> I came across this schematic (well, my son dragged it into my attention):=
http://www.otd.kr/data/file/pj_LIMKB/1964092542_24157b90_Aikon28LIMKB29-
> SMD_Schematic.PNG > > This is for a universal keyboard controller. =A0The thing that is really > catching my eye, though, is that the thing appears to be set up to bit- > bang the USB. > > Has anyone ever heard of doing this? =A0Tried it? =A0Succeeded? =A0USB sl=
ow is
> 1.5MHz, so there's a remote possibility that one might possibly have > enough time to do something if the processor isn't doing much else (the > processor in the above schematic is clocking at 12MHz), but I'm pretty > astonished that they're even managing that. > > -- > Tim Wescott > Control system and signal processing consultingwww.wescottdesign.com
there has been slow speed bit banged usb for a long time, think this is one of the more "famous" ones: http://www.obdev.at/products/vusb/index.html it is for AVR and I think it runs at most frequencies from 8MHz up, -Lasse
Tim Wescott <tim@seemywebsite.com> writes:
>I have absolutely no clue how it's configured -- the source code isn't >available. I'm still trying to get past bit-banged USB.
In addition to OBdev's VUSB, there's an open-source project called USBtiny --- very similar to VUSB: runs on AVRs, bit-bangs low-speed USB. http://dicks.home.xs4all.nl/avr/usbtiny/ "The software is written for an AVR clocked at 12 MHz. At this frequency, each bit on the USB bus takes 8 clock cycles, and with a lot of trickery, it is possible to decode and encode the USB waveforms by software. The USB driver needs approximately 1250 to 1350 bytes of flash space"[....]

Memfault State of IoT Report