kao yi
/
bxxxxxx
sssssss
main.cpp@0:61a9b89ce451, 2014-07-09 (annotated)
- Committer:
- backman
- Date:
- Wed Jul 09 07:42:47 2014 +0000
- Revision:
- 0:61a9b89ce451
wang
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
backman | 0:61a9b89ce451 | 1 | // |
backman | 0:61a9b89ce451 | 2 | // OV7670 + FIFO AL422B camera board test |
backman | 0:61a9b89ce451 | 3 | // |
backman | 0:61a9b89ce451 | 4 | #include "mbed.h" |
backman | 0:61a9b89ce451 | 5 | #include "ov7670.h" |
backman | 0:61a9b89ce451 | 6 | |
backman | 0:61a9b89ce451 | 7 | //OV7670 camera(PTE0,PTE1,PTD6,PTD7,PTE31,PTC17,PTC16,PTC13,PTC12,PTC6,PTC5,PTC4,PTC3,PTB8,PTB9,PTB10); |
backman | 0:61a9b89ce451 | 8 | /*W*///OV7670 camera(PTE0,PTE1,PTD6,PTA17,PTD7,PTC17,PTC16,PTC13,PTC12,PTC6,PTC5,PTC4,PTC3,PTB8,PTB9,PTB10); |
backman | 0:61a9b89ce451 | 9 | OV7670 camera(PTE0,PTE1,PTD6,PTD7,PTE31,PortC,0x1e3c,PTB8,PTB9,PTB10); |
backman | 0:61a9b89ce451 | 10 | Serial pc(USBTX,USBRX) ; |
backman | 0:61a9b89ce451 | 11 | |
backman | 0:61a9b89ce451 | 12 | |
backman | 0:61a9b89ce451 | 13 | #define SIZEX (160) |
backman | 0:61a9b89ce451 | 14 | #define SIZEY (120) |
backman | 0:61a9b89ce451 | 15 | |
backman | 0:61a9b89ce451 | 16 | int main() { |
backman | 0:61a9b89ce451 | 17 | int i ; |
backman | 0:61a9b89ce451 | 18 | pc.baud(115200) ; |
backman | 0:61a9b89ce451 | 19 | pc.printf("Camera resetting..\r\n") ; |
backman | 0:61a9b89ce451 | 20 | |
backman | 0:61a9b89ce451 | 21 | camera.Reset() ; |
backman | 0:61a9b89ce451 | 22 | |
backman | 0:61a9b89ce451 | 23 | pc.printf("Before Init...\r\n") ; |
backman | 0:61a9b89ce451 | 24 | pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F") ; |
backman | 0:61a9b89ce451 | 25 | for (i=0;i<OV7670_REGMAX;i++) { |
backman | 0:61a9b89ce451 | 26 | int data ; |
backman | 0:61a9b89ce451 | 27 | data = camera.ReadReg(i) ; // READ REG |
backman | 0:61a9b89ce451 | 28 | if ((i & 0x0F) == 0) { |
backman | 0:61a9b89ce451 | 29 | pc.printf("\r\n%02X : ",i) ; |
backman | 0:61a9b89ce451 | 30 | } |
backman | 0:61a9b89ce451 | 31 | pc.printf("%02X ",data) ; |
backman | 0:61a9b89ce451 | 32 | } |
backman | 0:61a9b89ce451 | 33 | pc.printf("\r\n") ; |
backman | 0:61a9b89ce451 | 34 | |
backman | 0:61a9b89ce451 | 35 | camera.InitQQVGA() ; |
backman | 0:61a9b89ce451 | 36 | |
backman | 0:61a9b89ce451 | 37 | pc.printf("After Init...\r\n") ; |
backman | 0:61a9b89ce451 | 38 | pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F") ; |
backman | 0:61a9b89ce451 | 39 | for (i=0;i<OV7670_REGMAX;i++) { |
backman | 0:61a9b89ce451 | 40 | int data ; |
backman | 0:61a9b89ce451 | 41 | data = camera.ReadReg(i) ; // READ REG |
backman | 0:61a9b89ce451 | 42 | if ((i & 0x0F) == 0) { |
backman | 0:61a9b89ce451 | 43 | pc.printf("\r\n%02X : ",i) ; |
backman | 0:61a9b89ce451 | 44 | } |
backman | 0:61a9b89ce451 | 45 | pc.printf("%02X ",data) ; |
backman | 0:61a9b89ce451 | 46 | } |
backman | 0:61a9b89ce451 | 47 | pc.printf("\r\n") ; |
backman | 0:61a9b89ce451 | 48 | |
backman | 0:61a9b89ce451 | 49 | // CAPTURE and SEND LOOP |
backman | 0:61a9b89ce451 | 50 | while(1) |
backman | 0:61a9b89ce451 | 51 | { |
backman | 0:61a9b89ce451 | 52 | pc.printf("Hit Any Key to send RGBx160x120 Capture Data.\r\n") ; |
backman | 0:61a9b89ce451 | 53 | while(!pc.readable()) ; |
backman | 0:61a9b89ce451 | 54 | pc.getc() ; |
backman | 0:61a9b89ce451 | 55 | camera.CaptureNext() ; |
backman | 0:61a9b89ce451 | 56 | while(camera.CaptureDone() == false) ; |
backman | 0:61a9b89ce451 | 57 | pc.printf("*\r\n") ; |
backman | 0:61a9b89ce451 | 58 | camera.ReadStart() ; |
backman | 0:61a9b89ce451 | 59 | i = 0 ; |
backman | 0:61a9b89ce451 | 60 | |
backman | 0:61a9b89ce451 | 61 | |
backman | 0:61a9b89ce451 | 62 | |
backman | 0:61a9b89ce451 | 63 | for (int y = 0;y < SIZEY;y++) { |
backman | 0:61a9b89ce451 | 64 | volatile int r,g,b,d1,d2 ; |
backman | 0:61a9b89ce451 | 65 | for (int x = 0;x < SIZEX;x++) { |
backman | 0:61a9b89ce451 | 66 | d1 = camera.ReadOneByte() ; // upper nibble is XXX , lower nibble is B |
backman | 0:61a9b89ce451 | 67 | d2 = camera.ReadOneByte() ; // upper nibble is G , lower nibble is R |
backman | 0:61a9b89ce451 | 68 | b = (d1 & 0x0F) ; |
backman | 0:61a9b89ce451 | 69 | g = (d2 & 0xF0) >> 4 ; |
backman | 0:61a9b89ce451 | 70 | r = (d2 & 0x0F) ; |
backman | 0:61a9b89ce451 | 71 | |
backman | 0:61a9b89ce451 | 72 | |
backman | 0:61a9b89ce451 | 73 | // pc.printf("%d \r\n",r); |
backman | 0:61a9b89ce451 | 74 | // pc.printf("%d \r\n",g); |
backman | 0:61a9b89ce451 | 75 | // pc.printf("%d \r\n",b); |
backman | 0:61a9b89ce451 | 76 | // pc.printf(" "); |
backman | 0:61a9b89ce451 | 77 | |
backman | 0:61a9b89ce451 | 78 | // wait_ms(1); |
backman | 0:61a9b89ce451 | 79 | |
backman | 0:61a9b89ce451 | 80 | //pc.printf("%",camera.ReadOneByte()); |
backman | 0:61a9b89ce451 | 81 | |
backman | 0:61a9b89ce451 | 82 | |
backman | 0:61a9b89ce451 | 83 | pc.printf ("%1X %1X %1X \r\n",r,g,b) ; |
backman | 0:61a9b89ce451 | 84 | // pc.printf("%1X",r); |
backman | 0:61a9b89ce451 | 85 | |
backman | 0:61a9b89ce451 | 86 | // if(b<0x03) |
backman | 0:61a9b89ce451 | 87 | // pc.printf("O"); |
backman | 0:61a9b89ce451 | 88 | // else |
backman | 0:61a9b89ce451 | 89 | // pc.printf(" "); |
backman | 0:61a9b89ce451 | 90 | |
backman | 0:61a9b89ce451 | 91 | |
backman | 0:61a9b89ce451 | 92 | /* |
backman | 0:61a9b89ce451 | 93 | if( b > 7 ) |
backman | 0:61a9b89ce451 | 94 | pc.printf("O"); |
backman | 0:61a9b89ce451 | 95 | else |
backman | 0:61a9b89ce451 | 96 | pc.printf(" "); |
backman | 0:61a9b89ce451 | 97 | */ |
backman | 0:61a9b89ce451 | 98 | |
backman | 0:61a9b89ce451 | 99 | /* |
backman | 0:61a9b89ce451 | 100 | if( b > 12 ) |
backman | 0:61a9b89ce451 | 101 | pc.printf("e"); |
backman | 0:61a9b89ce451 | 102 | else if( b > 9 ) |
backman | 0:61a9b89ce451 | 103 | pc.printf("d"); |
backman | 0:61a9b89ce451 | 104 | else if( b > 6 ) |
backman | 0:61a9b89ce451 | 105 | pc.printf("c"); |
backman | 0:61a9b89ce451 | 106 | else if( b > 3 ) |
backman | 0:61a9b89ce451 | 107 | pc.printf("b"); |
backman | 0:61a9b89ce451 | 108 | else if( b > 0x00 ) |
backman | 0:61a9b89ce451 | 109 | pc.printf("a"); |
backman | 0:61a9b89ce451 | 110 | else |
backman | 0:61a9b89ce451 | 111 | pc.printf("X"); |
backman | 0:61a9b89ce451 | 112 | */ |
backman | 0:61a9b89ce451 | 113 | |
backman | 0:61a9b89ce451 | 114 | /* |
backman | 0:61a9b89ce451 | 115 | else if(b > 0x90 ) |
backman | 0:61a9b89ce451 | 116 | pc.printf("9"); |
backman | 0:61a9b89ce451 | 117 | else if( b > 0x80 ) |
backman | 0:61a9b89ce451 | 118 | pc.printf("8"); |
backman | 0:61a9b89ce451 | 119 | else if( b > 0x70 ) |
backman | 0:61a9b89ce451 | 120 | pc.printf("7"); |
backman | 0:61a9b89ce451 | 121 | else if( b > 0x60 ) |
backman | 0:61a9b89ce451 | 122 | pc.printf("6"); |
backman | 0:61a9b89ce451 | 123 | else if(b > 0x50 ) |
backman | 0:61a9b89ce451 | 124 | pc.printf("5"); |
backman | 0:61a9b89ce451 | 125 | |
backman | 0:61a9b89ce451 | 126 | else if( b > 0x40 ) |
backman | 0:61a9b89ce451 | 127 | pc.printf("4"); |
backman | 0:61a9b89ce451 | 128 | else if(b > 0x30 ) |
backman | 0:61a9b89ce451 | 129 | pc.printf("3"); |
backman | 0:61a9b89ce451 | 130 | else if( b > 0x20 ) |
backman | 0:61a9b89ce451 | 131 | pc.printf("2"); |
backman | 0:61a9b89ce451 | 132 | else |
backman | 0:61a9b89ce451 | 133 | pc.printf("1"); |
backman | 0:61a9b89ce451 | 134 | |
backman | 0:61a9b89ce451 | 135 | |
backman | 0:61a9b89ce451 | 136 | */ |
backman | 0:61a9b89ce451 | 137 | |
backman | 0:61a9b89ce451 | 138 | |
backman | 0:61a9b89ce451 | 139 | // pc.printf("%1X\r\n",camera.ReadOneByte()); |
backman | 0:61a9b89ce451 | 140 | |
backman | 0:61a9b89ce451 | 141 | |
backman | 0:61a9b89ce451 | 142 | } |
backman | 0:61a9b89ce451 | 143 | pc.printf("\r\n") ; |
backman | 0:61a9b89ce451 | 144 | } |
backman | 0:61a9b89ce451 | 145 | camera.ReadStop() ; |
backman | 0:61a9b89ce451 | 146 | } |
backman | 0:61a9b89ce451 | 147 | } |