104 #if defined ( RASPBERRY_PI )    107     #include <pins_arduino.h>   111 #if defined (__AVR__)   112 #define cbi(reg, bitmask) *reg &= ~bitmask   113 #define sbi(reg, bitmask) *reg |= bitmask   114 #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);   115 #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);   116 #define cport(port, data) port &= data   117 #define sport(port, data) port |= data   118 #define swap(type, i, j) {type t = i; i = j; j = t;}   119 #define fontbyte(x) pgm_read_byte(&cfont.font[x])     120 #define regtype volatile uint8_t   121 #define regsize uint8_t   124 #if defined(__SAM3X8E__)   126 #define cbi(reg, bitmask) *reg &= ~bitmask   127 #define sbi(reg, bitmask) *reg |= bitmask   129 #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);   130 #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);   132 #define cport(port, data) port &= data   133 #define sport(port, data) port |= data   135 #define swap(type, i, j) {type t = i; i = j; j = t;}   136 #define fontbyte(x) cfont.font[x]     138 #define regtype volatile uint32_t   139 #define regsize uint32_t   143 #define pgm_read_byte(x)        (*((char *)x))   144 #define pgm_read_word(x)        ( ((*((unsigned char *)x + 1)) << 8) + (*((unsigned char *)x)))   145 #define pgm_read_byte_near(x)   (*((char *)x))   146 #define pgm_read_byte_far(x)    (*((char *)x))   147 #define pgm_read_word_near(x)   ( ((*((unsigned char *)x + 1)) << 8) + (*((unsigned char *)x)))   148 #define pgm_read_word_far(x)    ( ((*((unsigned char *)x + 1)) << 8) + (*((unsigned char *)x))))   157     #define cbi(reg, bitmask) digitalWrite(bitmask, LOW)   158     #define sbi(reg, bitmask) digitalWrite(bitmask, HIGH)   159     #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);   160     #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);   162     #define cport(port, data) port &= data   163     #define sport(port, data) port |= data   165     #define swap(type, i, j) {type t = i; i = j; j = t;}   167     #define fontbyte(x) cfont.font[x]     169     #define regtype volatile uint32_t   170     #define regsize uint32_t   173 #if defined(__SAMD51__) || defined(__SAMD21G18A__)   174     #define Serial SERIAL_PORT_USBVIRTUAL   176     #define cbi(reg, bitmask) *reg &= ~bitmask   177     #define sbi(reg, bitmask) *reg |= bitmask   179     #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);   180     #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);   182     #define cport(port, data) port &= data   183     #define sport(port, data) port |= data   185     #define swap(type, i, j) {type t = i; i = j; j = t;}   186     #define fontbyte(x) cfont.font[x]     188     #define regtype volatile uint32_t   189     #define regsize uint32_t   193     #define cbi(reg, bitmask) digitalWrite(bitmask, LOW)   194     #define sbi(reg, bitmask) digitalWrite(bitmask, HIGH)   195     #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);   196     #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);   198     #define cport(port, data) port &= data   199     #define sport(port, data) port |= data   201     #define swap(type, i, j) {type t = i; i = j; j = t;}   203     #define fontbyte(x) cfont.font[x]     205     #define regtype volatile uint32_t   206     #define regsize uint32_t   209 #if defined(__CPU_ARC__)   210     #define cbi(reg, bitmask) *reg &= ~bitmask   211     #define sbi(reg, bitmask) *reg |= bitmask   212     #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);   213     #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);   214     #define cport(port, data) port &= data   215     #define sport(port, data) port |= data   216     #define swap(type, i, j) {type t = i; i = j; j = t;}   217     #define fontbyte(x) pgm_read_byte(&cfont.font[x])     218     #define regtype volatile uint32_t   219     #define regsize uint32_t   222 #if defined (RASPBERRY_PI)   223     #define regtype volatile uint32_t   224     #define regsize uint32_t    226     #define cbi(reg, bitmask) digitalWrite(bitmask, LOW)   227   #define sbi(reg, bitmask) digitalWrite(bitmask, HIGH)   237 #if defined(ARDUINO_ARCH_NRF52)   238     #define cbi(reg, bitmask) digitalWrite(bitmask, LOW)   239     #define sbi(reg, bitmask) digitalWrite(bitmask, HIGH)   240     #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);   241     #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);   243     #define cport(port, data) port &= data   244     #define sport(port, data) port |= data   246     #define swap(type, i, j) {type t = i; i = j; j = t;}   248     #define fontbyte(x) cfont.font[x]     250     #define regtype volatile uint32_t   251     #define regsize uint32_t   255 #if defined(TEENSYDUINO)   256  #define cbi(reg, bitmask) digitalWriteFast(bitmask, LOW)   257  #define sbi(reg, bitmask) digitalWriteFast(bitmask, HIGH)   258 #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);   259 #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);   260  #define cport(port, data) port &= data   261 #define sport(port, data) port |= data   262  #define swap(type, i, j) {type t = i; i = j; j = t;}   263  #define fontbyte(x) cfont.font[x]     264  #define regtype volatile uint8_t   265 #define regsize uint8_t   296 #define OV2640_160x120      0   //160x120   297 #define OV2640_176x144      1   //176x144   298 #define OV2640_320x240      2   //320x240   299 #define OV2640_352x288      3   //352x288   300 #define OV2640_640x480      4   //640x480   301 #define OV2640_800x600      5   //800x600   302 #define OV2640_1024x768     6   //1024x768   303 #define OV2640_1280x1024    7   //1280x1024   304 #define OV2640_1600x1200    8   //1600x1200   308 #define OV3640_176x144      0   //176x144   309 #define OV3640_320x240      1   //320x240   310 #define OV3640_352x288      2   //352x288   311 #define OV3640_640x480      3   //640x480   312 #define OV3640_800x600      4   //800x600   313 #define OV3640_1024x768     5 //1024x768   314 #define OV3640_1280x960   6 //1280x960   315 #define OV3640_1600x1200    7   //1600x1200   316 #define OV3640_2048x1536    8   //2048x1536   319 #define OV5642_320x240      0   //320x240   320 #define OV5642_640x480      1   //640x480   321 #define OV5642_1024x768     2   //1024x768   322 #define OV5642_1280x960     3   //1280x960   323 #define OV5642_1600x1200    4   //1600x1200   324 #define OV5642_2048x1536    5   //2048x1536   325 #define OV5642_2592x1944    6   //2592x1944   326 #define OV5642_1920x1080  7   329 #define OV5640_320x240      0   //320x240    330 #define OV5640_352x288      1   //352x288   331 #define OV5640_640x480    2 //640x480   332 #define OV5640_800x480    3 //800x480   333 #define OV5640_1024x768   4 //1024x768   334 #define OV5640_1280x960   5 //1280x960     335 #define OV5640_1600x1200    6    //1600x1200   336 #define OV5640_2048x1536    7  //2048x1536   337 #define OV5640_2592x1944    8    //2592x1944   349 #define Advanced_AWB         0   354 #define Manual_cloudy        5   360 #define Saturation4          0   361 #define Saturation3          1   362 #define Saturation2          2   363 #define Saturation1          3   364 #define Saturation0          4   365 #define Saturation_1         5   366 #define Saturation_2         6   367 #define Saturation_3         7   368 #define Saturation_4         8   372 #define Brightness4          0   373 #define Brightness3          1   374 #define Brightness2          2   375 #define Brightness1          3   376 #define Brightness0          4   377 #define Brightness_1         5   378 #define Brightness_2         6   379 #define Brightness_3         7   380 #define Brightness_4         8   423 #define Overexposure                 9   428 #define Exposure_17_EV                    0   429 #define Exposure_13_EV                    1   430 #define Exposure_10_EV                    2   431 #define Exposure_07_EV                    3   432 #define Exposure_03_EV                    4   433 #define Exposure_default                  5   434 #define Exposure03_EV                     6   435 #define Exposure07_EV                     7   436 #define Exposure10_EV                     8   437 #define Exposure13_EV                     9   438 #define Exposure17_EV                     10   440 #define Auto_Sharpness_default              0   441 #define Auto_Sharpness1                     1   442 #define Auto_Sharpness2                     2   443 #define Manual_Sharpnessoff                 3   444 #define Manual_Sharpness1                   4   445 #define Manual_Sharpness2                   5   446 #define Manual_Sharpness3                   6   447 #define Manual_Sharpness4                   7   448 #define Manual_Sharpness5                   8   460 #define Sharpness_auto                       8   475 #define MIRROR_FLIP                         2   480 #define high_quality                         0   481 #define default_quality                      1   482 #define low_quality                          2   485 #define Color_square                   1   490 #define Night_Mode_On                  0   491 #define Night_Mode_Off                 1   494 #define Manual_50HZ                    1   495 #define Manual_60HZ                    2   496 #define Auto_Detection                 3   501 #define I2C_ADDR_8BIT 0   502 #define I2C_ADDR_16BIT 1   503 #define I2C_REG_8BIT 0   504 #define I2C_REG_16BIT 1   505 #define I2C_DAT_8BIT 0   506 #define I2C_DAT_16BIT 1   510 #define SENSOR_REG_TERM_8BIT                0xFF   511 #define SENSOR_REG_TERM_16BIT               0xFFFF   513 #define SENSOR_VAL_TERM_8BIT                0xFF   514 #define SENSOR_VAL_TERM_16BIT               0xFFFF   517 #if (defined OV2640_MINI_2MP)   518 #define MAX_FIFO_SIZE       0x5FFFF         //384KByte   519 #elif (defined OV5642_MINI_5MP || defined OV5642_MINI_5MP_BIT_ROTATION_FIXED || defined ARDUCAM_SHIELD_REVC)   520 #define MAX_FIFO_SIZE       0x7FFFF         //512KByte   522 #define MAX_FIFO_SIZE       0x7FFFFF        //8MByte   528 #define RWBIT                                   0x80  //READ AND WRITE BIT IS BIT[7]   530 #define ARDUCHIP_TEST1          0x00  //TEST register   532 #if !(defined OV2640_MINI_2MP)   533     #define ARDUCHIP_FRAMES           0x01  //FRAME control register, Bit[2:0] = Number of frames to be captured                                                                        //On 5MP_Plus platforms bit[2:0] = 7 means continuous capture until frame buffer is full   536 #define ARDUCHIP_MODE           0x02  //Mode register   537 #define MCU2LCD_MODE            0x00   538 #define CAM2LCD_MODE            0x01   539 #define LCD2MCU_MODE            0x02   541 #define ARDUCHIP_TIM            0x03  //Timming control   542 #if !(defined OV2640_MINI_2MP)   543     #define HREF_LEVEL_MASK         0x01  //0 = High active ,       1 = Low active   544     #define VSYNC_LEVEL_MASK        0x02  //0 = High active ,       1 = Low active   545     #define LCD_BKEN_MASK           0x04  //0 = Enable,                     1 = Disable   546     #if (defined ARDUCAM_SHIELD_V2)   547         #define PCLK_REVERSE_MASK   0x08  //0 = Normal PCLK,        1 = REVERSED PCLK   549         #define PCLK_DELAY_MASK         0x08  //0 = data no delay,      1 = data delayed one PCLK   556 #define ARDUCHIP_FIFO           0x04  //FIFO and I2C control   557 #define FIFO_CLEAR_MASK         0x01   558 #define FIFO_START_MASK         0x02   559 #define FIFO_RDPTR_RST_MASK     0x10   560 #define FIFO_WRPTR_RST_MASK     0x20   562 #define ARDUCHIP_GPIO             0x06  //GPIO Write Register   563 #if !(defined (ARDUCAM_SHIELD_V2) || defined (ARDUCAM_SHIELD_REVC))   564 #define GPIO_RESET_MASK         0x01  //0 = Sensor reset,                           1 =  Sensor normal operation   565 #define GPIO_PWDN_MASK          0x02  //0 = Sensor normal operation,    1 = Sensor standby   566 #define GPIO_PWREN_MASK         0x04    //0 = Sensor LDO disable,           1 = sensor LDO enable   569 #define BURST_FIFO_READ         0x3C  //Burst FIFO read operation   570 #define SINGLE_FIFO_READ        0x3D  //Single FIFO read operation   572 #define ARDUCHIP_REV            0x40  //ArduCHIP revision   573 #define VER_LOW_MASK            0x3F   574 #define VER_HIGH_MASK           0xC0   576 #define ARDUCHIP_TRIG           0x41  //Trigger source   577 #define VSYNC_MASK              0x01   578 #define SHUTTER_MASK            0x02   579 #define CAP_DONE_MASK           0x08   581 #define FIFO_SIZE1              0x42  //Camera write FIFO size[7:0] for burst to read   582 #define FIFO_SIZE2              0x43  //Camera write FIFO size[15:8]   583 #define FIFO_SIZE3              0x44  //Camera write FIFO size[18:16]   608     void InitCAM( 
void );
   613     void flush_fifo(
void);
   614     void start_capture(
void);
   615     void clear_fifo_flag(
void);
   616     uint8_t read_fifo(
void);
   618     uint8_t read_reg(uint8_t addr);
   619     void write_reg(uint8_t addr, uint8_t data); 
   621     uint32_t read_fifo_length(
void);
   622     void set_fifo_burst(
void);
   624     void set_bit(uint8_t addr, uint8_t bit);
   625     void clear_bit(uint8_t addr, uint8_t bit);
   626     uint8_t get_bit(uint8_t addr, uint8_t bit);
   627     void set_mode(uint8_t mode);
   629   uint8_t bus_write(
int address, 
int value);
   630     uint8_t bus_read(
int address);  
   633     int wrSensorRegs8_8(
const struct sensor_reg*);
   636     int wrSensorRegs8_16(
const struct sensor_reg*);
   639     int wrSensorRegs16_8(
const struct sensor_reg*);
   642     int wrSensorRegs16_16(
const struct sensor_reg*);
   645     byte wrSensorReg8_8(
int regID, 
int regDat);
   646     byte rdSensorReg8_8(uint8_t regID, uint8_t* regDat);
   649     byte wrSensorReg8_16(
int regID, 
int regDat);
   650     byte rdSensorReg8_16(uint8_t regID, uint16_t* regDat);
   653     byte wrSensorReg16_8(
int regID, 
int regDat);
   654     byte rdSensorReg16_8(uint16_t regID, uint8_t* regDat);
   657     byte wrSensorReg16_16(
int regID, 
int regDat);
   658     byte rdSensorReg16_16(uint16_t regID, uint16_t* regDat);
   660     void OV2640_set_JPEG_size(uint8_t size);
   661     void OV3640_set_JPEG_size(uint8_t size);
   662     void OV5642_set_JPEG_size(uint8_t size);
   663     void OV5640_set_JPEG_size(uint8_t size);
   665     void OV5642_set_RAW_size (uint8_t size);
   668     void OV2640_set_Light_Mode(uint8_t Light_Mode);
   669   void OV3640_set_Light_Mode(uint8_t Light_Mode);
   670     void OV5642_set_Light_Mode(uint8_t Light_Mode);
   671     void OV5640_set_Light_Mode(uint8_t Light_Mode);
   673     void OV2640_set_Color_Saturation(uint8_t Color_Saturation);
   674     void OV3640_set_Color_Saturation(uint8_t Color_Saturation);
   675     void OV5642_set_Color_Saturation(uint8_t Color_Saturation);
   676     void OV5640_set_Color_Saturation(uint8_t Color_Saturation);
   679     void OV2640_set_Brightness(uint8_t Brightness);
   680     void OV3640_set_Brightness(uint8_t Brightness);
   681   void OV5642_set_Brightness(uint8_t Brightness);
   682   void OV5640_set_Brightness(uint8_t Brightness);
   684     void OV2640_set_Contrast(uint8_t Contrast);
   685     void OV3640_set_Contrast(uint8_t Contrast);
   686     void OV5642_set_Contrast(uint8_t Contrast);
   687     void OV5640_set_Contrast(uint8_t Contrast);
   689     void OV2640_set_Special_effects(uint8_t Special_effect);
   690     void OV3640_set_Special_effects(uint8_t Special_effect);
   691     void OV5642_set_Special_effects(uint8_t Special_effect);
   692     void OV5640_set_Special_effects(uint8_t Special_effect);
   695     void OV3640_set_Exposure_level(uint8_t level);
   696     void OV3640_set_Sharpness(uint8_t Sharpness);
   697     void OV3640_set_Mirror_Flip(uint8_t Mirror_Flip);
   700     void OV5642_set_hue(uint8_t degree);
   701     void OV5642_set_Exposure_level(uint8_t level);
   702     void OV5642_set_Sharpness(uint8_t Sharpness);
   703   void OV5642_set_Mirror_Flip(uint8_t Mirror_Flip);
   704   void OV5642_set_Compress_quality(uint8_t quality);
   705   void OV5642_Test_Pattern(uint8_t Pattern);
   708   void OV5640_set_EV(uint8_t EV);
   709   void OV5640_set_Night_Mode(uint8_t Night_mode);
   710   void OV5640_set_Banding_Filter(uint8_t Banding_Filter);
   715     void set_format(byte fmt);
   717     #if defined (RASPBERRY_PI)   718     uint8_t transfer(uint8_t data);
   719     void transfers(uint8_t *buf, uint32_t size);
   722     void transferBytes_(uint8_t * out, uint8_t * in, uint8_t size);
   723     void transferBytes(uint8_t * out, uint8_t * in, uint32_t size);
   724     inline void setDataBits(uint16_t bits);
   734 #if defined OV7660_CAM     735     #include "ov7660_regs.h"   738 #if defined OV7725_CAM     739     #include "ov7725_regs.h"   742 #if defined OV7670_CAM     743     #include "ov7670_regs.h"   746 #if defined OV7675_CAM   747     #include "ov7675_regs.h"   750 #if ( defined(OV5642_CAM) || defined(OV5642_MINI_5MP) || defined(OV5642_MINI_5MP_BIT_ROTATION_FIXED) || defined(OV5642_MINI_5MP_PLUS) )    754 #if (defined(OV3640_CAM) || defined(OV3640_MINI_3MP))      755     #include "ov3640_regs.h"   758 #if (defined(OV2640_CAM) || defined(OV2640_MINI_2MP) || defined(OV2640_MINI_2MP_PLUS))   759     #include "ov2640_regs.h"   762 #if defined MT9D111A_CAM  || defined MT9D111B_CAM      763     #include "mt9d111_regs.h"   766 #if defined MT9M112_CAM    767     #include "mt9m112_regs.h"   770 #if defined MT9V111_CAM    771     #include "mt9v111_regs.h"   774 #if ( defined(OV5640_CAM)   || defined(OV5640_MINI_5MP_PLUS) )   775     #include "ov5640_regs.h"   778 #if defined MT9M001_CAM    779     #include "mt9m001_regs.h"   782 #if defined MT9T112_CAM    783     #include "mt9t112_regs.h"   786 #if defined MT9D112_CAM    787     #include "mt9d112_regs.h"   790 #if defined MT9M034_CAM    791     #include "mt9m034_regs.h" regtype * P_CS
Definition: ArduCAM.h:727
 
uint16_t val
Definition: ArduCAM.h:594
 
byte sensor_addr
Definition: ArduCAM.h:731
 
Definition: ArduCAM.h:592
 
Definition: ArduCAM.h:603
 
byte m_fmt
Definition: ArduCAM.h:729
 
byte sensor_model
Definition: ArduCAM.h:730
 
regsize B_CS
Definition: ArduCAM.h:728
 
uint16_t reg
Definition: ArduCAM.h:593