test
Fork of ov7670 by
ov7670.h@5:a940d64a408b, 2017-09-25 (annotated)
- Committer:
- levkovigor
- Date:
- Mon Sep 25 12:38:33 2017 +0000
- Revision:
- 5:a940d64a408b
- Parent:
- 1:d82dbad9c06b
test
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| edodm85 | 0:810d59d0b843 | 1 | // |
| edodm85 | 0:810d59d0b843 | 2 | // OV7670 library |
| edodm85 | 0:810d59d0b843 | 3 | // |
| edodm85 | 0:810d59d0b843 | 4 | |
| edodm85 | 0:810d59d0b843 | 5 | #pragma once |
| edodm85 | 0:810d59d0b843 | 6 | #include "mbed.h" |
| edodm85 | 0:810d59d0b843 | 7 | #include "ov7670reg.h" |
| edodm85 | 0:810d59d0b843 | 8 | |
| edodm85 | 0:810d59d0b843 | 9 | #define OV7670_WRITE (0x42) |
| edodm85 | 0:810d59d0b843 | 10 | #define OV7670_READ (0x43) |
| edodm85 | 0:810d59d0b843 | 11 | #define OV7670_WRITEWAIT (20) |
| edodm85 | 0:810d59d0b843 | 12 | #define OV7670_NOACK (0) |
| edodm85 | 0:810d59d0b843 | 13 | #define OV7670_REGMAX (201) |
| edodm85 | 0:810d59d0b843 | 14 | #define OV7670_I2CFREQ (100000) |
| edodm85 | 0:810d59d0b843 | 15 | |
| edodm85 | 0:810d59d0b843 | 16 | |
| edodm85 | 0:810d59d0b843 | 17 | class OV7670 |
| edodm85 | 0:810d59d0b843 | 18 | { |
| edodm85 | 0:810d59d0b843 | 19 | public: |
| edodm85 | 0:810d59d0b843 | 20 | |
| levkovigor | 5:a940d64a408b | 21 | OV7670( |
| levkovigor | 5:a940d64a408b | 22 | PinName sda, // Camera I2C port |
| levkovigor | 5:a940d64a408b | 23 | PinName scl, // Camera I2C port |
| levkovigor | 5:a940d64a408b | 24 | PinName vs, // VSYNC |
| levkovigor | 5:a940d64a408b | 25 | PinName hr, // HREF |
| levkovigor | 5:a940d64a408b | 26 | PinName we, // WEN |
| levkovigor | 5:a940d64a408b | 27 | |
| levkovigor | 5:a940d64a408b | 28 | //PortName port, // 8bit bus port |
| levkovigor | 5:a940d64a408b | 29 | //int mask, // 0b0000_0M65_4000_0321_L000_0000_0000_0000 = 0x07878000 |
| levkovigor | 5:a940d64a408b | 30 | PinName d7, // D7 |
| levkovigor | 5:a940d64a408b | 31 | PinName d6, // D6 |
| levkovigor | 5:a940d64a408b | 32 | PinName d5, // D5 |
| levkovigor | 5:a940d64a408b | 33 | PinName d4, // D4 |
| levkovigor | 5:a940d64a408b | 34 | PinName d3, // D3 |
| levkovigor | 5:a940d64a408b | 35 | PinName d2, // D2 |
| levkovigor | 5:a940d64a408b | 36 | PinName d1, // D1 |
| levkovigor | 5:a940d64a408b | 37 | PinName d0, // D0 |
| levkovigor | 5:a940d64a408b | 38 | |
| levkovigor | 5:a940d64a408b | 39 | PinName rt, // /RRST |
| levkovigor | 5:a940d64a408b | 40 | PinName o, // /OE |
| levkovigor | 5:a940d64a408b | 41 | PinName rc // RCLK |
| levkovigor | 5:a940d64a408b | 42 | ); |
| levkovigor | 5:a940d64a408b | 43 | |
| levkovigor | 5:a940d64a408b | 44 | /*OV7670( |
| edodm85 | 0:810d59d0b843 | 45 | PinName sda, // Camera I2C port |
| edodm85 | 0:810d59d0b843 | 46 | PinName scl, // Camera I2C port |
| edodm85 | 0:810d59d0b843 | 47 | PinName vs, // VSYNC |
| edodm85 | 0:810d59d0b843 | 48 | PinName hr, // HREF |
| edodm85 | 0:810d59d0b843 | 49 | PinName we, // WEN |
| edodm85 | 0:810d59d0b843 | 50 | |
| edodm85 | 0:810d59d0b843 | 51 | PortName port, // 8bit bus port |
| edodm85 | 0:810d59d0b843 | 52 | int mask, // 0b0000_0M65_4000_0321_L000_0000_0000_0000 = 0x07878000 |
| edodm85 | 0:810d59d0b843 | 53 | |
| edodm85 | 0:810d59d0b843 | 54 | PinName rt, // /RRST |
| edodm85 | 0:810d59d0b843 | 55 | PinName o, // /OE |
| edodm85 | 0:810d59d0b843 | 56 | PinName rc // RCLK |
| edodm85 | 0:810d59d0b843 | 57 | ); |
| levkovigor | 5:a940d64a408b | 58 | */ |
| edodm85 | 0:810d59d0b843 | 59 | ~OV7670(); |
| edodm85 | 0:810d59d0b843 | 60 | |
| edodm85 | 0:810d59d0b843 | 61 | void CaptureNext(void); // capture request |
| edodm85 | 0:810d59d0b843 | 62 | bool CaptureDone(void); // capture done? (with clear) |
| edodm85 | 0:810d59d0b843 | 63 | void WriteReg(int addr,int data); // write to camera |
| edodm85 | 0:810d59d0b843 | 64 | int ReadReg(int addr); // read from camera |
| edodm85 | 0:810d59d0b843 | 65 | void Reset(void); // reset reg camera |
| edodm85 | 1:d82dbad9c06b | 66 | int Init(char c, int n); // init reg |
| edodm85 | 0:810d59d0b843 | 67 | void VsyncHandler(void); // vsync handler |
| edodm85 | 0:810d59d0b843 | 68 | void HrefHandler(void); // href handler |
| edodm85 | 0:810d59d0b843 | 69 | int ReadOnebyte(void); // Data Read |
| edodm85 | 0:810d59d0b843 | 70 | void ReadStart(void); // Data Start |
| edodm85 | 0:810d59d0b843 | 71 | void ReadStop(void); // Data Stop |
| edodm85 | 0:810d59d0b843 | 72 | |
| edodm85 | 0:810d59d0b843 | 73 | |
| edodm85 | 0:810d59d0b843 | 74 | private: |
| edodm85 | 0:810d59d0b843 | 75 | I2C _i2c; |
| edodm85 | 0:810d59d0b843 | 76 | InterruptIn vsync,href; |
| edodm85 | 0:810d59d0b843 | 77 | |
| edodm85 | 0:810d59d0b843 | 78 | DigitalOut wen; |
| levkovigor | 5:a940d64a408b | 79 | //PortIn data; |
| levkovigor | 5:a940d64a408b | 80 | BusIn data; |
| edodm85 | 0:810d59d0b843 | 81 | DigitalOut rrst,oe,rclk; |
| edodm85 | 0:810d59d0b843 | 82 | volatile int LineCounter; |
| edodm85 | 0:810d59d0b843 | 83 | volatile int LastLines; |
| edodm85 | 0:810d59d0b843 | 84 | volatile bool CaptureReq; |
| edodm85 | 0:810d59d0b843 | 85 | volatile bool Busy; |
| edodm85 | 0:810d59d0b843 | 86 | volatile bool Done; |
| edodm85 | 0:810d59d0b843 | 87 | }; |
