The AVRcam hardware has evolved several times since the project began in April of 2004. As can be seen in Figure 1, the hardware is very straight forward. An Atmel AVR mega8 provides the main processing needed by the system. The Omnivision OV6620 CMOS image sensor is connected directly to the mega8 to access important camera signals (pixel clock, horizontal and vertical sync, and, of course, the data busses). A new addition to the hardware is the AVR Tiny12, which is a small 8-pin microcontroller. This micro was added to the system to configure the OV6620 to output its clock signal on one of its pins. This clock signal is then used by the mega8 as its clock source. Having a single clock source shared between the mega8 and the OV6620 provides the necessary synchronization to allow the system to process the real-time stream of pixel data.
The AVRcam embedded software is divided up into a set of classes that implement the functionality required. The main crux of the software revolves around the Camera Interface class, which implements the core functionality of interfacing to the OV6620. The Frame Manager utilizes the data gathered by the Camera Interface class to make frame-level calculations and decisions. A User-Interface Manager sits as a peer to the Frame Manager, and is responsible for processing incoming commands and generating the needed outgoing serial packets. Finally, a simple event-dispatching executive sits at the top of the system to facilitate the handling of the events that get generated in the system. The AVRcam class diagram is shown in Figure 2.
AVRcamVIEW PC 应用截图：