mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Merge pull request #1382 from openmv/systick_delay
Use mp_hal_delay_ms instead of systick_sleep.
This commit is contained in:
commit
9ca4a06776
@ -11,11 +11,11 @@
|
|||||||
#include "py/nlr.h"
|
#include "py/nlr.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
|
#include "py/mphal.h"
|
||||||
|
|
||||||
#include "extint.h"
|
#include "extint.h"
|
||||||
#include "spi.h"
|
#include "spi.h"
|
||||||
#include "softtimer.h"
|
#include "softtimer.h"
|
||||||
#include "systick.h"
|
|
||||||
|
|
||||||
#include "py_helper.h"
|
#include "py_helper.h"
|
||||||
#include "omv_boardconfig.h"
|
#include "omv_boardconfig.h"
|
||||||
@ -346,29 +346,29 @@ int fir_lepton_init(cambus_t *bus, int *w, int *h, int *refresh, int *resolution
|
|||||||
|
|
||||||
#if defined(OMV_FIR_LEPTON_PWDN_PIN_PRESENT)
|
#if defined(OMV_FIR_LEPTON_PWDN_PIN_PRESENT)
|
||||||
OMV_FIR_LEPTON_PWDN_LOW();
|
OMV_FIR_LEPTON_PWDN_LOW();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
OMV_FIR_LEPTON_PWDN_HIGH();
|
OMV_FIR_LEPTON_PWDN_HIGH();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(OMV_FIR_LEPTON_RST_PIN_PRESENT)
|
#if defined(OMV_FIR_LEPTON_RST_PIN_PRESENT)
|
||||||
OMV_FIR_LEPTON_RST_LOW();
|
OMV_FIR_LEPTON_RST_LOW();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
OMV_FIR_LEPTON_RST_HIGH();
|
OMV_FIR_LEPTON_RST_HIGH();
|
||||||
systick_sleep(1000);
|
mp_hal_delay_ms(1000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LEP_RAD_ENABLE_E rad;
|
LEP_RAD_ENABLE_E rad;
|
||||||
LEP_AGC_ROI_T roi;
|
LEP_AGC_ROI_T roi;
|
||||||
|
|
||||||
for (uint32_t start = systick_current_millis();; systick_sleep(1)) {
|
for (uint32_t start = mp_hal_ticks_ms();; mp_hal_delay_ms(1)) {
|
||||||
if (LEP_OpenPort(bus, LEP_CCI_TWI, 0, &fir_lepton_handle) == LEP_OK) {
|
if (LEP_OpenPort(bus, LEP_CCI_TWI, 0, &fir_lepton_handle) == LEP_OK) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((systick_current_millis() - start) >= 1000) {
|
if ((mp_hal_ticks_ms() - start) >= 1000) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -378,10 +378,10 @@ int fir_lepton_init(cambus_t *bus, int *w, int *h, int *refresh, int *resolution
|
|||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
systick_sleep(1000);
|
mp_hal_delay_ms(1000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (uint32_t start = systick_current_millis();; systick_sleep(1)) {
|
for (uint32_t start = mp_hal_ticks_ms();; mp_hal_delay_ms(1)) {
|
||||||
LEP_SDK_BOOT_STATUS_E status;
|
LEP_SDK_BOOT_STATUS_E status;
|
||||||
|
|
||||||
if (LEP_GetCameraBootStatus(&fir_lepton_handle, &status) != LEP_OK) {
|
if (LEP_GetCameraBootStatus(&fir_lepton_handle, &status) != LEP_OK) {
|
||||||
@ -392,12 +392,12 @@ int fir_lepton_init(cambus_t *bus, int *w, int *h, int *refresh, int *resolution
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((systick_current_millis() - start) >= 1000) {
|
if ((mp_hal_ticks_ms() - start) >= 1000) {
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32_t start = systick_current_millis();; systick_sleep(1)) {
|
for (uint32_t start = mp_hal_ticks_ms();; mp_hal_delay_ms(1)) {
|
||||||
LEP_UINT16 status;
|
LEP_UINT16 status;
|
||||||
|
|
||||||
if (LEP_DirectReadRegister(&fir_lepton_handle, LEP_I2C_STATUS_REG, &status) != LEP_OK) {
|
if (LEP_DirectReadRegister(&fir_lepton_handle, LEP_I2C_STATUS_REG, &status) != LEP_OK) {
|
||||||
@ -408,7 +408,7 @@ int fir_lepton_init(cambus_t *bus, int *w, int *h, int *refresh, int *resolution
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((systick_current_millis() - start) >= 1000) {
|
if ((mp_hal_ticks_ms() - start) >= 1000) {
|
||||||
return -6;
|
return -6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -543,14 +543,14 @@ static const uint16_t *fir_lepton_get_frame(int timeout)
|
|||||||
int sampled_framebuffer_tail = framebuffer_tail;
|
int sampled_framebuffer_tail = framebuffer_tail;
|
||||||
|
|
||||||
if (timeout >= 0) {
|
if (timeout >= 0) {
|
||||||
for (uint32_t start = systick_current_millis();;) {
|
for (uint32_t start = mp_hal_ticks_ms();;) {
|
||||||
sampled_framebuffer_tail = framebuffer_tail;
|
sampled_framebuffer_tail = framebuffer_tail;
|
||||||
|
|
||||||
if (framebuffer_head != sampled_framebuffer_tail) {
|
if (framebuffer_head != sampled_framebuffer_tail) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((systick_current_millis() - start) >= timeout) {
|
if ((mp_hal_ticks_ms() - start) >= timeout) {
|
||||||
mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("Timeout!"));
|
mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("Timeout!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -712,7 +712,7 @@ void fir_lepton_trigger_ffc(uint n_args, const mp_obj_t *args, mp_map_t *kw_args
|
|||||||
int timeout = py_helper_keyword_int(n_args, args, 0, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_timeout), -1);
|
int timeout = py_helper_keyword_int(n_args, args, 0, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_timeout), -1);
|
||||||
|
|
||||||
if (timeout >= 0) {
|
if (timeout >= 0) {
|
||||||
for (uint32_t start = systick_current_millis();;) {
|
for (uint32_t start = mp_hal_ticks_ms();;) {
|
||||||
LEP_SYS_STATUS_E status;
|
LEP_SYS_STATUS_E status;
|
||||||
|
|
||||||
if (LEP_GetSysFFCStatus(&fir_lepton_handle, &status) != LEP_OK) {
|
if (LEP_GetSysFFCStatus(&fir_lepton_handle, &status) != LEP_OK) {
|
||||||
@ -723,11 +723,11 @@ void fir_lepton_trigger_ffc(uint n_args, const mp_obj_t *args, mp_map_t *kw_args
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((systick_current_millis() - start) >= timeout) {
|
if ((mp_hal_ticks_ms() - start) >= timeout) {
|
||||||
mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("Timeout!"));
|
mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("Timeout!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
systick_sleep(1);
|
mp_hal_delay_ms(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
#include "hm01b0.h"
|
#include "hm01b0.h"
|
||||||
#include "paj6100.h"
|
#include "paj6100.h"
|
||||||
#include "gc2145.h"
|
#include "gc2145.h"
|
||||||
#include "systick.h"
|
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
#include "omv_boardconfig.h"
|
#include "omv_boardconfig.h"
|
||||||
#include "unaligned_memcpy.h"
|
#include "unaligned_memcpy.h"
|
||||||
@ -199,10 +198,10 @@ int sensor_init()
|
|||||||
|
|
||||||
/* Do a power cycle */
|
/* Do a power cycle */
|
||||||
DCMI_PWDN_HIGH();
|
DCMI_PWDN_HIGH();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
DCMI_PWDN_LOW();
|
DCMI_PWDN_LOW();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
// Configure the sensor external clock (XCLK) to XCLK_FREQ.
|
// Configure the sensor external clock (XCLK) to XCLK_FREQ.
|
||||||
//
|
//
|
||||||
@ -249,14 +248,14 @@ int sensor_init()
|
|||||||
|
|
||||||
/* Reset the sensor */
|
/* Reset the sensor */
|
||||||
DCMI_RESET_HIGH();
|
DCMI_RESET_HIGH();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
DCMI_RESET_LOW();
|
DCMI_RESET_LOW();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
// Initialize the camera bus.
|
// Initialize the camera bus.
|
||||||
cambus_init(&sensor.bus, ISC_I2C_ID, ISC_I2C_SPEED);
|
cambus_init(&sensor.bus, ISC_I2C_ID, ISC_I2C_SPEED);
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
/* Probe the sensor */
|
/* Probe the sensor */
|
||||||
sensor.slv_addr = cambus_scan(&sensor.bus);
|
sensor.slv_addr = cambus_scan(&sensor.bus);
|
||||||
@ -267,7 +266,7 @@ int sensor_init()
|
|||||||
|
|
||||||
/* Pull the sensor out of the reset state */
|
/* Pull the sensor out of the reset state */
|
||||||
DCMI_RESET_HIGH();
|
DCMI_RESET_HIGH();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
/* Probe again to set the slave addr */
|
/* Probe again to set the slave addr */
|
||||||
sensor.slv_addr = cambus_scan(&sensor.bus);
|
sensor.slv_addr = cambus_scan(&sensor.bus);
|
||||||
@ -275,14 +274,14 @@ int sensor_init()
|
|||||||
sensor.pwdn_pol = ACTIVE_LOW;
|
sensor.pwdn_pol = ACTIVE_LOW;
|
||||||
|
|
||||||
DCMI_PWDN_HIGH();
|
DCMI_PWDN_HIGH();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
sensor.slv_addr = cambus_scan(&sensor.bus);
|
sensor.slv_addr = cambus_scan(&sensor.bus);
|
||||||
if (sensor.slv_addr == 0) {
|
if (sensor.slv_addr == 0) {
|
||||||
sensor.reset_pol = ACTIVE_HIGH;
|
sensor.reset_pol = ACTIVE_HIGH;
|
||||||
|
|
||||||
DCMI_RESET_LOW();
|
DCMI_RESET_LOW();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
sensor.slv_addr = cambus_scan(&sensor.bus);
|
sensor.slv_addr = cambus_scan(&sensor.bus);
|
||||||
#ifndef OMV_ENABLE_NONI2CIS
|
#ifndef OMV_ENABLE_NONI2CIS
|
||||||
@ -606,14 +605,14 @@ int sensor_reset()
|
|||||||
// Hard-reset the sensor
|
// Hard-reset the sensor
|
||||||
if (sensor.reset_pol == ACTIVE_HIGH) {
|
if (sensor.reset_pol == ACTIVE_HIGH) {
|
||||||
DCMI_RESET_HIGH();
|
DCMI_RESET_HIGH();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
DCMI_RESET_LOW();
|
DCMI_RESET_LOW();
|
||||||
} else {
|
} else {
|
||||||
DCMI_RESET_LOW();
|
DCMI_RESET_LOW();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
DCMI_RESET_HIGH();
|
DCMI_RESET_HIGH();
|
||||||
}
|
}
|
||||||
systick_sleep(20);
|
mp_hal_delay_ms(20);
|
||||||
|
|
||||||
// Call sensor-specific reset function
|
// Call sensor-specific reset function
|
||||||
if (sensor.reset(&sensor) != 0) {
|
if (sensor.reset(&sensor) != 0) {
|
||||||
@ -720,7 +719,7 @@ int sensor_shutdown(int enable)
|
|||||||
ret = sensor_dcmi_config(sensor.pixformat);
|
ret = sensor_dcmi_config(sensor.pixformat);
|
||||||
}
|
}
|
||||||
|
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -783,7 +782,7 @@ int sensor_set_pixformat(pixformat_t pixformat)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
systick_sleep(100); // wait for the camera to settle
|
mp_hal_delay_ms(100); // wait for the camera to settle
|
||||||
|
|
||||||
// Set pixel format
|
// Set pixel format
|
||||||
sensor.pixformat = pixformat;
|
sensor.pixformat = pixformat;
|
||||||
@ -817,7 +816,7 @@ int sensor_set_framesize(framesize_t framesize)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
systick_sleep(100); // wait for the camera to settle
|
mp_hal_delay_ms(100); // wait for the camera to settle
|
||||||
|
|
||||||
// Set framebuffer size
|
// Set framebuffer size
|
||||||
sensor.framesize = framesize;
|
sensor.framesize = framesize;
|
||||||
@ -1037,7 +1036,7 @@ int sensor_set_hmirror(int enable)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
sensor.hmirror = enable;
|
sensor.hmirror = enable;
|
||||||
systick_sleep(100); // wait for the camera to settle
|
mp_hal_delay_ms(100); // wait for the camera to settle
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1062,7 +1061,7 @@ int sensor_set_vflip(int enable)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
sensor.vflip = enable;
|
sensor.vflip = enable;
|
||||||
systick_sleep(100); // wait for the camera to settle
|
mp_hal_delay_ms(100); // wait for the camera to settle
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -37,13 +37,13 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include "systick.h"
|
|
||||||
#include "sensor.h"
|
#include "sensor.h"
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
|
|
||||||
#include "paj6100.h"
|
#include "paj6100.h"
|
||||||
#include "paj6100_reg.h"
|
#include "paj6100_reg.h"
|
||||||
#include "pixspi.h"
|
#include "pixspi.h"
|
||||||
|
#include "py/mphal.h"
|
||||||
|
|
||||||
#define CACHE_BANK
|
#define CACHE_BANK
|
||||||
|
|
||||||
@ -358,7 +358,7 @@ static int sleep(sensor_t *sensor, int enable)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
// Sleep 30ms
|
// Sleep 30ms
|
||||||
systick_sleep(30);
|
mp_hal_delay_ms(30);
|
||||||
ret = read_regs_w_bank(BANK_1, REG_CMD_LPM_ENH, &val, 1);
|
ret = read_regs_w_bank(BANK_1, REG_CMD_LPM_ENH, &val, 1);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printf("Failed to read REG_CMD_SENSOR_MODE.\n");
|
printf("Failed to read REG_CMD_SENSOR_MODE.\n");
|
||||||
@ -765,7 +765,7 @@ bool paj6100_detect(sensor_t *sensor)
|
|||||||
uint8_t part_id_l, part_id_h;
|
uint8_t part_id_l, part_id_h;
|
||||||
|
|
||||||
DCMI_RESET_HIGH();
|
DCMI_RESET_HIGH();
|
||||||
systick_sleep(10);
|
mp_hal_delay_ms(10);
|
||||||
|
|
||||||
if (!pixspi_init())
|
if (!pixspi_init())
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user