|
Scenario:
- We have a third-party data acquisition device which communicates over USB utilizing USB Bulk Endpoints.
- We will be using the device to generate approximately 34Kbytes of data / sample at about 30Hz sampling rate (total about 1MB/sec).
- We can trigger a sample acquisition and the device can hold the 34K of data until it is "sent" via the USB.
- The vendor states the device is "streaming the data out of a small hardware buffer (512 bytes) on the device directly to the USB to achieve the highest performance".
- The device will refuse to acquire the next sample unless the previous 34K has all been sent.
- Missing a data acquisition is an unacceptable condition.
Potential issue:
As many of us have experienced, Windows sometimes just seems to “zone out” (daydreaming?) and this might cause the USB driver to go too long between requests for data.
The total amount of data bandwidth is not pushing the bounds of USB capabilities, but the timing is (in conjunction with the small device USB buffer).
Questions:
- What are recommended strategies for addressing the issue above?
- On a modern multi-core platform, is it a realistic concern?
- Can USB servicing be made a high(er) priority activity for the OS?
- Would Windows Embedded Compact be a better "host" OS?
* At least for the data collection?
* How different is development for Windows Embedded Compact?
Thanks.
A positive attitude may not solve every problem, but it will annoy enough people to be worth the effort.
|
|
|
|
|
The USB servicing by Windows is running with a higher priority but not your application.
At first you should check if the driver for your USB device supports increasing the size of his internal receive buffer. This may help if the default size is smaller than your 34 KB.
A common solution would be using a worker thread running with a higher priority to receive the date and store them in a ring buffer of sufficient size. The thread must be of course event driven (new data available). When all sample data has been received by the thread it can trigger the next sampling and send a user defined message to your GUI thread indicating that new data are available.
Tasks delaying your communication are mainly hardware related actions like disk and network transfers. When you have implemented the worker thread you can check for missing acquisitions by starting such actions (e.g. copying files from a network share to a local disk or USB drive). If necessary, increase the priority of the worker thread. But note that this is a rather simple and system dependant method.
I have done this for a serial communication using a serial to USB converter where status line events must be handled before the next event occurs.
This does not answer all your questions but I hope it will be useful.
|
|
|
|
|
Hello! I need you guys help to develop human monitoring device which can show specific location of the object either the device is on or off. But the news behind this is that i don't know where to start. Please is there anyone who can put me through out there? In C# language
|
|
|
|
|
The first thing you need to do is study the documentation for the device.
|
|
|
|
|
Apart from the first thing being that "you know the C# language, and the specification about the device architechture", you need to know that there is no such device yet created (or in my knowledge) that can run when it is "off"; as you've mentioned.
Then, you can go and Google for any such device, that you can find helpfull, in executing your set of instructions, if you're not going to purchase a server. There are multiple choices for you to select from, and you will find yourself easy to find a lot of new devices in the market that let you kick-start your projects by coding them out. Raspberry Pi is one of them, and you can write application for it, to make it work as you want it to.
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
I have a motherboard monitoring program on my PC. Along with temperatures, it tells the measured voltages coming out of the power supply.
Here's the question: For the -12v rail, it's hovering around -7 volts and goes as low as -3. For the -5v rail, it's reading -4 volts. Should I consider replacing the power supply? The machine seems to be running fine otherwise.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
There are different types of sensor chips used on motherboards. It seems that your monitoring program detects a wrong type because your system is operating without problems.
You may try another program or better measure the voltage using a multimeter.
|
|
|
|
|
Those numbers are not correct. I'd verify the values on the 23-pin connector with a good multimeter before trusting that code.
The correct voltages for an ATX 2.2 Power Supply are -5, -12, +3.3, +5 and +12, all with a tolerance of 5%.
You can get the pinouts for the connectors just by Googling for "ATX Power Supply 12V pinout". Make sure you match the ATX version on the power supply label with the document you're looking at!
|
|
|
|
|
Thanks Dave, I think that's what I will do. I just have to find the motivation to get in there and unplug the motherboard connector.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
No no no. Do it while it's running. That makes the measurement at the time there is load on the power supply when the voltages will fluctuate the most. Also, if you pop the connector off the motherboard you have to short the PowerGood line to ground to get the power supply to start.
|
|
|
|
|
Oh! I was wondering about that. But how can I touch the contacts if the plug is plugged?
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Through the back of the connector where the wires go in. Just be careful not to miss the connector entirely and touch the probes to the motherboard!
|
|
|
|
|
OK I'll give it a try. Thanks.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
|
FYI... if your power was that far off, you'd probably have major problems. Things would flicker on/off or alternatively smoke would start coming out of the power supply or associated regulators (if it was a short causing fluctuations).
|
|
|
|
|
I can read /google each one of these devices definitions / description and have some understanding how they work alone.
The question is – how do they fit together?
I have a Arduino Due with “native” USB port.
I can configure the port for USB mouse, keyboard, web cam or flash drive, no problem.
I want to write to flash drive and that is where I am not so sure how USB / SCSI LUN #0 - the only device on the USB bus - interacts with disk / file processing
I got as far as “mounting” drive at LUN #0 , but from there I am lost.
For example I can check if the “drive “ is mounted but the results are intermittent and most of the time the process just stops. And without real debugger, I am stuck. I need to better understand how it all works together to be able to follow the code manually.
Basically – does USB /SCSI LUN #0 id translates into “disk #0 “/ USB device #1? and is there a timing dependency between “working” with file / disk and USB?
Can anybody help me with understanding of how all this hardware / software interacts?
Thanks for your time.
Vaclav
|
|
|
|
|
hmm here is the scenario,
in the past months my battery become dead.
Actually I am not sure if its really dead because it say it has 89% of power and charging, but if i pulled out the charger it will turn off. then I tried to insert it to the another laptop, and the same problem occurred. I don't know if it is the battery circuit become faulty.
Then now I have a new battery and it is really good, BUT there is something I noticed, when my processor goes high or my laptop used a lot of resource in the just a matter of time, my power setting changed from charging to not charging and to charging just so quick, i dont know why it is happening, actually I already noticed it before I but a new battery, while running with my dead battery and the adapter.
why it is changing from charging to not charging, if the system used a lot of resource?
what could be the possible cause of it?
EDIT: BTW The charging light indicator of the laptop will blink if this is problem is happening.
modified 30-Nov-14 1:00am.
|
|
|
|
|
The AC adapter provides a specific amount of power. Typical DC output is 19 V with max. 4.74 A (see label on your adapter) which is 90 W. This power is reduced by the efficiency of the internal power supply and battery charging device. Typical efficiencies are 80 to 90%. So you may have about 80 W of useable power from external source. When your system load is high it may require more than these 80 W. Then the additional power is drawn from the battery which is then discharging.
For that reason you should not use the system when charging an empty battery or when the battery level is low. Then the battery is not able to deliver the additional power which will be usually indicated by a low battery indicator.
|
|
|
|
|
ohh there is something I notice lately on my laptop,
when it is on high performance power plan it constantly draining the battery even its say it is charging,
then if i switch it in to power saving the power percentage of the battery will become stationary,
then if i will put my to hibernation or turned it off with the adapter it will charged.
could it be my adapter is already been faulty?
ohh by the way I also tried to pull out the battery and switch on my laptop with the adapter, it will just turn on for about a 1 to 2 second then it suddenly lose power and turned off.
|
|
|
|
|
Yes, it seems that your AC adapter can not provide enough power. Such adapters should be able to power a laptop without battery including start up where more power is used than during normal operation. Another indication would be long charging times.
|
|
|
|
|
Thank you so much, I just buy a new adapter and everything back to normal.
BTW could you give me some light why the AC adapter lose some ampere output when the time goes? actually I am using that adapter for almost more than 2 years
thank you.
|
|
|
|
|
I have no idea what happened to your adapter. Such failures are rather seldom. I would guess that a single electronic component is defective or there is a cold solder joint resulting in a lower current limiting.
|
|
|
|
|
I am learning all about low level USB devices and would like to develop "stuff" ( term used is "USB controller") to connect Arduino Due "native" port to webcam.
I need to get some idea about how is webcam ( not camera ) hardware implemented.
So far all searches returned "how to connect your web cam to PC".
So there is an optical part ( no tech term yet) and the hardware which "connects" the optics to USB bus, right?
Any info / links etc on HARDWARE will be appreciated, keep in mind this is semi-embedded processor with limited resources - no Windoze API.
Thanks for your time
Cheers Vaclav
|
|
|
|
|
An USB device typically contains an intelligent controller that understands commands send from the host and prepares data from it's own hardware to be send to the host. So there is some kind of protocol that allows the communication between host and device.
The handling on the host side is done by a device specific driver. This may be a common driver for well known USB device types or a specific one provided by the device manufacturer.
If you want to connect USB devices to your Arduino, you must support the corresponding protocol. I don't have used an Arduino so far, but there should be examples for common devices like storages. For other devices you must write your own protocol implementation using the information provided by the device manufacturer or searching the web (Linux drivers are often a good start).
So you might not need information on hardware but on the protocol used by a specific device.
|
|
|
|
|
Jochen, thanks for the info.
Found this link <a href="http://www.usbmadesimple.co.uk/ums_links.htm">http://www.usbmadesimple.co.uk/ums_links.htm</a>[<a href="http://www.usbmadesimple.co.uk/ums_links.htm" target="_blank" title="New Window">^</a>]
Cheers
Vaclav
|
|
|
|