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