1 Microsecond pulses

pylon:
@MarkT: This gives you 4.2us pulses, try it out. delayMicroseconds() waits at least 4us even if the parameter is less than 4.

But you can change the code to:

void pulse ()

{
 cli () ;
 PIND = 0x10 ;
 asm("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t");
 asm("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t");
 asm("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t");
 asm("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t");
 PIND = 0x10 ;
 sei () ;
}




This should result in a pulse of 1.2us.

Try it out - I tested it with 100MHz scope and get 1.19us pulses. Am using the Arduino 1.0 software and avr-gcc 4.3.5
The code for delayMicroseconds has a comment saying that it is close to 1us when called with an argument of 1.

What version gives 4us then?

[edit: Arduino 1.0.1 and arduino-0022 give me 1.19us as well]