Storing or loading a full 640x480 image is 307200 bytes, which is 1 byte per 3.26 uS.
I just had to giggle when I read that statement (my own), because it implies writing or reading just 1 full frame per second, and if you write & read at that speed, it would take 2 seconds. Silly statement, no basis in reality (i.e., why would anyone do that?) Ok, now back to reality...
I've been thinking about things a bit more, trying to get a handle on what I glean of sbright33's perspective. That may be silly, since I can't read his mind, but... I believe it boils down to these requirements: Cheap, Simple, and Effective. Since I tend to over-compensate (i.e., throw more horespower at a problem than is necessarily required), I want to consider a simpler solution that may reach the immediate goal, without trying to cover many possible enhancements. That said...
The main issue, as stated earlier, is that the Uno lacks RAM, not power. I loved gardner's comment about the 6809, because I "grew up" on the Color Computer (MC6809E running under 1MHz), and just loved that chip (very clean to program in assembly). I remember running OS-9 on that slow CPU and just having a great time, but I could do that only because the machine had 64KB of RAM. And yes, the RAM was external to the CPU, but the 6809 was designed to work with that, having address and data pins.
sbright33 mentioned using an Uno32 between the camera and the Uno, but only if it had 128KB of RAM. In my mind, this is effectively the same solution as an ARM chip with lots of RAM; it's just one brand of CPU versus another brand of CPU. I just tend to think ARM, because I'm familiar with it, but PIC is a cool platform, too.
Still, if the 16MHz Uno really has enough power to process the camera image, maybe we should just focus on the RAM issue; maybe we should attach the RAM directly to the Uno, and forget about using a second CPU. That would fulfill the Cheap and Simple requirements. Question is... does it fulfill the Effective requirement? I think it could.
Recall that GIF diagram I posted? Imagine something similar, but replace the ARM chip with the AVR on the Uno. Instead of using two 10-bit latches, use three 8-bit latches. Keep the 512KB SRAM. Use 8 of the Uno digital i/o pins as address/data. Use remaining digital i/o pins as control pins. Add a single 2-to-4-bit mux, if needed (to save pins). Now the Uno can access 512KB! All it takes is wiring the latches and SRAM to the Uno, and viola!
Another even simpler alternative is to use the Uno's SPI interface, and SPI-based SRAM. The only real consideration is determining which method (parallel via latches or serial via SPI) uses fewer AVR instructions on the Uno.
Thoughts??