ov7670 FIFO from Edoardo De Marchi
Dependents: 3D_Scanner_OV7670_
Fork of OV7670 with FIFO by
OV7670.cpp@1:f5f5d7c979cf, 2017-10-03 (annotated)
- Committer:
- rulla
- Date:
- Tue Oct 03 16:39:42 2017 +0000
- Revision:
- 1:f5f5d7c979cf
- Parent:
- 0:101fbacf126f
ok
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rulla | 0:101fbacf126f | 1 | #include "mbed.h" |
rulla | 0:101fbacf126f | 2 | #include "ov7670reg.h" |
rulla | 0:101fbacf126f | 3 | #include "OV7670.h" |
rulla | 0:101fbacf126f | 4 | |
rulla | 1:f5f5d7c979cf | 5 | OV7670::OV7670(PinName sda, PinName scl, PinName vs, PinName hr, PinName we, PortName port, int mask, PinName rt, PinName o, PinName rc) : camera(sda,scl),vsync(vs),href(hr),wen(we),dataP(port,mask),rrst(rt),oe(o),rclk(rc) |
rulla | 1:f5f5d7c979cf | 6 | { |
rulla | 1:f5f5d7c979cf | 7 | camera.stop() ; |
rulla | 1:f5f5d7c979cf | 8 | camera.frequency(OV7670_I2CFREQ) ; |
rulla | 1:f5f5d7c979cf | 9 | vsync.fall(this,&OV7670::VsyncHandler) ; |
rulla | 1:f5f5d7c979cf | 10 | //camera.start() ; |
rulla | 1:f5f5d7c979cf | 11 | CaptureReq = false ; |
rulla | 1:f5f5d7c979cf | 12 | Busy = false ; |
rulla | 1:f5f5d7c979cf | 13 | Done = false ; |
rulla | 1:f5f5d7c979cf | 14 | LineCounter = 0 ; |
rulla | 1:f5f5d7c979cf | 15 | rrst = 1 ; |
rulla | 1:f5f5d7c979cf | 16 | oe = 1 ; |
rulla | 1:f5f5d7c979cf | 17 | rclk = 1 ; |
rulla | 1:f5f5d7c979cf | 18 | wen = 0 ; |
rulla | 1:f5f5d7c979cf | 19 | } |
rulla | 1:f5f5d7c979cf | 20 | |
rulla | 1:f5f5d7c979cf | 21 | |
rulla | 1:f5f5d7c979cf | 22 | OV7670::~OV7670() |
rulla | 1:f5f5d7c979cf | 23 | { |
rulla | 1:f5f5d7c979cf | 24 | |
rulla | 1:f5f5d7c979cf | 25 | } |
rulla | 1:f5f5d7c979cf | 26 | // capture request |
rulla | 1:f5f5d7c979cf | 27 | void OV7670::CaptureNext(void) |
rulla | 1:f5f5d7c979cf | 28 | { |
rulla | 1:f5f5d7c979cf | 29 | CaptureReq = true ; |
rulla | 1:f5f5d7c979cf | 30 | Busy = true ; |
rulla | 1:f5f5d7c979cf | 31 | } |
rulla | 0:101fbacf126f | 32 | |
rulla | 1:f5f5d7c979cf | 33 | // capture done? (with clear) |
rulla | 1:f5f5d7c979cf | 34 | bool OV7670::CaptureDone(void) |
rulla | 1:f5f5d7c979cf | 35 | { |
rulla | 1:f5f5d7c979cf | 36 | bool result ; |
rulla | 1:f5f5d7c979cf | 37 | if (Busy) { |
rulla | 1:f5f5d7c979cf | 38 | result = false ; |
rulla | 1:f5f5d7c979cf | 39 | } else { |
rulla | 1:f5f5d7c979cf | 40 | result = Done ; |
rulla | 1:f5f5d7c979cf | 41 | Done = false ; |
rulla | 0:101fbacf126f | 42 | } |
rulla | 1:f5f5d7c979cf | 43 | return result ; |
rulla | 1:f5f5d7c979cf | 44 | } |
rulla | 0:101fbacf126f | 45 | |
rulla | 1:f5f5d7c979cf | 46 | // write to camera |
rulla | 1:f5f5d7c979cf | 47 | void OV7670::WriteReg(int addr,char data) |
rulla | 1:f5f5d7c979cf | 48 | { |
rulla | 1:f5f5d7c979cf | 49 | // WRITE 0x42,ADDR,DATA |
rulla | 1:f5f5d7c979cf | 50 | //camera.write(OV7670_WRITE,d1,2) ; |
rulla | 1:f5f5d7c979cf | 51 | camera.start() ; |
rulla | 1:f5f5d7c979cf | 52 | camera.write(OV7670_WRITE) ; |
rulla | 1:f5f5d7c979cf | 53 | wait_us(OV7670_WRITEWAIT); |
rulla | 1:f5f5d7c979cf | 54 | camera.write(addr) ; |
rulla | 1:f5f5d7c979cf | 55 | wait_us(OV7670_WRITEWAIT); |
rulla | 1:f5f5d7c979cf | 56 | camera.write(data) ; |
rulla | 1:f5f5d7c979cf | 57 | camera.stop() ; |
rulla | 1:f5f5d7c979cf | 58 | } |
rulla | 0:101fbacf126f | 59 | |
rulla | 1:f5f5d7c979cf | 60 | // read from camera |
rulla | 1:f5f5d7c979cf | 61 | char OV7670::ReadReg(int addr) |
rulla | 1:f5f5d7c979cf | 62 | { |
rulla | 1:f5f5d7c979cf | 63 | /* |
rulla | 1:f5f5d7c979cf | 64 | char buff[20]; |
rulla | 1:f5f5d7c979cf | 65 | char buf[20]; |
rulla | 1:f5f5d7c979cf | 66 | buff[0] = addr; |
rulla | 1:f5f5d7c979cf | 67 | buff[1] = OV7670_NOACK; |
rulla | 1:f5f5d7c979cf | 68 | |
rulla | 1:f5f5d7c979cf | 69 | camera.write(OV7670_WRITE,buff,1); |
rulla | 1:f5f5d7c979cf | 70 | camera.read(OV7670_WRITE+1,buf,1); |
rulla | 1:f5f5d7c979cf | 71 | return buf[0];*/ |
rulla | 0:101fbacf126f | 72 | int data ; |
rulla | 0:101fbacf126f | 73 | |
rulla | 1:f5f5d7c979cf | 74 | // WRITE 0x42,ADDR |
rulla | 1:f5f5d7c979cf | 75 | camera.start() ; |
rulla | 1:f5f5d7c979cf | 76 | camera.write(OV7670_WRITE) ; |
rulla | 1:f5f5d7c979cf | 77 | wait_us(OV7670_WRITEWAIT); |
rulla | 1:f5f5d7c979cf | 78 | camera.write(addr) ; |
rulla | 1:f5f5d7c979cf | 79 | camera.stop() ; |
rulla | 1:f5f5d7c979cf | 80 | wait_us(OV7670_WRITEWAIT); |
rulla | 1:f5f5d7c979cf | 81 | |
rulla | 1:f5f5d7c979cf | 82 | // WRITE 0x43,READ |
rulla | 1:f5f5d7c979cf | 83 | camera.start() ; |
rulla | 1:f5f5d7c979cf | 84 | camera.write(OV7670_READ) ; |
rulla | 1:f5f5d7c979cf | 85 | wait_us(OV7670_WRITEWAIT); |
rulla | 1:f5f5d7c979cf | 86 | data = camera.read(OV7670_NOACK) ; |
rulla | 1:f5f5d7c979cf | 87 | camera.stop() ; |
rulla | 1:f5f5d7c979cf | 88 | |
rulla | 1:f5f5d7c979cf | 89 | return data ; |
rulla | 1:f5f5d7c979cf | 90 | } |
rulla | 1:f5f5d7c979cf | 91 | |
rulla | 1:f5f5d7c979cf | 92 | void OV7670::test(void) |
rulla | 1:f5f5d7c979cf | 93 | { |
rulla | 1:f5f5d7c979cf | 94 | printf("ResetMAMT\n"); |
rulla | 1:f5f5d7c979cf | 95 | } |
rulla | 0:101fbacf126f | 96 | |
rulla | 1:f5f5d7c979cf | 97 | void OV7670::Reset(void) |
rulla | 1:f5f5d7c979cf | 98 | { |
rulla | 1:f5f5d7c979cf | 99 | WriteReg(REG_COM7,0x80) ; // RESET CAMERA |
rulla | 1:f5f5d7c979cf | 100 | wait_ms(200) ; |
rulla | 1:f5f5d7c979cf | 101 | printf("Reset\n"); |
rulla | 1:f5f5d7c979cf | 102 | } |
rulla | 1:f5f5d7c979cf | 103 | |
rulla | 1:f5f5d7c979cf | 104 | void OV7670::InitQQVGA(int SIZEX) |
rulla | 1:f5f5d7c979cf | 105 | { |
rulla | 1:f5f5d7c979cf | 106 | Reset(); // Resets all registers to default values |
rulla | 1:f5f5d7c979cf | 107 | Reset(); // Resets all registers to default values |
rulla | 1:f5f5d7c979cf | 108 | |
rulla | 1:f5f5d7c979cf | 109 | WriteReg(DBLV, 0x0a); // bypass PLL |
rulla | 1:f5f5d7c979cf | 110 | WriteReg(REG_CLKRC,0x80);//0x80 |
rulla | 1:f5f5d7c979cf | 111 | WriteReg(SCALING_XSC, 0x3a); |
rulla | 1:f5f5d7c979cf | 112 | WriteReg(SCALING_YSC, 0x35); |
rulla | 1:f5f5d7c979cf | 113 | WriteReg(REG_HREF, 0x24); |
rulla | 1:f5f5d7c979cf | 114 | WriteReg(REG_HSTART, 0x16); |
rulla | 1:f5f5d7c979cf | 115 | WriteReg(REG_HSTOP, 0x04); |
rulla | 1:f5f5d7c979cf | 116 | WriteReg(REG_VREF, 0x0a); |
rulla | 1:f5f5d7c979cf | 117 | WriteReg(REG_VSTART,0x02); |
rulla | 1:f5f5d7c979cf | 118 | WriteReg(REG_VSTOP, 0x7a); |
rulla | 1:f5f5d7c979cf | 119 | |
rulla | 1:f5f5d7c979cf | 120 | if(SIZEX==640) { |
rulla | 1:f5f5d7c979cf | 121 | WriteReg(REG_CLKRC,0x0);//0x80 |
rulla | 1:f5f5d7c979cf | 122 | WriteReg(REG_COM7,0x04) ; |
rulla | 1:f5f5d7c979cf | 123 | WriteReg(REG_COM3,0x0) ; |
rulla | 1:f5f5d7c979cf | 124 | WriteReg(REG_COM14, 0x00); |
rulla | 1:f5f5d7c979cf | 125 | WriteReg(SCALING_DCWCTR,0x11); |
rulla | 1:f5f5d7c979cf | 126 | WriteReg(SCALING_PCLK_DIV,0xf0); |
rulla | 1:f5f5d7c979cf | 127 | WriteReg(SCALING_PCLK_DELAY,0x02); |
rulla | 1:f5f5d7c979cf | 128 | |
rulla | 1:f5f5d7c979cf | 129 | WriteReg(0xff, 0xff); /* END MARKER */ |
rulla | 0:101fbacf126f | 130 | } |
rulla | 0:101fbacf126f | 131 | |
rulla | 1:f5f5d7c979cf | 132 | if(SIZEX==320) { |
rulla | 1:f5f5d7c979cf | 133 | WriteReg(REG_COM7,0x4) ; |
rulla | 1:f5f5d7c979cf | 134 | WriteReg(REG_COM17,0x00) ; |
rulla | 1:f5f5d7c979cf | 135 | WriteReg(REG_COM3,0x38) ; |
rulla | 1:f5f5d7c979cf | 136 | WriteReg(REG_COM14, 0x19); |
rulla | 1:f5f5d7c979cf | 137 | WriteReg(REG_COM2, 0x3); |
rulla | 1:f5f5d7c979cf | 138 | WriteReg(SCALING_DCWCTR,0x11); |
rulla | 1:f5f5d7c979cf | 139 | WriteReg(SCALING_PCLK_DIV,0xf1); |
rulla | 0:101fbacf126f | 140 | WriteReg(SCALING_PCLK_DELAY,0x02); |
rulla | 0:101fbacf126f | 141 | |
rulla | 0:101fbacf126f | 142 | |
rulla | 0:101fbacf126f | 143 | WriteReg(0x7a, 0x20); |
rulla | 0:101fbacf126f | 144 | WriteReg(0x7b, 0x1c); |
rulla | 0:101fbacf126f | 145 | WriteReg(0x7c, 0x28); |
rulla | 0:101fbacf126f | 146 | WriteReg(0x7d, 0x3c); |
rulla | 1:f5f5d7c979cf | 147 | WriteReg(0x7e, 0x55); |
rulla | 0:101fbacf126f | 148 | WriteReg(0x7f, 0x68); |
rulla | 0:101fbacf126f | 149 | WriteReg(0x80, 0x76); |
rulla | 0:101fbacf126f | 150 | WriteReg(0x81, 0x80); |
rulla | 0:101fbacf126f | 151 | WriteReg(0x82, 0x88); |
rulla | 0:101fbacf126f | 152 | WriteReg(0x83, 0x8f); |
rulla | 0:101fbacf126f | 153 | WriteReg(0x84, 0x96); |
rulla | 0:101fbacf126f | 154 | WriteReg(0x85, 0xa3); |
rulla | 0:101fbacf126f | 155 | WriteReg(0x86, 0xaf); |
rulla | 0:101fbacf126f | 156 | WriteReg(0x87, 0xc4); |
rulla | 0:101fbacf126f | 157 | WriteReg(0x88, 0xd7); |
rulla | 0:101fbacf126f | 158 | WriteReg(0x89, 0xe8); |
rulla | 1:f5f5d7c979cf | 159 | |
rulla | 0:101fbacf126f | 160 | WriteReg(0x13, 0xe0); |
rulla | 0:101fbacf126f | 161 | WriteReg(0x00, 0x00); |
rulla | 0:101fbacf126f | 162 | WriteReg(0x10, 0x00); |
rulla | 1:f5f5d7c979cf | 163 | WriteReg(0x0d, 0x00); |
rulla | 1:f5f5d7c979cf | 164 | WriteReg(0x14, 0x28); |
rulla | 0:101fbacf126f | 165 | WriteReg(0xa5, 0x05); |
rulla | 0:101fbacf126f | 166 | WriteReg(0xab, 0x07); |
rulla | 1:f5f5d7c979cf | 167 | WriteReg(0x24, 0x75); |
rulla | 1:f5f5d7c979cf | 168 | WriteReg(0x25, 0x63); |
rulla | 1:f5f5d7c979cf | 169 | WriteReg(0x26, 0xA5); |
rulla | 0:101fbacf126f | 170 | WriteReg(0x9f, 0x78); |
rulla | 0:101fbacf126f | 171 | WriteReg(0xa0, 0x68); |
rulla | 0:101fbacf126f | 172 | WriteReg(0xa1, 0x03); |
rulla | 1:f5f5d7c979cf | 173 | WriteReg(0xa6, 0xdf); |
rulla | 1:f5f5d7c979cf | 174 | WriteReg(0xa7, 0xdf); |
rulla | 0:101fbacf126f | 175 | WriteReg(0xa8, 0xf0); |
rulla | 0:101fbacf126f | 176 | WriteReg(0xa9, 0x90); |
rulla | 0:101fbacf126f | 177 | WriteReg(0xaa, 0x94); |
rulla | 0:101fbacf126f | 178 | WriteReg(0x13, 0xe5); |
rulla | 1:f5f5d7c979cf | 179 | |
rulla | 0:101fbacf126f | 180 | WriteReg(0x0e, 0x61); |
rulla | 0:101fbacf126f | 181 | WriteReg(0x0f, 0x4b); |
rulla | 0:101fbacf126f | 182 | WriteReg(0x16, 0x02); |
rulla | 0:101fbacf126f | 183 | WriteReg(0x21, 0x02); |
rulla | 0:101fbacf126f | 184 | WriteReg(0x22, 0x91); |
rulla | 0:101fbacf126f | 185 | WriteReg(0x29, 0x07); |
rulla | 0:101fbacf126f | 186 | WriteReg(0x33, 0x0b); |
rulla | 0:101fbacf126f | 187 | WriteReg(0x35, 0x0b); |
rulla | 0:101fbacf126f | 188 | WriteReg(0x37, 0x1d); |
rulla | 0:101fbacf126f | 189 | WriteReg(0x38, 0x71); |
rulla | 0:101fbacf126f | 190 | WriteReg(0x39, 0x2a); |
rulla | 0:101fbacf126f | 191 | WriteReg(0x3c, 0x78); |
rulla | 0:101fbacf126f | 192 | WriteReg(0x4d, 0x40); |
rulla | 0:101fbacf126f | 193 | WriteReg(0x4e, 0x20); |
rulla | 0:101fbacf126f | 194 | WriteReg(0x69, 0x00); |
rulla | 1:f5f5d7c979cf | 195 | WriteReg(0x6b, 0x00); |
rulla | 1:f5f5d7c979cf | 196 | WriteReg(0x74, 0x19); |
rulla | 0:101fbacf126f | 197 | WriteReg(0x8d, 0x4f); |
rulla | 0:101fbacf126f | 198 | WriteReg(0x8e, 0x00); |
rulla | 0:101fbacf126f | 199 | WriteReg(0x8f, 0x00); |
rulla | 0:101fbacf126f | 200 | WriteReg(0x90, 0x00); |
rulla | 0:101fbacf126f | 201 | WriteReg(0x91, 0x00); |
rulla | 0:101fbacf126f | 202 | WriteReg(0x92, 0x00); |
rulla | 0:101fbacf126f | 203 | WriteReg(0x96, 0x00); |
rulla | 0:101fbacf126f | 204 | WriteReg(0x9a, 0x80); |
rulla | 0:101fbacf126f | 205 | WriteReg(0xb0, 0x84); |
rulla | 0:101fbacf126f | 206 | WriteReg(0xb1, 0x0c); |
rulla | 0:101fbacf126f | 207 | WriteReg(0xb2, 0x0e); |
rulla | 0:101fbacf126f | 208 | WriteReg(0xb3, 0x82); |
rulla | 0:101fbacf126f | 209 | WriteReg(0xb8, 0x0a); |
rulla | 1:f5f5d7c979cf | 210 | WriteReg(0x43, 0x14); |
rulla | 0:101fbacf126f | 211 | WriteReg(0x44, 0xf0); |
rulla | 0:101fbacf126f | 212 | WriteReg(0x45, 0x34); |
rulla | 0:101fbacf126f | 213 | WriteReg(0x46, 0x58); |
rulla | 0:101fbacf126f | 214 | WriteReg(0x47, 0x28); |
rulla | 0:101fbacf126f | 215 | WriteReg(0x48, 0x3a); |
rulla | 0:101fbacf126f | 216 | WriteReg(0x59, 0x88); |
rulla | 0:101fbacf126f | 217 | WriteReg(0x5a, 0x88); |
rulla | 0:101fbacf126f | 218 | WriteReg(0x5b, 0x44); |
rulla | 0:101fbacf126f | 219 | WriteReg(0x5c, 0x67); |
rulla | 0:101fbacf126f | 220 | WriteReg(0x5d, 0x49); |
rulla | 0:101fbacf126f | 221 | WriteReg(0x5e, 0x0e); |
rulla | 0:101fbacf126f | 222 | WriteReg(0x64, 0x04); |
rulla | 0:101fbacf126f | 223 | WriteReg(0x65, 0x20); |
rulla | 0:101fbacf126f | 224 | WriteReg(0x66, 0x05); |
rulla | 0:101fbacf126f | 225 | WriteReg(0x94, 0x04); |
rulla | 0:101fbacf126f | 226 | WriteReg(0x95, 0x08); |
rulla | 0:101fbacf126f | 227 | WriteReg(0x6c, 0x0a); |
rulla | 0:101fbacf126f | 228 | WriteReg(0x6d, 0x55); |
rulla | 0:101fbacf126f | 229 | WriteReg(0x6e, 0x11); |
rulla | 0:101fbacf126f | 230 | WriteReg(0x6f, 0x9f); |
rulla | 0:101fbacf126f | 231 | WriteReg(0x6a, 0x40); |
rulla | 0:101fbacf126f | 232 | WriteReg(0x01, 0x40); |
rulla | 0:101fbacf126f | 233 | WriteReg(0x02, 0x40); |
rulla | 0:101fbacf126f | 234 | WriteReg(0x13, 0xe7); |
rulla | 0:101fbacf126f | 235 | WriteReg(0x15, 0x02); |
rulla | 0:101fbacf126f | 236 | WriteReg(0x4f, 0x80); |
rulla | 0:101fbacf126f | 237 | WriteReg(0x50, 0x80); |
rulla | 0:101fbacf126f | 238 | WriteReg(0x51, 0x00); |
rulla | 0:101fbacf126f | 239 | WriteReg(0x52, 0x22); |
rulla | 0:101fbacf126f | 240 | WriteReg(0x53, 0x5e); |
rulla | 0:101fbacf126f | 241 | WriteReg(0x54, 0x80); |
rulla | 0:101fbacf126f | 242 | WriteReg(0x58, 0x9e); |
rulla | 0:101fbacf126f | 243 | WriteReg(0x41, 0x08); |
rulla | 0:101fbacf126f | 244 | WriteReg(0x3f, 0x00); |
rulla | 0:101fbacf126f | 245 | WriteReg(0x75, 0x05); |
rulla | 0:101fbacf126f | 246 | WriteReg(0x76, 0xe1); |
rulla | 0:101fbacf126f | 247 | WriteReg(0x4c, 0x00); |
rulla | 0:101fbacf126f | 248 | WriteReg(0x77, 0x01); |
rulla | 1:f5f5d7c979cf | 249 | WriteReg(0x3d, 0xc2); |
rulla | 0:101fbacf126f | 250 | WriteReg(0x4b, 0x09); |
rulla | 0:101fbacf126f | 251 | WriteReg(0xc9, 0x60); |
rulla | 0:101fbacf126f | 252 | WriteReg(0x41, 0x38); |
rulla | 0:101fbacf126f | 253 | WriteReg(0x56, 0x40); |
rulla | 0:101fbacf126f | 254 | WriteReg(0x34, 0x11); |
rulla | 0:101fbacf126f | 255 | WriteReg(0x3b, 0x02); |
rulla | 1:f5f5d7c979cf | 256 | WriteReg(0xa4, 0x89); |
rulla | 0:101fbacf126f | 257 | WriteReg(0x96, 0x00); |
rulla | 0:101fbacf126f | 258 | WriteReg(0x97, 0x30); |
rulla | 0:101fbacf126f | 259 | WriteReg(0x98, 0x20); |
rulla | 0:101fbacf126f | 260 | WriteReg(0x99, 0x30); |
rulla | 0:101fbacf126f | 261 | WriteReg(0x9a, 0x84); |
rulla | 0:101fbacf126f | 262 | WriteReg(0x9b, 0x29); |
rulla | 0:101fbacf126f | 263 | WriteReg(0x9c, 0x03); |
rulla | 0:101fbacf126f | 264 | WriteReg(0x9d, 0x4c); |
rulla | 0:101fbacf126f | 265 | WriteReg(0x9e, 0x3f); |
rulla | 0:101fbacf126f | 266 | WriteReg(0x78, 0x04); |
rulla | 0:101fbacf126f | 267 | WriteReg(0x79, 0x01); |
rulla | 0:101fbacf126f | 268 | WriteReg(0xc8, 0xf0); |
rulla | 0:101fbacf126f | 269 | WriteReg(0x79, 0x0f); |
rulla | 0:101fbacf126f | 270 | WriteReg(0xc8, 0x00); |
rulla | 0:101fbacf126f | 271 | WriteReg(0x79, 0x10); |
rulla | 0:101fbacf126f | 272 | WriteReg(0xc8, 0x7e); |
rulla | 0:101fbacf126f | 273 | WriteReg(0x79, 0x0a); |
rulla | 0:101fbacf126f | 274 | WriteReg(0xc8, 0x80); |
rulla | 0:101fbacf126f | 275 | WriteReg(0x79, 0x0b); |
rulla | 0:101fbacf126f | 276 | WriteReg(0xc8, 0x01); |
rulla | 0:101fbacf126f | 277 | WriteReg(0x79, 0x0c); |
rulla | 0:101fbacf126f | 278 | WriteReg(0xc8, 0x0f); |
rulla | 0:101fbacf126f | 279 | WriteReg(0x79, 0x0d); |
rulla | 0:101fbacf126f | 280 | WriteReg(0xc8, 0x20); |
rulla | 0:101fbacf126f | 281 | WriteReg(0x79, 0x09); |
rulla | 0:101fbacf126f | 282 | WriteReg(0xc8, 0x80); |
rulla | 0:101fbacf126f | 283 | WriteReg(0x79, 0x02); |
rulla | 0:101fbacf126f | 284 | WriteReg(0xc8, 0xc0); |
rulla | 0:101fbacf126f | 285 | WriteReg(0x79, 0x03); |
rulla | 0:101fbacf126f | 286 | WriteReg(0xc8, 0x40); |
rulla | 0:101fbacf126f | 287 | WriteReg(0x79, 0x05); |
rulla | 0:101fbacf126f | 288 | WriteReg(0xc8, 0x30); |
rulla | 0:101fbacf126f | 289 | WriteReg(0x79, 0x26); |
rulla | 0:101fbacf126f | 290 | WriteReg(0x09, 0x03); |
rulla | 0:101fbacf126f | 291 | WriteReg(0x3b, 0x42); |
rulla | 1:f5f5d7c979cf | 292 | } |
rulla | 1:f5f5d7c979cf | 293 | |
rulla | 1:f5f5d7c979cf | 294 | if(SIZEX==160) { |
rulla | 1:f5f5d7c979cf | 295 | WriteReg(REG_COM7,0x04) ; |
rulla | 1:f5f5d7c979cf | 296 | WriteReg(REG_COM3,0x04) ; |
rulla | 1:f5f5d7c979cf | 297 | WriteReg(REG_COM14, 0x1a); |
rulla | 1:f5f5d7c979cf | 298 | WriteReg(SCALING_DCWCTR,0x22); |
rulla | 1:f5f5d7c979cf | 299 | WriteReg(SCALING_PCLK_DIV,0xf2); |
rulla | 1:f5f5d7c979cf | 300 | WriteReg(SCALING_PCLK_DELAY,0x02); |
rulla | 1:f5f5d7c979cf | 301 | } |
rulla | 1:f5f5d7c979cf | 302 | |
rulla | 1:f5f5d7c979cf | 303 | WriteReg(REG_COM1,0x0) ; |
rulla | 1:f5f5d7c979cf | 304 | WriteReg(REG_COM8,0xc7) ; |
rulla | 1:f5f5d7c979cf | 305 | WriteReg(REG_COM9,0x7a) ; |
rulla | 1:f5f5d7c979cf | 306 | WriteReg(REG_COM10,0x2) ; |
rulla | 1:f5f5d7c979cf | 307 | WriteReg(REG_COM11,0x10) ;//1A //0x90 |
rulla | 1:f5f5d7c979cf | 308 | WriteReg(REG_COM13, 0x88); |
rulla | 1:f5f5d7c979cf | 309 | WriteReg(REG_COM15, 0xd0); // Set RGB 565? |
rulla | 1:f5f5d7c979cf | 310 | WriteReg(REG_EDGE,0x04) ; |
rulla | 1:f5f5d7c979cf | 311 | WriteReg(REG_RGB444, 0x00); // Disable RGB 444? |
rulla | 1:f5f5d7c979cf | 312 | // WriteReg(REG_TSLB,0x05);//Forza YUV |
rulla | 1:f5f5d7c979cf | 313 | |
rulla | 1:f5f5d7c979cf | 314 | ///////// |
rulla | 1:f5f5d7c979cf | 315 | WriteReg(REG_MVFP,0x27) ; |
rulla | 1:f5f5d7c979cf | 316 | |
rulla | 1:f5f5d7c979cf | 317 | /* |
rulla | 1:f5f5d7c979cf | 318 | WriteReg( REG_COM5, 0x61 ); WriteReg( REG_COM6, 0x4b ); |
rulla | 1:f5f5d7c979cf | 319 | WriteReg( 0x16, 0x02 ); |
rulla | 1:f5f5d7c979cf | 320 | WriteReg( 0x21, 0x02 ); WriteReg( 0x22, 0x91 ); |
rulla | 1:f5f5d7c979cf | 321 | WriteReg( 0x29, 0x07 ); WriteReg( 0x33, 0x0b ); |
rulla | 1:f5f5d7c979cf | 322 | WriteReg( 0x35, 0x0b ); WriteReg( 0x37, 0x1d ); |
rulla | 1:f5f5d7c979cf | 323 | WriteReg( 0x38, 0x71 ); WriteReg( 0x39, 0x2a ); |
rulla | 1:f5f5d7c979cf | 324 | WriteReg( REG_COM12, 0x78 ); WriteReg( 0x4d, 0x40 ); |
rulla | 1:f5f5d7c979cf | 325 | WriteReg( 0x4e, 0x20 ); WriteReg( REG_GFIX, 0 ); |
rulla | 1:f5f5d7c979cf | 326 | WriteReg( 0x6b, 0x4a ); WriteReg( 0x74, 0x10 ); |
rulla | 1:f5f5d7c979cf | 327 | WriteReg( 0x8d, 0x4f ); WriteReg( 0x8e, 0 ); |
rulla | 1:f5f5d7c979cf | 328 | WriteReg( 0x8f, 0 ); WriteReg( 0x90, 0 ); |
rulla | 1:f5f5d7c979cf | 329 | WriteReg( 0x91, 0 ); WriteReg( 0x96, 0 ); |
rulla | 1:f5f5d7c979cf | 330 | WriteReg( 0x9a, 0 ); WriteReg( 0xb0, 0x84 ); |
rulla | 1:f5f5d7c979cf | 331 | WriteReg( 0xb1, 0x0c ); WriteReg( 0xb2, 0x0e ); |
rulla | 1:f5f5d7c979cf | 332 | WriteReg( 0xb3, 0x82 ); WriteReg( 0xb8, 0x0a ); |
rulla | 1:f5f5d7c979cf | 333 | */ |
rulla | 1:f5f5d7c979cf | 334 | /* |
rulla | 1:f5f5d7c979cf | 335 | // COLOR SETTING |
rulla | 1:f5f5d7c979cf | 336 | WriteReg(0x4f,0x80); |
rulla | 1:f5f5d7c979cf | 337 | WriteReg(0x50,0x80); |
rulla | 1:f5f5d7c979cf | 338 | WriteReg(0x51,0x00); |
rulla | 1:f5f5d7c979cf | 339 | WriteReg(0x52,0x22); |
rulla | 1:f5f5d7c979cf | 340 | WriteReg(0x53,0x5e); |
rulla | 1:f5f5d7c979cf | 341 | WriteReg(0x54,0x80); |
rulla | 1:f5f5d7c979cf | 342 | WriteReg(0x56,0x40); |
rulla | 1:f5f5d7c979cf | 343 | WriteReg(0x58,0x9e); |
rulla | 1:f5f5d7c979cf | 344 | WriteReg(0x59,0x88); |
rulla | 1:f5f5d7c979cf | 345 | WriteReg(0x5a,0x88); |
rulla | 1:f5f5d7c979cf | 346 | WriteReg(0x5b,0x44); |
rulla | 1:f5f5d7c979cf | 347 | WriteReg(0x5c,0x67); |
rulla | 1:f5f5d7c979cf | 348 | WriteReg(0x5d,0x49); |
rulla | 1:f5f5d7c979cf | 349 | WriteReg(0x5e,0x0e); |
rulla | 1:f5f5d7c979cf | 350 | WriteReg(0x69,0x00); |
rulla | 1:f5f5d7c979cf | 351 | WriteReg(0x6a,0x40); |
rulla | 1:f5f5d7c979cf | 352 | WriteReg(0x6b,0x0a); |
rulla | 1:f5f5d7c979cf | 353 | WriteReg(0x6c,0x0a); |
rulla | 1:f5f5d7c979cf | 354 | WriteReg(0x6d,0x55); |
rulla | 1:f5f5d7c979cf | 355 | WriteReg(0x6e,0x11); |
rulla | 1:f5f5d7c979cf | 356 | WriteReg(0x6f,0x9f); |
rulla | 1:f5f5d7c979cf | 357 | |
rulla | 1:f5f5d7c979cf | 358 | WriteReg(0xb0,0x84); |
rulla | 1:f5f5d7c979cf | 359 | ////////// |
rulla | 1:f5f5d7c979cf | 360 | */ |
rulla | 1:f5f5d7c979cf | 361 | |
rulla | 1:f5f5d7c979cf | 362 | /* |
rulla | 1:f5f5d7c979cf | 363 | WriteReg(0x7a, 0x20); |
rulla | 1:f5f5d7c979cf | 364 | WriteReg(0x7b, 0x1c); |
rulla | 1:f5f5d7c979cf | 365 | WriteReg(0x7c, 0x28); |
rulla | 1:f5f5d7c979cf | 366 | WriteReg(0x7d, 0x3c); |
rulla | 1:f5f5d7c979cf | 367 | WriteReg(0x7e, 0x5a); |
rulla | 1:f5f5d7c979cf | 368 | WriteReg(0x7f, 0x68); |
rulla | 1:f5f5d7c979cf | 369 | WriteReg(0x80, 0x76); |
rulla | 1:f5f5d7c979cf | 370 | WriteReg(0x81, 0x80); |
rulla | 1:f5f5d7c979cf | 371 | WriteReg(0x82, 0x88); |
rulla | 1:f5f5d7c979cf | 372 | WriteReg(0x83, 0x8f); |
rulla | 1:f5f5d7c979cf | 373 | WriteReg(0x84, 0x96); |
rulla | 1:f5f5d7c979cf | 374 | WriteReg(0x85, 0xa3); |
rulla | 1:f5f5d7c979cf | 375 | WriteReg(0x86, 0xaf); |
rulla | 1:f5f5d7c979cf | 376 | WriteReg(0x87, 0xc4); |
rulla | 1:f5f5d7c979cf | 377 | WriteReg(0x88, 0xd7); |
rulla | 1:f5f5d7c979cf | 378 | WriteReg(0x89, 0xe8); |
rulla | 1:f5f5d7c979cf | 379 | |
rulla | 1:f5f5d7c979cf | 380 | WriteReg(0x13, 0xe0); |
rulla | 1:f5f5d7c979cf | 381 | WriteReg(0x00, 0x00); |
rulla | 1:f5f5d7c979cf | 382 | WriteReg(0x10, 0x00); |
rulla | 1:f5f5d7c979cf | 383 | WriteReg(0x0d, 0x40); |
rulla | 1:f5f5d7c979cf | 384 | WriteReg(0x14, 0x18); |
rulla | 1:f5f5d7c979cf | 385 | WriteReg(0xa5, 0x05); |
rulla | 1:f5f5d7c979cf | 386 | WriteReg(0xab, 0x07); |
rulla | 1:f5f5d7c979cf | 387 | WriteReg(0x24, 0x95); |
rulla | 1:f5f5d7c979cf | 388 | WriteReg(0x25, 0x33); |
rulla | 1:f5f5d7c979cf | 389 | WriteReg(0x26, 0xe3); |
rulla | 1:f5f5d7c979cf | 390 | WriteReg(0x9f, 0x78); |
rulla | 1:f5f5d7c979cf | 391 | WriteReg(0xa0, 0x68); |
rulla | 1:f5f5d7c979cf | 392 | WriteReg(0xa1, 0x03); |
rulla | 1:f5f5d7c979cf | 393 | WriteReg(0xa6, 0xd8); |
rulla | 1:f5f5d7c979cf | 394 | WriteReg(0xa7, 0xd8); |
rulla | 1:f5f5d7c979cf | 395 | WriteReg(0xa8, 0xf0); |
rulla | 1:f5f5d7c979cf | 396 | WriteReg(0xa9, 0x90); |
rulla | 1:f5f5d7c979cf | 397 | WriteReg(0xaa, 0x94); |
rulla | 1:f5f5d7c979cf | 398 | WriteReg(0x13, 0xe5); |
rulla | 1:f5f5d7c979cf | 399 | |
rulla | 1:f5f5d7c979cf | 400 | WriteReg(0x0e, 0x61); |
rulla | 1:f5f5d7c979cf | 401 | WriteReg(0x0f, 0x4b); |
rulla | 1:f5f5d7c979cf | 402 | WriteReg(0x16, 0x02); |
rulla | 1:f5f5d7c979cf | 403 | |
rulla | 1:f5f5d7c979cf | 404 | WriteReg(0x21, 0x02); |
rulla | 1:f5f5d7c979cf | 405 | WriteReg(0x22, 0x91); |
rulla | 1:f5f5d7c979cf | 406 | WriteReg(0x29, 0x07); |
rulla | 1:f5f5d7c979cf | 407 | WriteReg(0x33, 0x0b); |
rulla | 1:f5f5d7c979cf | 408 | WriteReg(0x35, 0x0b); |
rulla | 1:f5f5d7c979cf | 409 | WriteReg(0x37, 0x1d); |
rulla | 1:f5f5d7c979cf | 410 | WriteReg(0x38, 0x71); |
rulla | 1:f5f5d7c979cf | 411 | WriteReg(0x39, 0x2a); |
rulla | 1:f5f5d7c979cf | 412 | WriteReg(0x3c, 0x78); |
rulla | 1:f5f5d7c979cf | 413 | WriteReg(0x4d, 0x40); |
rulla | 1:f5f5d7c979cf | 414 | WriteReg(0x4e, 0x20); |
rulla | 1:f5f5d7c979cf | 415 | WriteReg(0x69, 0x00); |
rulla | 1:f5f5d7c979cf | 416 | |
rulla | 1:f5f5d7c979cf | 417 | WriteReg(0x74, 0x10); |
rulla | 1:f5f5d7c979cf | 418 | WriteReg(0x8d, 0x4f); |
rulla | 1:f5f5d7c979cf | 419 | WriteReg(0x8e, 0x00); |
rulla | 1:f5f5d7c979cf | 420 | WriteReg(0x8f, 0x00); |
rulla | 1:f5f5d7c979cf | 421 | WriteReg(0x90, 0x00); |
rulla | 1:f5f5d7c979cf | 422 | WriteReg(0x91, 0x00); |
rulla | 1:f5f5d7c979cf | 423 | WriteReg(0x92, 0x00); |
rulla | 1:f5f5d7c979cf | 424 | WriteReg(0x93, 0x00); |
rulla | 1:f5f5d7c979cf | 425 | |
rulla | 1:f5f5d7c979cf | 426 | |
rulla | 1:f5f5d7c979cf | 427 | WriteReg(0x96, 0x00); |
rulla | 1:f5f5d7c979cf | 428 | WriteReg(0x9a, 0x80); |
rulla | 1:f5f5d7c979cf | 429 | WriteReg(0xb0, 0x84); |
rulla | 1:f5f5d7c979cf | 430 | WriteReg(0xb1, 0x0c); |
rulla | 1:f5f5d7c979cf | 431 | WriteReg(0xb2, 0x0e); |
rulla | 1:f5f5d7c979cf | 432 | WriteReg(0xb3, 0x82); |
rulla | 1:f5f5d7c979cf | 433 | WriteReg(0xb8, 0x0a); |
rulla | 1:f5f5d7c979cf | 434 | |
rulla | 1:f5f5d7c979cf | 435 | WriteReg(0x43, 0x0a); |
rulla | 1:f5f5d7c979cf | 436 | WriteReg(0x44, 0xf0); |
rulla | 1:f5f5d7c979cf | 437 | WriteReg(0x45, 0x34); |
rulla | 1:f5f5d7c979cf | 438 | WriteReg(0x46, 0x58); |
rulla | 1:f5f5d7c979cf | 439 | WriteReg(0x47, 0x28); |
rulla | 1:f5f5d7c979cf | 440 | WriteReg(0x48, 0x3a); |
rulla | 1:f5f5d7c979cf | 441 | WriteReg(0x59, 0x88); |
rulla | 1:f5f5d7c979cf | 442 | WriteReg(0x5a, 0x88); |
rulla | 1:f5f5d7c979cf | 443 | WriteReg(0x5b, 0x44); |
rulla | 1:f5f5d7c979cf | 444 | WriteReg(0x5c, 0x67); |
rulla | 1:f5f5d7c979cf | 445 | WriteReg(0x5d, 0x49); |
rulla | 1:f5f5d7c979cf | 446 | WriteReg(0x5e, 0x0e); |
rulla | 1:f5f5d7c979cf | 447 | WriteReg(0x64, 0x04); |
rulla | 1:f5f5d7c979cf | 448 | WriteReg(0x65, 0x20); |
rulla | 1:f5f5d7c979cf | 449 | WriteReg(0x66, 0x05); |
rulla | 1:f5f5d7c979cf | 450 | WriteReg(0x94, 0x04); |
rulla | 1:f5f5d7c979cf | 451 | WriteReg(0x95, 0x08); |
rulla | 1:f5f5d7c979cf | 452 | |
rulla | 1:f5f5d7c979cf | 453 | WriteReg(0x6c, 0x0a); |
rulla | 1:f5f5d7c979cf | 454 | WriteReg(0x6d, 0x55); |
rulla | 1:f5f5d7c979cf | 455 | WriteReg(0x6e, 0x11); |
rulla | 1:f5f5d7c979cf | 456 | WriteReg(0x6f, 0x9f); |
rulla | 1:f5f5d7c979cf | 457 | WriteReg(0x6a, 0x40); |
rulla | 1:f5f5d7c979cf | 458 | WriteReg(0x01, 0x40); |
rulla | 1:f5f5d7c979cf | 459 | WriteReg(0x02, 0x40); |
rulla | 1:f5f5d7c979cf | 460 | WriteReg(0x13, 0xe7); |
rulla | 1:f5f5d7c979cf | 461 | // WriteReg(0x15, 0x02); |
rulla | 1:f5f5d7c979cf | 462 | |
rulla | 1:f5f5d7c979cf | 463 | WriteReg(0x4f, 0xb3); |
rulla | 1:f5f5d7c979cf | 464 | WriteReg(0x50, 0xb3); |
rulla | 1:f5f5d7c979cf | 465 | WriteReg(0x51, 0x00); |
rulla | 1:f5f5d7c979cf | 466 | WriteReg(0x52, 0x3d); |
rulla | 1:f5f5d7c979cf | 467 | WriteReg(0x53, 0xa7); |
rulla | 1:f5f5d7c979cf | 468 | WriteReg(0x54, 0xe4); |
rulla | 1:f5f5d7c979cf | 469 | WriteReg(0x58, 0x9e); |
rulla | 1:f5f5d7c979cf | 470 | |
rulla | 1:f5f5d7c979cf | 471 | WriteReg(0x41, 0x08); |
rulla | 1:f5f5d7c979cf | 472 | WriteReg(0x3f, 0x00); |
rulla | 1:f5f5d7c979cf | 473 | WriteReg(0x75, 0x05); |
rulla | 1:f5f5d7c979cf | 474 | WriteReg(0x76, 0xe1); |
rulla | 1:f5f5d7c979cf | 475 | WriteReg(0x4c, 0x00); |
rulla | 1:f5f5d7c979cf | 476 | WriteReg(0x77, 0x01); |
rulla | 1:f5f5d7c979cf | 477 | // WriteReg(0x3d, 0xc1); |
rulla | 1:f5f5d7c979cf | 478 | WriteReg(0x4b, 0x09); |
rulla | 1:f5f5d7c979cf | 479 | WriteReg(0xc9, 0x60); |
rulla | 1:f5f5d7c979cf | 480 | WriteReg(0x41, 0x38); |
rulla | 1:f5f5d7c979cf | 481 | WriteReg(0x56, 0x40); |
rulla | 1:f5f5d7c979cf | 482 | |
rulla | 1:f5f5d7c979cf | 483 | WriteReg(0x34, 0x11); |
rulla | 1:f5f5d7c979cf | 484 | WriteReg(0x3b, 0x02); |
rulla | 1:f5f5d7c979cf | 485 | WriteReg(0xa4, 0x88); |
rulla | 1:f5f5d7c979cf | 486 | WriteReg(0x96, 0x00); |
rulla | 1:f5f5d7c979cf | 487 | WriteReg(0x97, 0x30); |
rulla | 1:f5f5d7c979cf | 488 | WriteReg(0x98, 0x20); |
rulla | 1:f5f5d7c979cf | 489 | WriteReg(0x99, 0x30); |
rulla | 1:f5f5d7c979cf | 490 | WriteReg(0x9a, 0x84); |
rulla | 1:f5f5d7c979cf | 491 | WriteReg(0x9b, 0x29); |
rulla | 1:f5f5d7c979cf | 492 | WriteReg(0x9c, 0x03); |
rulla | 1:f5f5d7c979cf | 493 | WriteReg(0x9d, 0x4c); |
rulla | 1:f5f5d7c979cf | 494 | WriteReg(0x9e, 0x3f); |
rulla | 1:f5f5d7c979cf | 495 | WriteReg(0x78, 0x04); |
rulla | 1:f5f5d7c979cf | 496 | |
rulla | 1:f5f5d7c979cf | 497 | WriteReg(0x79, 0x01); |
rulla | 1:f5f5d7c979cf | 498 | WriteReg(0xc8, 0xf0); |
rulla | 1:f5f5d7c979cf | 499 | WriteReg(0x79, 0x0f); |
rulla | 1:f5f5d7c979cf | 500 | WriteReg(0xc8, 0x00); |
rulla | 1:f5f5d7c979cf | 501 | WriteReg(0x79, 0x10); |
rulla | 1:f5f5d7c979cf | 502 | WriteReg(0xc8, 0x7e); |
rulla | 1:f5f5d7c979cf | 503 | WriteReg(0x79, 0x0a); |
rulla | 1:f5f5d7c979cf | 504 | WriteReg(0xc8, 0x80); |
rulla | 1:f5f5d7c979cf | 505 | WriteReg(0x79, 0x0b); |
rulla | 1:f5f5d7c979cf | 506 | WriteReg(0xc8, 0x01); |
rulla | 1:f5f5d7c979cf | 507 | WriteReg(0x79, 0x0c); |
rulla | 1:f5f5d7c979cf | 508 | WriteReg(0xc8, 0x0f); |
rulla | 1:f5f5d7c979cf | 509 | WriteReg(0x79, 0x0d); |
rulla | 1:f5f5d7c979cf | 510 | WriteReg(0xc8, 0x20); |
rulla | 1:f5f5d7c979cf | 511 | WriteReg(0x79, 0x09); |
rulla | 1:f5f5d7c979cf | 512 | WriteReg(0xc8, 0x80); |
rulla | 1:f5f5d7c979cf | 513 | WriteReg(0x79, 0x02); |
rulla | 1:f5f5d7c979cf | 514 | WriteReg(0xc8, 0xc0); |
rulla | 1:f5f5d7c979cf | 515 | WriteReg(0x79, 0x03); |
rulla | 1:f5f5d7c979cf | 516 | WriteReg(0xc8, 0x40); |
rulla | 1:f5f5d7c979cf | 517 | WriteReg(0x79, 0x05); |
rulla | 1:f5f5d7c979cf | 518 | WriteReg(0xc8, 0x30); |
rulla | 1:f5f5d7c979cf | 519 | WriteReg(0x79, 0x26); |
rulla | 1:f5f5d7c979cf | 520 | WriteReg(0x09, 0x03); |
rulla | 1:f5f5d7c979cf | 521 | WriteReg(0x3b, 0x42); |
rulla | 1:f5f5d7c979cf | 522 | ///////////// |
rulla | 1:f5f5d7c979cf | 523 | */ |
rulla | 1:f5f5d7c979cf | 524 | |
rulla | 1:f5f5d7c979cf | 525 | /* |
rulla | 1:f5f5d7c979cf | 526 | WriteReg(0x4f, 0x80); |
rulla | 1:f5f5d7c979cf | 527 | WriteReg(0x50, 0x80); |
rulla | 1:f5f5d7c979cf | 528 | WriteReg(0x51, 0x00); |
rulla | 1:f5f5d7c979cf | 529 | WriteReg(0x52, 0x22); |
rulla | 1:f5f5d7c979cf | 530 | WriteReg(0x53, 0x5e); |
rulla | 1:f5f5d7c979cf | 531 | WriteReg(0x54, 0x80); |
rulla | 1:f5f5d7c979cf | 532 | */ |
rulla | 1:f5f5d7c979cf | 533 | |
rulla | 1:f5f5d7c979cf | 534 | /* |
rulla | 1:f5f5d7c979cf | 535 | WriteReg( REG_COM9, 0x38 ); |
rulla | 1:f5f5d7c979cf | 536 | WriteReg( 0x4f, 0xb3 ); |
rulla | 1:f5f5d7c979cf | 537 | WriteReg( 0x50, 0xb3 ); |
rulla | 1:f5f5d7c979cf | 538 | WriteReg( 0x51, 0 ); |
rulla | 1:f5f5d7c979cf | 539 | WriteReg( 0x52, 0x3d ); |
rulla | 1:f5f5d7c979cf | 540 | WriteReg( 0x53, 0xa7); |
rulla | 1:f5f5d7c979cf | 541 | WriteReg( 0x54, 0xe4 ); |
rulla | 1:f5f5d7c979cf | 542 | WriteReg( REG_COM13, COM13_GAMMA|COM13_UVSAT ); |
rulla | 1:f5f5d7c979cf | 543 | */ |
rulla | 1:f5f5d7c979cf | 544 | // WriteReg( REG_COM13, COM13_GAMMA|COM13_UVSAT ); |
rulla | 1:f5f5d7c979cf | 545 | //WriteReg(REG_COM8,0x8f) ; |
rulla | 1:f5f5d7c979cf | 546 | // WriteReg(REG_COM7,0x04) ; |
rulla | 1:f5f5d7c979cf | 547 | // WriteReg(REG_CLKRC,0x80); |
rulla | 1:f5f5d7c979cf | 548 | WriteReg(0xff, 0xff); /* END MARKER */ |
rulla | 1:f5f5d7c979cf | 549 | |
rulla | 1:f5f5d7c979cf | 550 | printf("Init\n"); |
rulla | 1:f5f5d7c979cf | 551 | } |
rulla | 0:101fbacf126f | 552 | |
rulla | 0:101fbacf126f | 553 | |
rulla | 0:101fbacf126f | 554 | |
rulla | 1:f5f5d7c979cf | 555 | // vsync handler |
rulla | 1:f5f5d7c979cf | 556 | void OV7670::VsyncHandler(void) |
rulla | 1:f5f5d7c979cf | 557 | { |
rulla | 1:f5f5d7c979cf | 558 | // Capture Enable |
rulla | 1:f5f5d7c979cf | 559 | if (CaptureReq) { |
rulla | 1:f5f5d7c979cf | 560 | wen = 1 ; |
rulla | 1:f5f5d7c979cf | 561 | Done = false ; |
rulla | 1:f5f5d7c979cf | 562 | CaptureReq = false ; |
rulla | 1:f5f5d7c979cf | 563 | } else { |
rulla | 1:f5f5d7c979cf | 564 | wen = 0 ; |
rulla | 1:f5f5d7c979cf | 565 | if (Busy) { |
rulla | 1:f5f5d7c979cf | 566 | Busy = false ; |
rulla | 1:f5f5d7c979cf | 567 | Done = true ; |
rulla | 0:101fbacf126f | 568 | } |
rulla | 0:101fbacf126f | 569 | } |
rulla | 1:f5f5d7c979cf | 570 | |
rulla | 1:f5f5d7c979cf | 571 | // Hline Counter |
rulla | 1:f5f5d7c979cf | 572 | LastLines = LineCounter ; |
rulla | 1:f5f5d7c979cf | 573 | LineCounter = 0 ; |
rulla | 1:f5f5d7c979cf | 574 | } |
rulla | 1:f5f5d7c979cf | 575 | |
rulla | 1:f5f5d7c979cf | 576 | |
rulla | 1:f5f5d7c979cf | 577 | // Data Read |
rulla | 1:f5f5d7c979cf | 578 | int OV7670::ReadOneByte(void) |
rulla | 1:f5f5d7c979cf | 579 | { |
rulla | 1:f5f5d7c979cf | 580 | int b1; |
rulla | 1:f5f5d7c979cf | 581 | rclk = 1; |
rulla | 1:f5f5d7c979cf | 582 | // result = dataP; |
rulla | 1:f5f5d7c979cf | 583 | |
rulla | 1:f5f5d7c979cf | 584 | /* result= ((result&0x0f)|(((result)& 0xf00)>>4))&0xff; |
rulla | 1:f5f5d7c979cf | 585 | // int top=((result&0x01) << 7) | ((result&0x02) << 5) | ((result&0x04) << 3) | ((result&0x08) << 1) | ((result&0x10) >>1) | ((result&0x20) <<3) | ((result&0x40) >>5) | ((result&0x80) >>7); |
rulla | 1:f5f5d7c979cf | 586 | int top=((result&0x01) << 7) | ((result&0x02) << 5) | ((result&0x04) << 3) | ((result&0x08) << 1) |
rulla | 1:f5f5d7c979cf | 587 | | ((result&0x10) >>1) | ((result&0x20) <<3) | ((result&0x40) >>5) | ((result&0x80) >>7); |
rulla | 1:f5f5d7c979cf | 588 | */ |
rulla | 1:f5f5d7c979cf | 589 | |
rulla | 1:f5f5d7c979cf | 590 | /* |
rulla | 1:f5f5d7c979cf | 591 | int r,r1,r2; |
rulla | 1:f5f5d7c979cf | 592 | rclk = 1 ; |
rulla | 1:f5f5d7c979cf | 593 | r = dataP ; |
rulla | 0:101fbacf126f | 594 | rclk = 0 ; |
rulla | 1:f5f5d7c979cf | 595 | r1 = r & 0x07800000 ; |
rulla | 1:f5f5d7c979cf | 596 | r1 = r1 >> (26-7-0) ; // bit26 to bit7 |
rulla | 1:f5f5d7c979cf | 597 | r2 = r & 0x00078000 ; |
rulla | 1:f5f5d7c979cf | 598 | r2 = r2 >> (18-3-0) ; // bit18 to bit3 |
rulla | 1:f5f5d7c979cf | 599 | return r1+r2; |
rulla | 1:f5f5d7c979cf | 600 | */ |
rulla | 1:f5f5d7c979cf | 601 | |
rulla | 1:f5f5d7c979cf | 602 | b1=(((dataP&0x07800000)>>19)|((dataP&0x078000)>>15)); |
rulla | 1:f5f5d7c979cf | 603 | rclk = 0; |
rulla | 1:f5f5d7c979cf | 604 | return b1; |
rulla | 1:f5f5d7c979cf | 605 | } |
rulla | 1:f5f5d7c979cf | 606 | |
rulla | 1:f5f5d7c979cf | 607 | int OV7670::ReadOneWord(void) |
rulla | 1:f5f5d7c979cf | 608 | { |
rulla | 1:f5f5d7c979cf | 609 | int r,r1,r2,r3,r4 ; |
rulla | 1:f5f5d7c979cf | 610 | rclk = 1 ; |
rulla | 1:f5f5d7c979cf | 611 | r = dataP ; |
rulla | 1:f5f5d7c979cf | 612 | rclk = 0 ; |
rulla | 1:f5f5d7c979cf | 613 | r1 = r & 0x07800000 ; |
rulla | 1:f5f5d7c979cf | 614 | r1 = r1 >> (26-7-0) ; // bit26 to bit7 |
rulla | 1:f5f5d7c979cf | 615 | r2 = r & 0x00078000 ; |
rulla | 1:f5f5d7c979cf | 616 | r2 = r2 >> (18-3-0) ; // bit18 to bit3 |
rulla | 1:f5f5d7c979cf | 617 | rclk = 1 ; |
rulla | 1:f5f5d7c979cf | 618 | r = dataP ; |
rulla | 1:f5f5d7c979cf | 619 | rclk = 0 ; |
rulla | 1:f5f5d7c979cf | 620 | r3 = r & 0x07800000 ; |
rulla | 1:f5f5d7c979cf | 621 | r3 = r3 >> (26-7-8) ; // bit26 to bit7 |
rulla | 1:f5f5d7c979cf | 622 | r4 = r & 0x00078000 ; |
rulla | 1:f5f5d7c979cf | 623 | r4 = r4 >> (18-3-8) ; // bit18 to bit3 |
rulla | 1:f5f5d7c979cf | 624 | return r4+r3+r2+r1 ; |
rulla | 1:f5f5d7c979cf | 625 | } |
rulla | 1:f5f5d7c979cf | 626 | |
rulla | 1:f5f5d7c979cf | 627 | |
rulla | 1:f5f5d7c979cf | 628 | // Data Start |
rulla | 1:f5f5d7c979cf | 629 | void OV7670::ReadStart(void) |
rulla | 1:f5f5d7c979cf | 630 | { |
rulla | 1:f5f5d7c979cf | 631 | rrst = 0 ; |
rulla | 1:f5f5d7c979cf | 632 | oe = 0 ; |
rulla | 1:f5f5d7c979cf | 633 | wait_us(1) ; |
rulla | 1:f5f5d7c979cf | 634 | rclk = 0 ; |
rulla | 1:f5f5d7c979cf | 635 | wait_us(1) ; |
rulla | 1:f5f5d7c979cf | 636 | rclk = 1 ; |
rulla | 1:f5f5d7c979cf | 637 | wait_us(1) ; |
rulla | 1:f5f5d7c979cf | 638 | rrst = 1 ; |
rulla | 1:f5f5d7c979cf | 639 | } |
rulla | 1:f5f5d7c979cf | 640 | |
rulla | 1:f5f5d7c979cf | 641 | // Data Stop |
rulla | 1:f5f5d7c979cf | 642 | void OV7670::ReadStop(void) |
rulla | 1:f5f5d7c979cf | 643 | { |
rulla | 1:f5f5d7c979cf | 644 | oe = 1 ; |
rulla | 1:f5f5d7c979cf | 645 | ReadOneByte() ; |
rulla | 1:f5f5d7c979cf | 646 | rclk = 1 ; |
rulla | 1:f5f5d7c979cf | 647 | } |