Version 3: Trying to interleave capture and read
Dependencies: ov7670_lib Project_test
Diff: main.cpp
- Revision:
- 7:9e4e66a8554e
- Parent:
- 6:c7450b320c30
- Child:
- 8:36adb37e976d
--- a/main.cpp Mon Apr 06 10:26:11 2020 +0000 +++ b/main.cpp Mon Apr 06 11:23:49 2020 +0000 @@ -19,203 +19,26 @@ int main() { //FILE *wrt=fopen("/local/out.txt","w"); - int pixel[QQVGA]; - int pixel2[QQVGA]; - camera.Init('y', QQVGA); - pc.printf("Camera initiated"); + int pixel[QVGA]; + int pixel2[QVGA]; + camera.Init('y', QVGA); + pc.printf("\r\nCamera initiated"); camera.CaptureNext(); while(camera.CaptureDone() == false); camera.ReadStart(); t1 = t.read_ms(); t.start(); - for(int x = 0; x<QQVGA; x++) + for(int x = 0; x<QVGA; x++) { pixel[x]=camera.ReadOnebyte(); //fprintf(fp,"%i", pixel[x]); //pixel2[x]=camera.ReadOnebyte(); //fprintf(fp,"%i/n", pixel2[x]); - printf("%d ", camera.ReadOnebyte()); + pc.printf("%d ", camera.ReadOnebyte()); } camera.ReadStop(); pc.printf("done in %f\r\n",t.read()); //fclose(fp); - /* - pc.baud(921600); - pc.printf("SystemCoreClock: %dMHz\r\n", SystemCoreClock/1000000); // print the clock frequency - led4 = 0; - - t.start(); - //pc.attach(&rxCallback, MODSERIAL::RxIrq); - - while(1) - { - if(new_send) - { - int i = 0; - - while(pc.readable()) - { - word[i] = pc.getc(); - i++; - } - parse_cmd(); - } - wait_ms(50); - } -} - - - -void parse_cmd() -{ - new_send = false; - - if(strcmp("snap", word) == 0) - { - CameraSnap(); - memset(word, 0, sizeof(word)); - }else - if(strcmp("init_bw_VGA", word) == 0) // Set up for 640*480 pixels RAW - { - format = 'b'; - resolution = VGA; - if(camera.Init('b', VGA) != 1) - { - pc.printf("Init Fail\r\n"); - } - pc.printf("Initializing done\r\n"); - memset(word, 0, sizeof(word)); - }else - if(strcmp("init_yuv_QVGA", word) == 0) // Set up for 320*240 pixels YUV422 - { - format = 'y'; - resolution = QVGA; - if(camera.Init('b', QVGA) != 1) - { - pc.printf("Init Fail\r\n"); - } - pc.printf("Initializing done\r\n"); - memset(word, 0, sizeof(word)); - }else - if(strcmp("init_rgb_QVGA", word) == 0) // Set up for 320*240 pixels RGB565 - { - format = 'r'; - resolution = QVGA; - if(camera.Init('r', QVGA) != 1) - { - pc.printf("Init Fail\r\n"); - } - pc.printf("Initializing done\r\n"); - memset(word, 0, sizeof(word)); - }else - if(strcmp("init_bw_QVGA", word) == 0) // Set up for 320*240 pixels YUV (Only Y) - { - format = 'b'; - resolution = QVGA; - if(camera.Init('b', QVGA) != 1) - { - pc.printf("Init Fail\r\n"); - } - pc.printf("Initializing done\r\n"); - memset(word, 0, sizeof(word)); - }else - if(strcmp("init_yuv_QQVGA", word) == 0) // Set up for 160*120 pixels YUV422 - { - format = 'y'; - resolution = QQVGA; - if(camera.Init('b', QQVGA) != 1) - { - pc.printf("Init Fail\r\n"); - } - pc.printf("Initializing done\r\n"); - memset(word, 0, sizeof(word)); - }else - if(strcmp("init_rgb_QQVGA", word) == 0) // Set up for 160*120 pixels RGB565 - { - format = 'r'; - resolution = QQVGA; - if(camera.Init('r', QQVGA) != 1) - { - pc.printf("Init Fail\r\n"); - } - pc.printf("Initializing done\r\n"); - memset(word, 0, sizeof(word)); - }else - if(strcmp("init_bw_QQVGA", word) == 0) // Set up for 160*120 pixels YUV (Only Y) - { - format = 'b'; - resolution = QQVGA; - if(camera.Init('b', QQVGA) != 1) - { - pc.printf("Init Fail\r\n"); - } - pc.printf("Initializing done\r\n"); - memset(word, 0, sizeof(word)); - }else - if(strcmp("reset", word) == 0) - { - //mbed_reset(); - }else - if(strcmp("time", word) == 0) - { - pc.printf("Tot time acq + send (mbed): %dms\r\n", t2-t1); - memset(word, 0, sizeof(word)); - }else - if(strcmp("reg_status", word) == 0) - { - int i = 0; - pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F"); - for (i=0;i<OV7670_REGMAX;i++) - { - int data; - data = camera.ReadReg(i); // READ REG - if ((i & 0x0F) == 0) - { - pc.printf("\r\n%02X : ",i); - } - pc.printf("%02X ",data); - } - pc.printf("\r\n"); - } - - memset(word, 0, sizeof(word)); - -} - - -void CameraSnap() -{ - led4 = 1; - - // Kick things off by capturing an image - camera.CaptureNext(); - while(camera.CaptureDone() == false); - // Start reading in the image data from the camera hardware buffer - camera.ReadStart(); - t1 = t.read_ms(); - - for(int x = 0; x<resolution; x++) - { - // Read in the first half of the image - if(format == 'b' && resolution != VGA) - { - camera.ReadOnebyte(); - }else - if(format == 'y' || format == 'r') - { - pc.putc(camera.ReadOnebyte()); - } - // Read in the Second half of the image - pc.putc(camera.ReadOnebyte()); // Y only - } - - camera.ReadStop(); - t2 = t.read_ms(); - - camera.CaptureNext(); - while(camera.CaptureDone() == false); - - pc.printf("Snap_done\r\n"); - led4 = 0;*/ + } \ No newline at end of file