ov7670 FIFO data taking program

Dependencies:   OV7670 with FIFO ST7735_TFT mbed

Fork of OV7670_Testing by Martin Smith

Revision:
2:4ebec58ffaca
Parent:
1:c98598814170
diff -r c98598814170 -r 4ebec58ffaca ov7670.h
--- a/ov7670.h	Sat Mar 31 10:05:59 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-#include "mbed.h"
-#include "ov7670reg.h"
-
-#define OV7670_WRITE (0x42)
-#define OV7670_READ  (0x43)
-#define OV7670_WRITEWAIT (20)
-#define OV7670_NOACK (0)
-#define OV7670_REGMAX (201)
-#define OV7670_I2CFREQ (50000)
-
-//
-// OV7670 + FIFO AL422B camera board test
-//
-class OV7670 : public Base
-{
-public:
-    I2C camera ;
-    InterruptIn vsync,href;
-    DigitalOut wen ;
-    //BusIn data ;
-    PortIn data;
-    DigitalOut rrst,oe,rclk ;
-    volatile int LineCounter ;
-    volatile int LastLines ;
-    volatile bool CaptureReq ;
-    volatile bool Busy ;
-    volatile bool Done ;    
-        
-    OV7670(
-        PinName sda,// Camera I2C port
-        PinName scl,// Camera I2C port
-        PinName vs, // VSYNC
-        PinName hr, // HREF
-        PinName we, // WEN
-        
-        /*
-        PinName d7, // D7
-        PinName d6, // D6
-        PinName d5, // D5
-        PinName d4, // D4
-        PinName d3, // D3
-        PinName d2, // D2
-        PinName d1, // D1
-        PinName d0, // D0
-        */
-        PortName port, // 8bit bus port
-        int mask, // 0b0000_0M65_4000_0321_L000_0000_0000_0000 = 0x07878000
-        
-        PinName rt, // /RRST
-        PinName o,  // /OE
-        PinName rc  // RCLK      
-        //) : camera(sda,scl),vsync(vs),href(hr),wen(we),data(d0,d1,d2,d3,d4,d5,d6,d7),rrst(rt),oe(o),rclk(rc)
-        ) : camera(sda,scl),vsync(vs),href(hr),wen(we),data(port,mask),rrst(rt),oe(o),rclk(rc)
-    {
-        camera.stop() ;
-        camera.frequency(OV7670_I2CFREQ) ;
-        vsync.fall(this,&OV7670::VsyncHandler) ;
-        href.rise(this,&OV7670::HrefHandler) ;
-        CaptureReq = false ;
-        Busy = false ;
-        Done = false ;
-        LineCounter = 0 ;
-        rrst = 1 ;
-        oe = 1 ;
-        rclk = 1 ;
-        wen = 0 ;
-    }
-
-    // capture request
-    void CaptureNext(void)
-    {
-        CaptureReq = true ;
-        Busy = true ;
-    }
-    
-    // capture done? (with clear)
-    bool CaptureDone(void)
-    {
-        bool result ;
-        if (Busy) {
-            result = false ;
-        } else {
-            result = Done ;
-            Done = false ;
-        }
-        return result ;
-    }
-
-    // write to camera
-    void WriteReg(int addr,int data)
-    {
-        // WRITE 0x42,ADDR,DATA
-        camera.start() ;
-        camera.write(OV7670_WRITE) ;
-        wait_us(OV7670_WRITEWAIT);
-        camera.write(addr) ;
-        wait_us(OV7670_WRITEWAIT);
-        camera.write(data) ;
-        camera.stop() ;
-    }
-
-    // read from camera
-    int ReadReg(int addr)
-    {
-        int data ;
-
-        // WRITE 0x42,ADDR
-        camera.start() ;
-        camera.write(OV7670_WRITE) ;
-        wait_us(OV7670_WRITEWAIT);
-        camera.write(addr) ;
-        camera.stop() ;
-        wait_us(OV7670_WRITEWAIT);    
-
-        // WRITE 0x43,READ
-        camera.start() ;
-        camera.write(OV7670_READ) ;
-        wait_us(OV7670_WRITEWAIT);
-        data = camera.read(OV7670_NOACK) ;
-        camera.stop() ;
-    
-        return data ;
-    }
-
-    void Reset(void) {    
-        WriteReg(0x12,0x80) ; // RESET CAMERA
-        wait_ms(200) ;
-    }
-    
-    void InitQQVGA() {
-        // QQVGA RGB444
-        WriteReg(REG_CLKRC,0x80);
-        WriteReg(REG_COM11,0x0A) ;
-        WriteReg(REG_TSLB,0x04);
-        WriteReg(REG_COM7,0x04) ;
-        
-        //WriteReg(REG_RGB444, 0x02);
-        //WriteReg(REG_COM15, 0xd0);
-        WriteReg(REG_RGB444, 0x00);     // Disable RGB 444?
-        WriteReg(REG_COM15, 0xD0);      // Set RGB 565?
-        
-        WriteReg(REG_HSTART,0x16) ;
-        WriteReg(REG_HSTOP,0x04) ;
-        WriteReg(REG_HREF,0x24) ;
-        WriteReg(REG_VSTART,0x02) ;
-        WriteReg(REG_VSTOP,0x7a) ;
-        WriteReg(REG_VREF,0x0a) ;
-        WriteReg(REG_COM10,0x02) ;
-        WriteReg(REG_COM3, 0x04);
-        WriteReg(REG_COM14, 0x1a);
-        WriteReg(REG_MVFP,0x27) ;
-        WriteReg(0x72, 0x22);
-        WriteReg(0x73, 0xf2);
-
-        // COLOR SETTING
-        WriteReg(0x4f,0x80);
-        WriteReg(0x50,0x80);
-        WriteReg(0x51,0x00);
-        WriteReg(0x52,0x22);
-        WriteReg(0x53,0x5e);
-        WriteReg(0x54,0x80);
-        WriteReg(0x56,0x40);
-        WriteReg(0x58,0x9e);
-        WriteReg(0x59,0x88);
-        WriteReg(0x5a,0x88);
-        WriteReg(0x5b,0x44);
-        WriteReg(0x5c,0x67);
-        WriteReg(0x5d,0x49);
-        WriteReg(0x5e,0x0e);
-        WriteReg(0x69,0x00);
-        WriteReg(0x6a,0x40);
-        WriteReg(0x6b,0x0a);
-        WriteReg(0x6c,0x0a);
-        WriteReg(0x6d,0x55);
-        WriteReg(0x6e,0x11);
-        WriteReg(0x6f,0x9f);
-
-        WriteReg(0xb0,0x84);
-    }    
-
-
-
-    // vsync handler
-    void VsyncHandler(void)
-    {
-        // Capture Enable
-        if (CaptureReq) {
-            wen = 1 ;
-            Done = false ;
-            CaptureReq = false ;
-        } else {
-            wen = 0 ;
-            if (Busy) {
-                Busy = false ;
-                Done = true ;
-            }
-        }
-
-        // Hline Counter
-        LastLines = LineCounter ;
-        LineCounter = 0 ;
-    }
-    
-    // href handler
-    void HrefHandler(void)
-    {
-        LineCounter++ ;
-    }
-    
-    // Data Read
-    int ReadOneByte(void)
-    {
-        int result;
-        rclk = 1;
-        result = data;
-
-        // Shift the bits around to form the byte
-        int top = result >> 19;         // Isolate the top nibble
-        int middle = result >> 2;       // Isolate bits 2 & 3
-        result = result & 0x00000003;   // Isolate bits 0 & 1
-        
-        result += middle;
-        result += top;
-       
-        rclk = 0;
-        return result;
-    }
-    
-    // Data Start
-    void ReadStart(void)
-    {        
-        rrst = 0 ;
-        oe = 0 ;
-        wait_us(1) ;
-        rclk = 0 ;
-        wait_us(1) ;
-        rclk = 1 ;
-        wait_us(1) ;        
-        rrst = 1 ;
-    }
-    
-    // Data Stop
-    void ReadStop(void)
-    {
-        oe = 1 ;
-        ReadOneByte() ;
-        rclk = 1 ;
-    }
-};