CAMCTL - One shot capture. - Calibration of camera to be able to work under different light conditions.
Dependents: frdm_MasterVehicle
camctl.h@0:6cad676fdc0c, 2014-10-14 (annotated)
- Committer:
- JalilChavez
- Date:
- Tue Oct 14 03:52:23 2014 +0000
- Revision:
- 0:6cad676fdc0c
controller of linescan camera
Who changed what in which revision?
User | Revision | Line number | New 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_ */ |