@@ -88,10 +88,10 @@ static int set_reg_bits(uint8_t slv_addr, uint16_t reg, uint8_t offset, uint8_t
88
88
return ret ;
89
89
}
90
90
91
- static int write_regs (uint8_t slv_addr , const uint16_t (* regs )[2 ])
91
+ static int write_regs (uint8_t slv_addr , const uint8_t (* regs )[2 ], size_t regs_size )
92
92
{
93
93
int i = 0 , ret = 0 ;
94
- while (!ret && regs [ i ][ 0 ] != REGLIST_TAIL ) {
94
+ while (!ret && ( i < regs_size ) ) {
95
95
if (regs [i ][0 ] == REG_DLY ) {
96
96
vTaskDelay (regs [i ][1 ] / portTICK_PERIOD_MS );
97
97
} else {
@@ -132,11 +132,12 @@ static int reset(sensor_t *sensor)
132
132
ESP_LOGE (TAG , "Software Reset FAILED!" );
133
133
return ret ;
134
134
}
135
- vTaskDelay (100 / portTICK_PERIOD_MS );
136
- ret = write_regs (sensor -> slv_addr , gc0308_sensor_default_regs );
135
+
136
+ vTaskDelay (80 / portTICK_PERIOD_MS );
137
+ ret = write_regs (sensor -> slv_addr , gc0308_sensor_default_regs , sizeof (gc0308_sensor_default_regs )/(sizeof (uint8_t ) * 2 ));
137
138
if (ret == 0 ) {
138
139
ESP_LOGD (TAG , "Camera defaults loaded" );
139
- vTaskDelay (100 / portTICK_PERIOD_MS );
140
+ vTaskDelay (80 / portTICK_PERIOD_MS );
140
141
write_reg (sensor -> slv_addr , 0xfe , 0x00 );
141
142
#ifdef CONFIG_IDF_TARGET_ESP32
142
143
set_reg_bits (sensor -> slv_addr , 0x28 , 4 , 0x07 , 1 ); //frequency division for esp32, ensure pclk <= 15MHz
0 commit comments