int main (void) { pwm_frame_t * next_pwm = malloc(sizeof(pwm_frame_t)); initialize_pru(); start_pru(); pru_pwm_frame_t * pwm_out = get_pwm_pointer(); init_pwm(next_pwm); output_pwm(next_pwm, pwm_out); signal(SIGINT, signal_handler); while(pruDataMem_int[0] != 0){ scanf("%d %d %d %d", &(next_pwm->zero), &(next_pwm->one), &(next_pwm->two), &(next_pwm->three)); printf("ping: %d\n", pruDataMem_int[1]/5800); pruDataMem_int[2] = 0; next_pwm->zero *= 1000; next_pwm->one *= 1000; next_pwm->two *= 1000; next_pwm->three *= 1000; output_pwm(next_pwm, pwm_out); } uninitialize_pru(); return(0); }
int main (int argc, char ** argv) { if (argc != 2){ printf("you need to give me the number of frames to captures\n"); exit(-1); } int num_frames = atoi(argv[1]); initialize_pru(); start_pru(); FILE * image_data = fopen("/media/usb/image.data", "w"); if (image_data == NULL){ fprintf(stderr, "Failed to open image output file"); exit(-1); } const char *version = FreeImage_GetVersion(); printf("Freeimage version %s\n", version); FIBITMAP* dib = FreeImage_Allocate(320, 203, 16, 0xF800, 0x07E0,0x001F); // allocate 320x203 RGB565 bitmap int bytespp = FreeImage_GetLine(dib)/FreeImage_GetWidth(dib); FREE_IMAGE_TYPE image_type = FreeImage_GetImageType(dib); if (image_type == FIT_BITMAP){ printf("1\n"); } printf("%d %d\n", FreeImage_GetHeight(dib), FreeImage_GetWidth(dib)); BYTE * bits = FreeImage_GetBits(dib); FILE * fp = fopen("image.data", "rb"); char filename[] = "/root/1314-BeagleBone-Quadcopter/code/ControlTower/ramfs/latest_image.bmp"; int i = 0; for (i = 0; i < num_frames; i++){ while(i==pruDataMem_int[100]){usleep(100000);} int buffer = pruDataMem_int[1]; printf("%d buffer=%d\n", pruDataMem_int[100], buffer); if (i%10==0){ memcpy(bits, pru1_ddr+buffer*320*240*2, 320*203*2); FreeImage_Save(FIF_BMP, dib, filename,0); } } uninitialize_pru(); fflush(image_data); printf("%d\n", ((volatile uint8_t *)pru1_ddr)[0]); fclose(image_data); prussdrv_pru_disable (PRU_NUM); prussdrv_exit (); return(0); }