Arduino suitablility for a project

If your input data is fed into a circular buffer and the output to the PC reads from that buffer, everything interrupt driven (or one half is a tight loop), then as long as the overall throughput can be handled by the serial PC link you have no problems.

The 2000 bytes of RAM shouldn't be an issue then.

You can use pin-change interrupts, the ISR does nothing but store the new state of the pins in a small circular buffer (say 256 bytes) with a time stamp, increments the buffer's write pointer, then exits.

Meanwhile a tight loop checks for buffer_write_ptr != buffer_read_ptr which indicates that there is data in the buffer, it grabs the data one byte at a time and transmits it. The transmission has no tangable affect on the data capture as the main loop (and presemably the serial output) do not block interrupts.

Same data format as suggested above but the "lane" byte is a bit field to allow simultaneous events.


Rob