kao yi
/
rtos_basic
bx-cam
Fork of rtos_basic by
main.cpp@8:025a9d74a731, 2014-07-08 (annotated)
- Committer:
- backman
- Date:
- Tue Jul 08 06:21:37 2014 +0000
- Revision:
- 8:025a9d74a731
- Parent:
- 7:f990f03bc2b2
wang
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:491820ee784d | 1 | #include "mbed.h" |
emilmont | 1:491820ee784d | 2 | #include "rtos.h" |
backman | 7:f990f03bc2b2 | 3 | #include "main.h" |
backman | 7:f990f03bc2b2 | 4 | #include "ov7670.h" |
emilmont | 1:491820ee784d | 5 | |
backman | 7:f990f03bc2b2 | 6 | |
backman | 7:f990f03bc2b2 | 7 | |
backman | 7:f990f03bc2b2 | 8 | /* |
backman | 7:f990f03bc2b2 | 9 | OV7670( |
backman | 7:f990f03bc2b2 | 10 | PinName sda, // Camera I2C port |
backman | 7:f990f03bc2b2 | 11 | PinName scl, // Camera I2C port |
backman | 7:f990f03bc2b2 | 12 | PinName vs, l8 aa // VS YNC |
backman | 7:f990f03bc2b2 | 13 | PinName hr, // HREF |
backman | 7:f990f03bc2b2 | 14 | PinName we, // WEN |
backman | 7:f990f03bc2b2 | 15 | |
backman | 7:f990f03bc2b2 | 16 | PortName port, // 8bit bus port |
backman | 7:f990f03bc2b2 | 17 | int mask, // 0b0000_0M65_4000_0321_L000_0000_0000_0000 = 0x07878000 |
backman | 7:f990f03bc2b2 | 18 | |
backman | 7:f990f03bc2b2 | 19 | PinName rt, // /RRST |
backman | 7:f990f03bc2b2 | 20 | PinName o, // /OE |
backman | 7:f990f03bc2b2 | 21 | PinName rc // RCLK |
backman | 7:f990f03bc2b2 | 22 | ); |
backman | 7:f990f03bc2b2 | 23 | |
backman | 7:f990f03bc2b2 | 24 | |
backman | 7:f990f03bc2b2 | 25 | */ |
backman | 7:f990f03bc2b2 | 26 | |
backman | 7:f990f03bc2b2 | 27 | |
backman | 8:025a9d74a731 | 28 | //D7-D0 |
backman | 8:025a9d74a731 | 29 | OV7670 camera(PTE0,PTE1,PTD6,PTD7,PTE31,PTC17,PTC16,PTC13,PTC12,PTC6,PTC5,PTC4,PTC3,PTB8,PTB9,PTB10); |
backman | 7:f990f03bc2b2 | 30 | |
backman | 7:f990f03bc2b2 | 31 | |
backman | 7:f990f03bc2b2 | 32 | |
backman | 7:f990f03bc2b2 | 33 | |
backman | 7:f990f03bc2b2 | 34 | |
backman | 7:f990f03bc2b2 | 35 | |
backman | 7:f990f03bc2b2 | 36 | |
backman | 7:f990f03bc2b2 | 37 | |
backman | 7:f990f03bc2b2 | 38 | |
backman | 7:f990f03bc2b2 | 39 | #define VGA 307200 //640*480 |
backman | 7:f990f03bc2b2 | 40 | #define QVGA 76800 //320*240 |
backman | 7:f990f03bc2b2 | 41 | #define QQVGA 19200 //160*120 |
backman | 7:f990f03bc2b2 | 42 | |
backman | 8:025a9d74a731 | 43 | |
backman | 8:025a9d74a731 | 44 | static int resolution =QQVGA ; |
backman | 8:025a9d74a731 | 45 | // char in[160][120]; |
backman | 7:f990f03bc2b2 | 46 | |
backman | 7:f990f03bc2b2 | 47 | I2C i2c(PTE0, PTE1); |
backman | 7:f990f03bc2b2 | 48 | |
backman | 7:f990f03bc2b2 | 49 | |
backman | 7:f990f03bc2b2 | 50 | |
backman | 7:f990f03bc2b2 | 51 | int main() |
backman | 7:f990f03bc2b2 | 52 | { |
backman | 7:f990f03bc2b2 | 53 | pc.baud(115200); |
backman | 8:025a9d74a731 | 54 | |
backman | 7:f990f03bc2b2 | 55 | led4 = 0; |
backman | 7:f990f03bc2b2 | 56 | |
backman | 8:025a9d74a731 | 57 | |
backman | 7:f990f03bc2b2 | 58 | |
backman | 7:f990f03bc2b2 | 59 | |
backman | 8:025a9d74a731 | 60 | |
backman | 8:025a9d74a731 | 61 | |
backman | 8:025a9d74a731 | 62 | if(camera.Init('b', QQVGA) != 1) // Set up for 160*120 pixels YUV (Only Y) |
backman | 7:f990f03bc2b2 | 63 | { |
backman | 7:f990f03bc2b2 | 64 | pc.printf("Init Fail\r\n"); |
backman | 7:f990f03bc2b2 | 65 | } |
backman | 7:f990f03bc2b2 | 66 | pc.printf("Initializing done\r\n"); |
backman | 8:025a9d74a731 | 67 | |
backman | 8:025a9d74a731 | 68 | |
backman | 8:025a9d74a731 | 69 | |
backman | 8:025a9d74a731 | 70 | wait_ms(50); |
backman | 8:025a9d74a731 | 71 | |
backman | 8:025a9d74a731 | 72 | //register |
backman | 8:025a9d74a731 | 73 | int i = 0; |
backman | 7:f990f03bc2b2 | 74 | pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F"); |
backman | 7:f990f03bc2b2 | 75 | for (i=0;i<OV7670_REGMAX;i++) |
backman | 7:f990f03bc2b2 | 76 | { |
backman | 7:f990f03bc2b2 | 77 | int data; |
backman | 7:f990f03bc2b2 | 78 | data = camera.ReadReg(i); // READ REG |
backman | 7:f990f03bc2b2 | 79 | if ((i & 0x0F) == 0) |
backman | 7:f990f03bc2b2 | 80 | { |
backman | 7:f990f03bc2b2 | 81 | pc.printf("\r\n%02X : ",i); |
backman | 7:f990f03bc2b2 | 82 | } |
backman | 7:f990f03bc2b2 | 83 | pc.printf("%02X ",data); |
backman | 7:f990f03bc2b2 | 84 | } |
backman | 7:f990f03bc2b2 | 85 | pc.printf("\r\n"); |
backman | 8:025a9d74a731 | 86 | |
backman | 8:025a9d74a731 | 87 | |
backman | 8:025a9d74a731 | 88 | wait_ms(50); |
backman | 8:025a9d74a731 | 89 | |
backman | 8:025a9d74a731 | 90 | CameraSnap(); |
backman | 8:025a9d74a731 | 91 | |
backman | 8:025a9d74a731 | 92 | |
backman | 8:025a9d74a731 | 93 | |
backman | 8:025a9d74a731 | 94 | |
emilmont | 1:491820ee784d | 95 | } |
backman | 8:025a9d74a731 | 96 | |
backman | 7:f990f03bc2b2 | 97 | void CameraSnap() |
backman | 7:f990f03bc2b2 | 98 | { |
backman | 7:f990f03bc2b2 | 99 | led4 = 1; |
backman | 8:025a9d74a731 | 100 | // pc.printf("++++++++++++++++++++++++++++++"); |
backman | 7:f990f03bc2b2 | 101 | // Kick things off by capturing an image |
backman | 7:f990f03bc2b2 | 102 | camera.CaptureNext(); |
backman | 7:f990f03bc2b2 | 103 | while(camera.CaptureDone() == false); |
backman | 7:f990f03bc2b2 | 104 | // Start reading in the image data from the camera hardware buffer |
backman | 7:f990f03bc2b2 | 105 | camera.ReadStart(); |
backman | 8:025a9d74a731 | 106 | |
backman | 8:025a9d74a731 | 107 | char max_in=0x00; |
backman | 8:025a9d74a731 | 108 | char min_in=0xff; |
backman | 8:025a9d74a731 | 109 | |
backman | 8:025a9d74a731 | 110 | /* |
backman | 8:025a9d74a731 | 111 | for(int x = 0; x<120; x++) |
backman | 8:025a9d74a731 | 112 | for(int y=0;y <160;y++){ |
backman | 8:025a9d74a731 | 113 | camera.ReadOnebyte(); |
backman | 8:025a9d74a731 | 114 | |
backman | 8:025a9d74a731 | 115 | in[x][y] = camera.ReadOnebyte(); |
backman | 8:025a9d74a731 | 116 | |
backman | 8:025a9d74a731 | 117 | if ( max_in <in[x][y]) |
backman | 8:025a9d74a731 | 118 | max_in = in[x][y]; |
backman | 8:025a9d74a731 | 119 | |
backman | 8:025a9d74a731 | 120 | |
backman | 8:025a9d74a731 | 121 | if(min_in > in[x][y]) |
backman | 8:025a9d74a731 | 122 | min_in=in[x][y]; |
backman | 8:025a9d74a731 | 123 | |
backman | 8:025a9d74a731 | 124 | } |
backman | 8:025a9d74a731 | 125 | |
backman | 8:025a9d74a731 | 126 | |
backman | 8:025a9d74a731 | 127 | */ |
backman | 8:025a9d74a731 | 128 | |
backman | 8:025a9d74a731 | 129 | |
backman | 8:025a9d74a731 | 130 | for(int x = 0; x<120; x++){ |
backman | 8:025a9d74a731 | 131 | for(int y=0;y <160;y++) |
backman | 7:f990f03bc2b2 | 132 | { |
backman | 7:f990f03bc2b2 | 133 | |
backman | 8:025a9d74a731 | 134 | |
backman | 8:025a9d74a731 | 135 | |
backman | 8:025a9d74a731 | 136 | |
backman | 8:025a9d74a731 | 137 | camera.ReadOnebyte(); |
backman | 8:025a9d74a731 | 138 | // pc.printf("%1X " ,camera.ReadOnebyte()); |
backman | 8:025a9d74a731 | 139 | |
backman | 8:025a9d74a731 | 140 | if( camera.ReadOnebyte() > 0xe0 ) |
backman | 8:025a9d74a731 | 141 | pc.printf("e"); |
backman | 8:025a9d74a731 | 142 | else if( camera.ReadOnebyte() > 0xd0 ) |
backman | 8:025a9d74a731 | 143 | pc.printf("d"); |
backman | 8:025a9d74a731 | 144 | else if( camera.ReadOnebyte() > 0xc0 ) |
backman | 8:025a9d74a731 | 145 | pc.printf("c"); |
backman | 8:025a9d74a731 | 146 | else if( camera.ReadOnebyte() > 0xb0 ) |
backman | 8:025a9d74a731 | 147 | pc.printf("b"); |
backman | 8:025a9d74a731 | 148 | else if( camera.ReadOnebyte() > 0xa0 ) |
backman | 8:025a9d74a731 | 149 | pc.printf("a"); |
backman | 8:025a9d74a731 | 150 | else if( camera.ReadOnebyte() > 0x90 ) |
backman | 8:025a9d74a731 | 151 | pc.printf("9"); |
backman | 8:025a9d74a731 | 152 | else if( camera.ReadOnebyte() > 0x80 ) |
backman | 8:025a9d74a731 | 153 | pc.printf("8"); |
backman | 8:025a9d74a731 | 154 | else if( camera.ReadOnebyte() > 0x70 ) |
backman | 8:025a9d74a731 | 155 | pc.printf("7"); |
backman | 8:025a9d74a731 | 156 | else if( camera.ReadOnebyte() > 0x60 ) |
backman | 8:025a9d74a731 | 157 | pc.printf("6"); |
backman | 8:025a9d74a731 | 158 | else if( camera.ReadOnebyte() > 0x50 ) |
backman | 8:025a9d74a731 | 159 | pc.printf("5"); |
backman | 8:025a9d74a731 | 160 | |
backman | 8:025a9d74a731 | 161 | else if( camera.ReadOnebyte() > 0x40 ) |
backman | 8:025a9d74a731 | 162 | pc.printf("4"); |
backman | 8:025a9d74a731 | 163 | else if( camera.ReadOnebyte() > 0x30 ) |
backman | 8:025a9d74a731 | 164 | pc.printf("3"); |
backman | 8:025a9d74a731 | 165 | else if( camera.ReadOnebyte() > 0x20 ) |
backman | 8:025a9d74a731 | 166 | pc.printf("2"); |
backman | 8:025a9d74a731 | 167 | else |
backman | 8:025a9d74a731 | 168 | pc.printf("1"); |
backman | 8:025a9d74a731 | 169 | |
backman | 8:025a9d74a731 | 170 | |
backman | 8:025a9d74a731 | 171 | // if( (max_in-in[x][y]) > (in[x][y]-min_in) ) |
backman | 8:025a9d74a731 | 172 | // pc.printf("X"); |
backman | 8:025a9d74a731 | 173 | // else |
backman | 8:025a9d74a731 | 174 | // pc.printf(" "); |
backman | 8:025a9d74a731 | 175 | |
backman | 8:025a9d74a731 | 176 | |
backman | 8:025a9d74a731 | 177 | |
backman | 7:f990f03bc2b2 | 178 | |
backman | 7:f990f03bc2b2 | 179 | } |
backman | 8:025a9d74a731 | 180 | pc.printf("\r\n"); |
backman | 8:025a9d74a731 | 181 | } |
backman | 7:f990f03bc2b2 | 182 | camera.ReadStop(); |
backman | 7:f990f03bc2b2 | 183 | camera.CaptureNext(); |
backman | 7:f990f03bc2b2 | 184 | while(camera.CaptureDone() == false); |
backman | 7:f990f03bc2b2 | 185 | |
backman | 8:025a9d74a731 | 186 | pc.printf("\r\nSnap_done\r\n"); |
backman | 7:f990f03bc2b2 | 187 | led4 = 0; |
emilmont | 1:491820ee784d | 188 | } |
backman | 7:f990f03bc2b2 | 189 | |
backman | 7:f990f03bc2b2 | 190 | |
backman | 7:f990f03bc2b2 | 191 |