Minimum time required to have a digital pin read HIGH state

Hello -- I`m getting set up to design some things and need to have some information about the arduino with the standard firmata loaded. Specifically, how much time will it take for a digital pin to register as "HIGH" ....for example if i give/loop (from an external device) a .001 second 5v "on" pulse with a .2 second "off" delay in between will a digital pin on the arduino read the "on" pulse? what is a comfortable time for the pulse to be "on" in order for the digital pin to read HIGH every time? Lets just assume everything is wired correctly....for example 5v from external to digital pin on arduino through 10k resistor to ground on board.
Anyone know what the minimum time is for it to register....comfortably....every time?
-arduiYES

In the ATmega328 datasheet, there is a timing diagram for the I/O pins and their synchronizer latch. In my copy it is section 13.2.4.

The key quote in this section is this: "a single signal transition on the pin will be delayed between 1?2 and 11?2 system clock period depending upon the time of assertion."

16MHz Clock = 62.5ns. So the signal needs to be active (high or low) for at least 93.75ns in order for the I/O port to latch it in.

The timing of the signal you are talking about is in the range of 1-200ms (significantly slower).

You are more likely to miss signals because of long sections of code than anything in the I/O port's hardware.

thank you james. i appreciate you looking the technical specifications up and posting them for me. great to know the facts.
-arduiyes

As James says at the low level hardware, but if you have a polling routine it will depend entirely on what else the procesor is doing, IE how often you get to poll.

You have 1mS to detect the pulse which is quite a long time, still unless the code has nothing else to do and can therefore do a fairly tight loop I'd use an interrupt.


Rob