[time-nuts] Frequency counter recommendation

Elio Corbolante eliocor at gmail.com
Sun Dec 19 22:03:47 UTC 2010


>
> From: Chris Albertson <albertson.chris at gmail.com>
> Yes.  It can if done wrong.
>
> The "correct" way to use USB is to make your USB device "class
> compliant" for some class.  Then most OSes (and with recent releases
> even MS Windows) will have built-in drivers for each class of USB
> device.  Never buy or design a USB device that requires the user to
> instal device drivers.
>
> The worlds has enough poorly designed USB devices that only have
> drivers for old versions of Windows.  We don't need more of those
>

You are right: if correctly developed an USB device can not require any
driver at all to work.
I'm an HW/FW developer and I have done it for several years.
Luckily today almost any OS (Windows/OS X/Linux) supports the most part of
the typical USB classes (like Mass Storage/network/CDC(serial)/...)



> Still. If I were designing a counter I'd just have to talk to a local
> bus using SPI, "2 wire", I2C or whatever and then have a secon module
> that converts "whatever" to USB, rs232, or just a pannel with nixi
> tubes and toggle switches
>

If my project is not money constrained, I prefer to split my device in 2
parts:
- the hardcore one which require to be fast and precise (maybe using an
FPGA/Pictic/...)
- the "user interface" which manage the display/communications/user
interaction/...

On the first one I have not so a great experience (I'm not a so great
time-nut!), on the second part maybe I have some more.
Just as an example, selecting an ARM Cortex M3 core (price: about
10-15USD/piece), one can very easily have the following interfaces in one
single chip (512kB Flash / 64kB RAM)

1) 1xUSB port and/or 1xUSB Host/OTG
2) up to 6 serial ports (RS232/iRDA)
3) Ethernet interface
4) SD card interface
5) CAN interface
6) several SPI and I2C interfaces
7) integrated 12bit A/D and D/A
8) good DMA implementation
9) ...

note to previous points:
1) on most of the ARM devices, there can be 1 o more USB interfaces: they
can be set as "device" or "host/OTG", so they can support even USB memory
stick
1a) if your USB device is CDC compliant, it can be seen as a fast serial
interface by almost any OS: no need of cumbersome USB/serial adapters...
2) there are at least 4/6 serial ports in every chip: I think they can be
enough for the typical usage...
3) You can put your SMALL web server on your interface
6) in general they have 2 or 3 SPI interfaces and 1 or 2 I2C interfaces.
Even I2S, so you can drive your HiRes DAC
8) almost any peripheral (even standard I/O) can be driven by DMA, thus
offloading the CPU from the burden of moving data.

- - - - - -

Just as an example, in my spare time I'm trying to port the great Lady
Heather to the "mini STM32":
<
http://www.micro4you.com/store/Mini-STM32-STM32F103-TFT-LCD-Board/prod_129.html>

so my thunderbolts will not be more depending on an always turned-on PC.
The firmware will poll the Thunderbolt(s) and will store the log on a SD
card.
The color touch screen display (320x240) will permit me to show the most
interesting data and interact with them without using any keyboard/push
button.
The price of this device was not very steep: I bought it for about 20 Euros
(on TaoBao).
It only requires a +5V power supply, but I have already the thunderbolt
power supply, so...
There are some similar HW which have more I/Os and capabilities (touch
screen/network/...) which cost not much more and can do LOTS of of things
(just to start I will suggest you something like the LPCXpresso LPC1768
board).
The development tools can be get for FREE (GCC) and there are LOTS of ready
made libraries (from the chip makers) which will ease the FW development.

.    best regards
_      Elio.


More information about the time-nuts mailing list