ov7670 no fifo

Dependents:   OV7670_Nucleo

Committer:
rulla
Date:
Mon Nov 21 10:04:38 2016 +0000
Revision:
1:e216fd4e8d9c
k

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rulla 1:e216fd4e8d9c 1 #include "mbed.h"
rulla 1:e216fd4e8d9c 2 #include "OV6620reg.h"
rulla 1:e216fd4e8d9c 3 #include <FastPWM.h>
rulla 1:e216fd4e8d9c 4 #include "ST7735_TFT.h"
rulla 1:e216fd4e8d9c 5
rulla 1:e216fd4e8d9c 6 #define OV6620_WRITE (0xa2)
rulla 1:e216fd4e8d9c 7 #define OV6620_READ (0xa2)
rulla 1:e216fd4e8d9c 8 #define OV6620_WRITEWAIT (20)
rulla 1:e216fd4e8d9c 9 #define OV6620_NOACK (0)
rulla 1:e216fd4e8d9c 10 #define OV6620_REGMAX (201)
rulla 1:e216fd4e8d9c 11 #define OV6620_I2CFREQ (39000)
rulla 1:e216fd4e8d9c 12
rulla 1:e216fd4e8d9c 13 #define SIZEX 176
rulla 1:e216fd4e8d9c 14 #define SIZEY 144
rulla 1:e216fd4e8d9c 15 #define SIZE 25344
rulla 1:e216fd4e8d9c 16 //
rulla 1:e216fd4e8d9c 17 // OV6620 + FIFO AL422B camera board test
rulla 1:e216fd4e8d9c 18 //
rulla 1:e216fd4e8d9c 19 ST7735_TFT TFT(p5, p6, p7, p8, p9, p10,"TFT");// SDA, nc, SCK,CS,A0,RESET
rulla 1:e216fd4e8d9c 20 int per=2;
rulla 1:e216fd4e8d9c 21 int pwi=1;
rulla 1:e216fd4e8d9c 22
rulla 1:e216fd4e8d9c 23 class OV6620
rulla 1:e216fd4e8d9c 24 {
rulla 1:e216fd4e8d9c 25 public:
rulla 1:e216fd4e8d9c 26
rulla 1:e216fd4e8d9c 27 volatile int LineCounter ;
rulla 1:e216fd4e8d9c 28 volatile int LastLines ;
rulla 1:e216fd4e8d9c 29 volatile bool CaptureReq ;
rulla 1:e216fd4e8d9c 30 volatile bool Busy ;
rulla 1:e216fd4e8d9c 31 volatile bool Done ;
rulla 1:e216fd4e8d9c 32 void CaptureNext(void);
rulla 1:e216fd4e8d9c 33 bool CaptureDone(void);
rulla 1:e216fd4e8d9c 34 void WriteReg(int addr,char data);
rulla 1:e216fd4e8d9c 35 void Reset(void);
rulla 1:e216fd4e8d9c 36 void test(void);
rulla 1:e216fd4e8d9c 37 void InitQQVGA(void);
rulla 1:e216fd4e8d9c 38 char ReadReg(int addr);
rulla 1:e216fd4e8d9c 39 int ReadOneByte(void);
rulla 1:e216fd4e8d9c 40 int ReadOneWord(void);
rulla 1:e216fd4e8d9c 41 void ReadStart(void);
rulla 1:e216fd4e8d9c 42 void ReadStop(void);
rulla 1:e216fd4e8d9c 43 void VsyncHandler(void);
rulla 1:e216fd4e8d9c 44 void PclkHandler(void) ;
rulla 1:e216fd4e8d9c 45 void wait_posedge(InterruptIn pin);
rulla 1:e216fd4e8d9c 46 void wait_posedge(InterruptIn pin);
rulla 1:e216fd4e8d9c 47
rulla 1:e216fd4e8d9c 48 OV6620(
rulla 1:e216fd4e8d9c 49 PinName sda,// Camera I2C port
rulla 1:e216fd4e8d9c 50 PinName scl,// Camera I2C port
rulla 1:e216fd4e8d9c 51 PinName vs, // VSYNC
rulla 1:e216fd4e8d9c 52 PinName hr, // HREF
rulla 1:e216fd4e8d9c 53 PinName pic ,// /pclk
rulla 1:e216fd4e8d9c 54 PortName port, // 8bit bus port
rulla 1:e216fd4e8d9c 55 int mask, // 0b0000_0M65_4000_0321_L000_0000_0000_0000 = 0x07878000
rulla 1:e216fd4e8d9c 56 PinName xk
rulla 1:e216fd4e8d9c 57 ) : camera(sda,scl),vsync(vs),href(hr),pclk(pic),dataP(port,mask),xclk(xk)
rulla 1:e216fd4e8d9c 58
rulla 1:e216fd4e8d9c 59 {
rulla 1:e216fd4e8d9c 60 pc.baud(115200) ;
rulla 1:e216fd4e8d9c 61
rulla 1:e216fd4e8d9c 62 xclk..period(1/24000000.0);
rulla 1:e216fd4e8d9c 63 xclk.write(.5);
rulla 1:e216fd4e8d9c 64 TFT.claim(stdout); // Send stdout to the TFT display
rulla 1:e216fd4e8d9c 65 TFT.background(Black); // Set background to black
rulla 1:e216fd4e8d9c 66 TFT.foreground(White); // Set chars to white
rulla 1:e216fd4e8d9c 67 TFT.cls(); // Clear the screen
rulla 1:e216fd4e8d9c 68 TFT.set_orientation(3);
rulla 1:e216fd4e8d9c 69
rulla 1:e216fd4e8d9c 70 camera.stop() ;
rulla 1:e216fd4e8d9c 71 camera.frequency(OV6620_I2CFREQ) ;
rulla 1:e216fd4e8d9c 72 // vsync.fall(this,&OV6620::VsyncHandler) ;
rulla 1:e216fd4e8d9c 73 // href.rise(this,&OV6620::HrefHandler) ;
rulla 1:e216fd4e8d9c 74 // pclk.rise(this,&OV6620::PclkHandler) ; // ????????????? blocca tutto il programma
rulla 1:e216fd4e8d9c 75 CaptureReq = false ;
rulla 1:e216fd4e8d9c 76 Busy = false ;
rulla 1:e216fd4e8d9c 77 Done = false ;
rulla 1:e216fd4e8d9c 78 LineCounter = 0 ;
rulla 1:e216fd4e8d9c 79 FrameCounter = 0 ;
rulla 1:e216fd4e8d9c 80 PixCounter = 0 ;
rulla 1:e216fd4e8d9c 81 camera.start();
rulla 1:e216fd4e8d9c 82 }
rulla 1:e216fd4e8d9c 83 protected:
rulla 1:e216fd4e8d9c 84 I2C camera ;
rulla 1:e216fd4e8d9c 85 //InterruptIn vsync,href,pclk;
rulla 1:e216fd4e8d9c 86 DigitalIn vsync,href,pclk;
rulla 1:e216fd4e8d9c 87 PortIn dataP ;
rulla 1:e216fd4e8d9c 88 FastPWM xclk;
rulla 1:e216fd4e8d9c 89 };