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]