Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 | }; |
