The oscillator
The ARMexpress uses a ceramic resonator for the timing element.  It is accurate for 1%.  It is used for timing of operations of SERIN, SEROUT, OWIN, OWOUT, PULSEIN, PULSEOUT, and COUNT.

Other operations such as I2CIN, I2COUT, SPIIN, SPIOUT, SHIFTIN, SHIFTOUT, and PWM are "bit-banged" loops that are calibrated to the speed of the CPU.

The real time clock
The ARMexpress, ARMexpress LITE, or ARMmite wireless use the CPU clock based on the ceramic resonator for the timing element.  It is accurate for 1%. 

The ARMmite and ARMweb use a 32KHz crystal which is much more accurate for timing of SECONDS, MINUTES, HOURS, DAYS, MONTH and YEAR.  It is accurate to 100ppm.  And on the ARMmite or ARMweb it can be kept running with a battery.


The serial port connection through the USB uses interrupts for all products.  The service routines for these actions have been minimized so that the user program is only interrupted for TBD microseconds.  The ARMweb also uses a 10 msec timer interrupt.  With version 7.09 firmware and later interrupts on 2 pins or timer are available to the user BASIC program.

Operations that require accurate timing will disable the interrupts during that critical period.  These operations include OWIN, OWOUT, SERIN and SEROUT.  Other operations that would be negatively impacted by an interrupt also disable the interrupt for a period of time.  Those include PULSIN, PULSOUT, PWM, and RCTIME.

Interrupts and User code
When the ARMexpress receives serial input it will interrupt to copy data into its buffer.  This will cause a small delay in the users program.  In most cases this is not noticeable, but may be where user is timing with TIMER.

User code can cause the serial port to be deaf when running long operations such as PWM.  In normal operation this should not be a problem.

AD timing (ARMmite, ARMmite Wireless, ARMexpress LITE, and ARMweb)

The analog inputs can do a conversion in 11 uSec.