CAMCTL - One shot capture. - Calibration of camera to be able to work under different light conditions.

Dependents:   frdm_MasterVehicle

Committer:
JalilChavez
Date:
Tue Oct 14 03:52:23 2014 +0000
Revision:
0:6cad676fdc0c
controller of linescan camera

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JalilChavez 0:6cad676fdc0c 1 #ifndef _CAMCTL_H_
JalilChavez 0:6cad676fdc0c 2 #define _CAMCTL_H_
JalilChavez 0:6cad676fdc0c 3
JalilChavez 0:6cad676fdc0c 4 #include "mbed.h"
JalilChavez 0:6cad676fdc0c 5
JalilChavez 0:6cad676fdc0c 6 /**********************************************************************************
JalilChavez 0:6cad676fdc0c 7 * Camera parameters
JalilChavez 0:6cad676fdc0c 8 ***********************************************************************************/
JalilChavez 0:6cad676fdc0c 9
JalilChavez 0:6cad676fdc0c 10 #define BASE_PERIOD 20/* us
JalilChavez 0:6cad676fdc0c 11 * Description: All times are based on this time
JalilChavez 0:6cad676fdc0c 12 */
JalilChavez 0:6cad676fdc0c 13
JalilChavez 0:6cad676fdc0c 14 #define START_DELAY 10/* x1000 = 1ms
JalilChavez 0:6cad676fdc0c 15 * Description: All times are based on this time
JalilChavez 0:6cad676fdc0c 16 */
JalilChavez 0:6cad676fdc0c 17
JalilChavez 0:6cad676fdc0c 18 #define SI_PULSE_WIDTH 15/* x BASE_PERIOD = 10ms
JalilChavez 0:6cad676fdc0c 19 * Description: Pulse width of SI signal
JalilChavez 0:6cad676fdc0c 20 */
JalilChavez 0:6cad676fdc0c 21
JalilChavez 0:6cad676fdc0c 22
JalilChavez 0:6cad676fdc0c 23 #define SI_PULSE_WIDTH_HALF (SI_PULSE_WIDTH/2)/* x BASE_PERIOD = 10ms
JalilChavez 0:6cad676fdc0c 24 * Description: Pulse width of SI signal
JalilChavez 0:6cad676fdc0c 25 */
JalilChavez 0:6cad676fdc0c 26
JalilChavez 0:6cad676fdc0c 27 #define CLK_PULSE_WIDTH_HALF (SI_PULSE_WIDTH/2)/* x BASE_PERIOD = 10ms
JalilChavez 0:6cad676fdc0c 28 * Description: Pulse width of SI signal
JalilChavez 0:6cad676fdc0c 29 */
JalilChavez 0:6cad676fdc0c 30
JalilChavez 0:6cad676fdc0c 31 /*#define EXPOSURE_TIME (uint8)(15)*//* x BASE_PERIOD = 10ms
JalilChavez 0:6cad676fdc0c 32 * Description: Time between firts SI pulse and second one.
JalilChavez 0:6cad676fdc0c 33 */
JalilChavez 0:6cad676fdc0c 34
JalilChavez 0:6cad676fdc0c 35 #define CLK_PULSE_WIDTH SI_PULSE_WIDTH/* x BASE_PERIOD = 10ms
JalilChavez 0:6cad676fdc0c 36 * Description: Must be the same value used for SI_PULSE_WIDTH
JalilChavez 0:6cad676fdc0c 37 */
JalilChavez 0:6cad676fdc0c 38
JalilChavez 0:6cad676fdc0c 39 #define NO_OF_CLK_PULSES 129/*
JalilChavez 0:6cad676fdc0c 40 * Description: Number of pulses to trigger between 2 SI pulses.
JalilChavez 0:6cad676fdc0c 41 */
JalilChavez 0:6cad676fdc0c 42
JalilChavez 0:6cad676fdc0c 43 #define IDLE_TIME 15/*us
JalilChavez 0:6cad676fdc0c 44 * Description: Time to wait before the next SI pulse.
JalilChavez 0:6cad676fdc0c 45 */
JalilChavez 0:6cad676fdc0c 46
JalilChavez 0:6cad676fdc0c 47 #define BUFFER_LENGTH 128/*
JalilChavez 0:6cad676fdc0c 48 * Description: Number of to get from linescan camera.
JalilChavez 0:6cad676fdc0c 49 */
JalilChavez 0:6cad676fdc0c 50
JalilChavez 0:6cad676fdc0c 51 /**********************************************************************************
JalilChavez 0:6cad676fdc0c 52 * Variable types definition
JalilChavez 0:6cad676fdc0c 53 ***********************************************************************************/
JalilChavez 0:6cad676fdc0c 54 typedef enum
JalilChavez 0:6cad676fdc0c 55 {
JalilChavez 0:6cad676fdc0c 56 nContinuous = 0,
JalilChavez 0:6cad676fdc0c 57 nOneShot,
JalilChavez 0:6cad676fdc0c 58 nNone,
JalilChavez 0:6cad676fdc0c 59 nNumberOfModes
JalilChavez 0:6cad676fdc0c 60 }CAMCTL__tenCaptureMode;
JalilChavez 0:6cad676fdc0c 61
JalilChavez 0:6cad676fdc0c 62 typedef struct
JalilChavez 0:6cad676fdc0c 63 {
JalilChavez 0:6cad676fdc0c 64 uint8_t u8ActiveCapture : 1;
JalilChavez 0:6cad676fdc0c 65 uint8_t u8ClkEnd : 1;
JalilChavez 0:6cad676fdc0c 66 CAMCTL__tenCaptureMode enCaptureMode;
JalilChavez 0:6cad676fdc0c 67 }CAMCTL__tstCameraOptions;
JalilChavez 0:6cad676fdc0c 68
JalilChavez 0:6cad676fdc0c 69 /**********************************************************************************
JalilChavez 0:6cad676fdc0c 70 * Global functions
JalilChavez 0:6cad676fdc0c 71 ***********************************************************************************/
JalilChavez 0:6cad676fdc0c 72 void CAMCTL_vInit(void);
JalilChavez 0:6cad676fdc0c 73 void CAMCTL_vTriggerOneShotCapture(void);
JalilChavez 0:6cad676fdc0c 74 void CAMCTL_vTriggerContinuousCapture(void);
JalilChavez 0:6cad676fdc0c 75 void CAMCTL_vStopContinuousCapture(void);
JalilChavez 0:6cad676fdc0c 76 uint16_t * CAMCTL_pu16GetData( void );
JalilChavez 0:6cad676fdc0c 77 bool CAMCTL_boCalibrateCamera(uint16_t* pu16ThreshCalibration, uint8_t u8Frames2Wait);
JalilChavez 0:6cad676fdc0c 78
JalilChavez 0:6cad676fdc0c 79 #endif /* END OF _CAMCTL_H_ */