OV7670_with_AL422B Color & Size Test Program

Dependencies:   mbed

Revision:
4:2c412c97678c
Parent:
1:2483905139b6
--- a/ov7670.h	Sun Feb 17 12:42:55 2013 +0000
+++ b/ov7670.h	Mon Feb 18 07:53:46 2013 +0000
@@ -14,16 +14,16 @@
 class OV7670
 {
 public:
-    I2C camera ;
+    I2C camera;
     InterruptIn vsync,href;
-    DigitalOut wen ;
-    BusIn data ;
-    DigitalOut rrst,oe,rclk ;
-    volatile int LineCounter ;
-    volatile int LastLines ;
-    volatile bool CaptureReq ;
-    volatile bool Busy ;
-    volatile bool Done ;
+    DigitalOut wen;
+    BusIn 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
@@ -44,74 +44,74 @@
         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.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 ;
+        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 ;
+        CaptureReq = true;
+        Busy = true;
     }
     
     // capture done? (with clear)
     bool CaptureDone(void)
     {
-        bool result ;
+        bool result;
         if (Busy) {
-            result = false ;
+            result = false;
         } else {
-            result = Done ;
-            Done = false ;
+            result = Done;
+            Done = false;
         }
-        return result ;
+        return result;
     }
 
     // write to camera
     void WriteReg(int addr,int data)
     {
         // WRITE 0x42,ADDR,DATA
-        camera.start() ;
-        camera.write(OV7670_WRITE) ;
+        camera.start();
+        camera.write(OV7670_WRITE);
         wait_us(OV7670_WRITEWAIT);
-        camera.write(addr) ;
+        camera.write(addr);
         wait_us(OV7670_WRITEWAIT);
-        camera.write(data) ;
-        camera.stop() ;
+        camera.write(data);
+        camera.stop();
     }
 
     // read from camera
     int ReadReg(int addr)
     {
-        int data ;
+        int data;
 
         // WRITE 0x42,ADDR
-        camera.start() ;
-        camera.write(OV7670_WRITE) ;
+        camera.start();
+        camera.write(OV7670_WRITE);
         wait_us(OV7670_WRITEWAIT);
-        camera.write(addr) ;
-        camera.stop() ;
+        camera.write(addr);
+        camera.stop();
         wait_us(OV7670_WRITEWAIT);    
 
         // WRITE 0x43,READ
-        camera.start() ;
-        camera.write(OV7670_READ) ;
+        camera.start();
+        camera.write(OV7670_READ);
         wait_us(OV7670_WRITEWAIT);
-        data = camera.read(OV7670_NOACK) ;
-        camera.stop() ;
+        data = camera.read(OV7670_NOACK);
+        camera.stop();
     
-        return data ;
+        return data;
     }
 
     // print register
@@ -129,12 +129,12 @@
     }
 
     void Reset(void) {    
-        WriteReg(REG_COM7,0x80) ; // RESET CAMERA
-        wait_ms(200) ;
+        WriteReg(REG_COM7,COM7_RESET); // RESET CAMERA
+        wait_ms(200);
     }
 
     void InitForFIFOWriteReset(void) {
-        WriteReg(REG_COM10,0x02);
+        WriteReg(REG_COM10, COM10_VS_NEG);
     }
 
     void InitSetColorbar(void)  {
@@ -388,7 +388,11 @@
     void InitBayerRGB(void){
         int reg_com7 = ReadReg(REG_COM7);
 
-        WriteReg(REG_COM7, reg_com7|COM7_PBAYER);
+        // odd line BGBG... even line GRGR...
+        WriteReg(REG_COM7, reg_com7|COM7_BAYER);
+        // odd line GBGB... even line RGRG...
+        //WriteReg(REG_COM7, reg_com7|COM7_PBAYER);
+
         WriteReg(REG_RGB444, RGB444_DISABLE);
         WriteReg(REG_COM15, COM15_R00FF);
 
@@ -404,7 +408,7 @@
         int reg_com7 = ReadReg(REG_COM7);
 
         WriteReg(REG_COM7,reg_com7|COM7_VGA);
-        
+
         WriteReg(REG_HSTART,HSTART_VGA);
         WriteReg(REG_HSTOP,HSTOP_VGA);
         WriteReg(REG_HREF,HREF_VGA);
@@ -425,7 +429,7 @@
         int reg_com7 = ReadReg(REG_COM7);
 
         WriteReg(REG_COM7,reg_com7|COM7_VGA);
-        
+
         WriteReg(REG_HSTART,HSTART_VGA);
         WriteReg(REG_HSTOP,HSTOP_VGA);
         WriteReg(REG_HREF,HREF_VGA);
@@ -451,7 +455,7 @@
         int reg_com7 = ReadReg(REG_COM7);
 
         WriteReg(REG_COM7,reg_com7|COM7_VGA);
-        
+
         WriteReg(REG_HSTART,HSTART_VGA);
         WriteReg(REG_HSTOP,HSTOP_VGA);
         WriteReg(REG_HREF,HREF_VGA);
@@ -519,57 +523,57 @@
     {
         // Capture Enable
         if (CaptureReq) {
-            wen = 1 ;
-            Done = false ;
-            CaptureReq = false ;
+            wen = 1;
+            Done = false;
+            CaptureReq = false;
         } else {
-            wen = 0 ;
+            wen = 0;
             if (Busy) {
-                Busy = false ;
-                Done = true ;
+                Busy = false;
+                Done = true;
             }
         }
 
         // Hline Counter
-        LastLines = LineCounter ;
-        LineCounter = 0 ;
+        LastLines = LineCounter;
+        LineCounter = 0;
     }
     
     // href handler
     void HrefHandler(void)
     {
-        LineCounter++ ;
+        LineCounter++;
     }
     
     // Data Read
     int ReadOneByte(void)
     {
-        int result ;
-        rclk = 1 ;
-//        wait_us(1) ;
-        result = data ;
-        rclk = 0 ;
-        return result ;
+        int result;
+        rclk = 1;
+//        wait_us(1);
+        result = data;
+        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 ;
+        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 ;
+        oe = 1;
+        ReadOneByte();
+        rclk = 1;
     }
 };