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.
Interrupts
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 interupted for TBD microseconds. The ARMconnect also uses a 10 msec timer interupt. 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 interupts during that critical period. These operations include OWIN, OWOUT, SERIN and SEROUT. Other operations that would be negatively impacted by an interupt also disable the interup for a period of time. Those include PULSIN, PULSOUT, PWM, and RCTIME.
Interupts 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 noticedable, 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.