Sadaei Osakabe
/
OV7670_with_AL422B_Color_Size_test
OV7670_with_AL422B Color & Size Test Program
Diff: ov7670.h
- 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; } };