V2.0.3
This commit is contained in:
396
src/sensor.cpp
396
src/sensor.cpp
@ -1,3 +1,256 @@
|
|||||||
|
// #include "Sensor.h"
|
||||||
|
// #include "driver/uart.h"
|
||||||
|
|
||||||
|
// sensor_data sensor_info;
|
||||||
|
|
||||||
|
// EventGroupHandle_t sensor_event_group;
|
||||||
|
// uint16_t receive_buff1[516];
|
||||||
|
// uint16_t receive_buff2[516];
|
||||||
|
// volatile uint32_t count = 0;
|
||||||
|
// uint32_t pos = 0;
|
||||||
|
// volatile uint64_t frame_count = 0;
|
||||||
|
// volatile bool read_flag = false;
|
||||||
|
// #define trigger_pin GPIO_NUM_8
|
||||||
|
// #define rst_pin GPIO_NUM_38
|
||||||
|
// void IRAM_ATTR handleFallingEdge()
|
||||||
|
// {
|
||||||
|
// // read_flag = true;
|
||||||
|
// // count = 0;
|
||||||
|
// // if(count == 3) digitalWrite(rst_pin, 0);
|
||||||
|
// if(digitalRead(trigger_pin) == 0) read_flag = true;
|
||||||
|
// else read_flag = false;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void sensor_init()
|
||||||
|
// {
|
||||||
|
// sensor_info.sn = 0;
|
||||||
|
// if (SPIFFS.begin(true))
|
||||||
|
// {
|
||||||
|
// // Serial.println("SPIFFS mount ok!");
|
||||||
|
// sensor_data_read(&sensor_info);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// // Serial.println("SPIFFS mount failed!");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if(sensor_info.flag != 1)
|
||||||
|
// {
|
||||||
|
// sensor_info.flag = 0;
|
||||||
|
// sensor_info.a1 = 2.73e-8;
|
||||||
|
// sensor_info.a2 = -0.000025;
|
||||||
|
// sensor_info.a3 = -1.14675;
|
||||||
|
// sensor_info.a4 = 1082.6422;
|
||||||
|
// // sensor_info.sn = 1;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// pinMode(Shutter1_pin, OUTPUT);
|
||||||
|
// pinMode(Shutter2_pin, OUTPUT);
|
||||||
|
// pinMode(rst_pin, OUTPUT);
|
||||||
|
|
||||||
|
|
||||||
|
// Shutter_Open(Shutter_1);
|
||||||
|
// // digitalWrite(rst_pin, 1);
|
||||||
|
// // vTaskDelay(36);
|
||||||
|
// digitalWrite(rst_pin, 0);
|
||||||
|
// vTaskDelay(36);
|
||||||
|
|
||||||
|
// Serial2.setTimeout(1);
|
||||||
|
// Serial2.setRxBufferSize(1032);
|
||||||
|
// Serial2.setTxBufferSize(256);
|
||||||
|
// Serial2.begin(921600,SERIAL_8N1,rx,tx);
|
||||||
|
|
||||||
|
// Send_Shutter_Time(12);
|
||||||
|
|
||||||
|
// // Serial2.end();
|
||||||
|
|
||||||
|
// sensor_event_group = xEventGroupCreate();
|
||||||
|
|
||||||
|
// pinMode(trigger_pin, INPUT);
|
||||||
|
// attachInterrupt(digitalPinToInterrupt(trigger_pin), handleFallingEdge, CHANGE);
|
||||||
|
|
||||||
|
// xTaskCreatePinnedToCore(sensor_read_task, "sensor_read_task", 1024*10, NULL, 30, NULL, 0);
|
||||||
|
|
||||||
|
// vTaskDelay(2000);
|
||||||
|
// digitalWrite(rst_pin, 1);
|
||||||
|
// shutter_stop();
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// void sensor_rest()
|
||||||
|
// {
|
||||||
|
// digitalWrite(rst_pin, 0);
|
||||||
|
// // for(int i = 0; i < 10000; i++);
|
||||||
|
// vTaskDelay(1);
|
||||||
|
// // delayMicroseconds(50);
|
||||||
|
// digitalWrite(rst_pin, 1);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void sensor_write(uint8_t *data,uint32_t len)
|
||||||
|
// {
|
||||||
|
// Serial2.write(data,len);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void Send_Shutter_Time(uint32_t shutter_time) {
|
||||||
|
// uint32_t tt = shutter_time*1000;
|
||||||
|
|
||||||
|
// uint8_t t_buff[4];
|
||||||
|
// t_buff[0] = *((uint8_t *)&tt+3);
|
||||||
|
// t_buff[1] = *((uint8_t *)&tt+2);
|
||||||
|
// t_buff[2] = *((uint8_t *)&tt+1);
|
||||||
|
// t_buff[3] = *((uint8_t *)&tt);
|
||||||
|
// sensor_write(t_buff,4);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// void sensor_read_task(void *pvParameters)
|
||||||
|
// {
|
||||||
|
// uint8_t *p = new uint8_t[1040];
|
||||||
|
// int indexnow=0;
|
||||||
|
// while (1)
|
||||||
|
// {
|
||||||
|
// if(read_flag == true)
|
||||||
|
// {
|
||||||
|
// int lent=0;
|
||||||
|
// u_char c=-1;
|
||||||
|
// while (1)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// int temp = uart_read_bytes(2,p,1032,10);
|
||||||
|
|
||||||
|
// if(temp == 1032)
|
||||||
|
// {
|
||||||
|
// // p[lent] = c;
|
||||||
|
// // lent++;
|
||||||
|
// // if(lent >= 1032)
|
||||||
|
// // {
|
||||||
|
// lent = 1032;
|
||||||
|
// break;
|
||||||
|
// // }
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// read_flag = false;
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// memcpy(receive_buff2,p,lent);
|
||||||
|
|
||||||
|
// frame_count++;
|
||||||
|
// read_flag = false;
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if(Serial2.available())
|
||||||
|
// {
|
||||||
|
// Serial2.readBytes((uint8_t *)p, Serial2.available());
|
||||||
|
// }
|
||||||
|
// vTaskDelay(1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void get_sensor_data(uint16_t *data_buff)
|
||||||
|
// {
|
||||||
|
// // sensor_rest();
|
||||||
|
// // xEventGroupSetBits(sensor_event_group, START_READ_BIT);
|
||||||
|
// uint32_t target = frame_count + 1;
|
||||||
|
// while(frame_count < target)
|
||||||
|
// {
|
||||||
|
// vTaskDelay(1);
|
||||||
|
// }
|
||||||
|
// if(target == frame_count)
|
||||||
|
// {
|
||||||
|
// for (int i = 0; i < 516; i++)
|
||||||
|
// {
|
||||||
|
// data_buff[i] = receive_buff2[i];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // void get_sensor_data(uint16_t *data_buff,int timewaitinms)
|
||||||
|
// // {
|
||||||
|
// // sensor_rest();
|
||||||
|
// // // xEventGroupSetBits(sensor_event_group, START_READ_BIT);
|
||||||
|
// // vTaskDelay(timewaitinms);
|
||||||
|
// // uint32_t target = frame_count + 1;
|
||||||
|
// // while(frame_count < target)
|
||||||
|
// // {
|
||||||
|
// // vTaskDelay(1);
|
||||||
|
// // }
|
||||||
|
// // if(target == frame_count)
|
||||||
|
// // {
|
||||||
|
// // for (int i = 0; i < 516; i++)
|
||||||
|
// // {
|
||||||
|
// // data_buff[i] = receive_buff2[i];
|
||||||
|
// // }
|
||||||
|
// // }
|
||||||
|
// // }
|
||||||
|
// void Shutter_Open(uint8_t shutter)
|
||||||
|
// {
|
||||||
|
// digitalWrite(Shutter2_pin, 1);
|
||||||
|
// digitalWrite(Shutter1_pin, 0);
|
||||||
|
// // if (shutter == Shutter_1)
|
||||||
|
// // {
|
||||||
|
// // digitalWrite( Shutter2_pin, 1);
|
||||||
|
// // digitalWrite(Shutter1_pin, 0);
|
||||||
|
|
||||||
|
// // }
|
||||||
|
// // else if(shutter == Shutter_2)
|
||||||
|
// // {
|
||||||
|
// // digitalWrite(Shutter1_pin, 1);
|
||||||
|
// // }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void shutter_stop()
|
||||||
|
// {
|
||||||
|
// digitalWrite(Shutter1_pin, 0);
|
||||||
|
// digitalWrite(Shutter2_pin, 0);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void Shutter_Close(uint8_t shutter)
|
||||||
|
// {
|
||||||
|
// digitalWrite(Shutter2_pin, 0);
|
||||||
|
// digitalWrite(Shutter1_pin, 1);
|
||||||
|
// // if (shutter == Shutter_1)
|
||||||
|
// // {
|
||||||
|
// // digitalWrite( Shutter1_pin, 1);
|
||||||
|
// // digitalWrite( Shutter2_pin, 0);
|
||||||
|
// // }
|
||||||
|
// // else if (shutter == Shutter_2)
|
||||||
|
// // {
|
||||||
|
// // digitalWrite(Shutter1_pin, 0);
|
||||||
|
// // }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// void sensor_data_save(sensor_data *sensor_data_struct)
|
||||||
|
// {
|
||||||
|
// File file;
|
||||||
|
// file = SPIFFS.open("/system.bin", FILE_WRITE);
|
||||||
|
// file.write((uint8_t *)sensor_data_struct,sizeof(sensor_data));
|
||||||
|
// file.flush();
|
||||||
|
// file.close();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void sensor_data_read(sensor_data *sensor_data_struct)
|
||||||
|
// {
|
||||||
|
// File file;
|
||||||
|
// file = SPIFFS.open("/system.bin", FILE_READ);
|
||||||
|
// file.read((uint8_t *)sensor_data_struct,sizeof(sensor_data));
|
||||||
|
// file.flush();
|
||||||
|
// file.close();
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "Sensor.h"
|
#include "Sensor.h"
|
||||||
#include "driver/uart.h"
|
#include "driver/uart.h"
|
||||||
|
|
||||||
@ -14,13 +267,25 @@ volatile bool read_flag = false;
|
|||||||
#define rst_pin GPIO_NUM_38
|
#define rst_pin GPIO_NUM_38
|
||||||
void IRAM_ATTR handleFallingEdge()
|
void IRAM_ATTR handleFallingEdge()
|
||||||
{
|
{
|
||||||
// read_flag = true;
|
|
||||||
// count = 0;
|
|
||||||
// if(count == 3) digitalWrite(rst_pin, 0);
|
|
||||||
if(digitalRead(trigger_pin) == 0) read_flag = true;
|
if(digitalRead(trigger_pin) == 0) read_flag = true;
|
||||||
else read_flag = false;
|
else read_flag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void uart2_init(void)
|
||||||
|
{
|
||||||
|
const uart_config_t uart_config = {
|
||||||
|
.baud_rate = 921600,
|
||||||
|
.data_bits = UART_DATA_8_BITS,
|
||||||
|
.parity = UART_PARITY_DISABLE,
|
||||||
|
.stop_bits = UART_STOP_BITS_1,
|
||||||
|
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
|
||||||
|
};
|
||||||
|
// We won't use a buffer for sending data.
|
||||||
|
uart_driver_install(UART_NUM_2, 1032, 1024 * 2, 0, NULL, 0);
|
||||||
|
uart_param_config(UART_NUM_2, &uart_config);
|
||||||
|
uart_set_pin(UART_NUM_2, tx, rx, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
|
||||||
|
}
|
||||||
void sensor_init()
|
void sensor_init()
|
||||||
{
|
{
|
||||||
sensor_info.sn = 0;
|
sensor_info.sn = 0;
|
||||||
@ -55,14 +320,14 @@ void sensor_init()
|
|||||||
digitalWrite(rst_pin, 0);
|
digitalWrite(rst_pin, 0);
|
||||||
vTaskDelay(36);
|
vTaskDelay(36);
|
||||||
|
|
||||||
Serial2.setTimeout(1);
|
// Serial2.setTimeout(1);
|
||||||
Serial2.setRxBufferSize(1032);
|
// Serial2.setRxBufferSize(1032);
|
||||||
Serial2.setTxBufferSize(256);
|
// Serial2.setTxBufferSize(256);
|
||||||
Serial2.begin(921600,SERIAL_8N1,rx,tx);
|
// Serial2.begin(921600,SERIAL_8N1,rx,tx);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Send_Shutter_Time(12);
|
|
||||||
|
|
||||||
// Serial2.end();
|
|
||||||
|
|
||||||
sensor_event_group = xEventGroupCreate();
|
sensor_event_group = xEventGroupCreate();
|
||||||
|
|
||||||
@ -71,9 +336,9 @@ void sensor_init()
|
|||||||
|
|
||||||
xTaskCreatePinnedToCore(sensor_read_task, "sensor_read_task", 1024*10, NULL, 30, NULL, 0);
|
xTaskCreatePinnedToCore(sensor_read_task, "sensor_read_task", 1024*10, NULL, 30, NULL, 0);
|
||||||
|
|
||||||
vTaskDelay(2000);
|
// vTaskDelay(100);
|
||||||
digitalWrite(rst_pin, 1);
|
// digitalWrite(rst_pin, 1);
|
||||||
shutter_stop();
|
// shutter_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -89,7 +354,8 @@ void sensor_rest()
|
|||||||
|
|
||||||
void sensor_write(uint8_t *data,uint32_t len)
|
void sensor_write(uint8_t *data,uint32_t len)
|
||||||
{
|
{
|
||||||
Serial2.write(data,len);
|
// Serial2.write(data,len);
|
||||||
|
uart_write_bytes(UART_NUM_2, data, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Send_Shutter_Time(uint32_t shutter_time) {
|
void Send_Shutter_Time(uint32_t shutter_time) {
|
||||||
@ -106,56 +372,55 @@ void Send_Shutter_Time(uint32_t shutter_time) {
|
|||||||
|
|
||||||
void sensor_read_task(void *pvParameters)
|
void sensor_read_task(void *pvParameters)
|
||||||
{
|
{
|
||||||
|
uart2_init();
|
||||||
|
vTaskDelay(100);
|
||||||
|
uart_flush_input(UART_NUM_2);
|
||||||
|
shutter_stop();
|
||||||
|
Send_Shutter_Time(12);
|
||||||
|
vTaskDelay(10);
|
||||||
|
digitalWrite(rst_pin, 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t *p = new uint8_t[1040];
|
uint8_t *p = new uint8_t[1040];
|
||||||
int indexnow=0;
|
int indexnow=0;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if(read_flag == true)
|
uint32_t length = 0;
|
||||||
|
uart_get_buffered_data_len(UART_NUM_2, (size_t*)&length);
|
||||||
|
if(length > 0)
|
||||||
{
|
{
|
||||||
int lent=0;
|
int lent=0;
|
||||||
u_char c=-1;
|
int temp = uart_read_bytes(2,p,1032,10);
|
||||||
while (1)
|
|
||||||
|
if(temp == 1032 && p[0] == 0xff && p[1] == 0xff)
|
||||||
{
|
{
|
||||||
|
|
||||||
int temp = uart_read_bytes(2,p,1032,10);
|
lent = 1032;
|
||||||
|
memcpy(receive_buff2,p,lent);
|
||||||
if(temp == 1032)
|
frame_count++;
|
||||||
{
|
read_flag = false;
|
||||||
// p[lent] = c;
|
|
||||||
// lent++;
|
|
||||||
// if(lent >= 1032)
|
|
||||||
// {
|
|
||||||
lent = 1032;
|
|
||||||
break;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
read_flag = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
memcpy(receive_buff2,p,lent);
|
else
|
||||||
|
|
||||||
frame_count++;
|
|
||||||
read_flag = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(Serial2.available())
|
|
||||||
{
|
{
|
||||||
Serial2.readBytes((uint8_t *)p, Serial2.available());
|
// read_flag = false;
|
||||||
|
digitalWrite(rst_pin, 0);
|
||||||
|
vTaskDelay(10);
|
||||||
|
uart_flush_input(UART_NUM_2);
|
||||||
|
vTaskDelay(10);
|
||||||
|
digitalWrite(rst_pin, 1);
|
||||||
|
|
||||||
|
// continue;
|
||||||
}
|
}
|
||||||
vTaskDelay(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vTaskDelay(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_sensor_data(uint16_t *data_buff)
|
void get_sensor_data(uint16_t *data_buff)
|
||||||
{
|
{
|
||||||
// sensor_rest();
|
|
||||||
// xEventGroupSetBits(sensor_event_group, START_READ_BIT);
|
|
||||||
uint32_t target = frame_count + 1;
|
uint32_t target = frame_count + 1;
|
||||||
while(frame_count < target)
|
while(frame_count < target)
|
||||||
{
|
{
|
||||||
@ -170,38 +435,12 @@ void get_sensor_data(uint16_t *data_buff)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// void get_sensor_data(uint16_t *data_buff,int timewaitinms)
|
|
||||||
// {
|
|
||||||
// sensor_rest();
|
|
||||||
// // xEventGroupSetBits(sensor_event_group, START_READ_BIT);
|
|
||||||
// vTaskDelay(timewaitinms);
|
|
||||||
// uint32_t target = frame_count + 1;
|
|
||||||
// while(frame_count < target)
|
|
||||||
// {
|
|
||||||
// vTaskDelay(1);
|
|
||||||
// }
|
|
||||||
// if(target == frame_count)
|
|
||||||
// {
|
|
||||||
// for (int i = 0; i < 516; i++)
|
|
||||||
// {
|
|
||||||
// data_buff[i] = receive_buff2[i];
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
void Shutter_Open(uint8_t shutter)
|
void Shutter_Open(uint8_t shutter)
|
||||||
{
|
{
|
||||||
digitalWrite(Shutter2_pin, 1);
|
digitalWrite(Shutter2_pin, 1);
|
||||||
digitalWrite(Shutter1_pin, 0);
|
digitalWrite(Shutter1_pin, 0);
|
||||||
// if (shutter == Shutter_1)
|
|
||||||
// {
|
|
||||||
// digitalWrite( Shutter2_pin, 1);
|
|
||||||
// digitalWrite(Shutter1_pin, 0);
|
|
||||||
|
|
||||||
// }
|
|
||||||
// else if(shutter == Shutter_2)
|
|
||||||
// {
|
|
||||||
// digitalWrite(Shutter1_pin, 1);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void shutter_stop()
|
void shutter_stop()
|
||||||
@ -214,15 +453,7 @@ void Shutter_Close(uint8_t shutter)
|
|||||||
{
|
{
|
||||||
digitalWrite(Shutter2_pin, 0);
|
digitalWrite(Shutter2_pin, 0);
|
||||||
digitalWrite(Shutter1_pin, 1);
|
digitalWrite(Shutter1_pin, 1);
|
||||||
// if (shutter == Shutter_1)
|
|
||||||
// {
|
|
||||||
// digitalWrite( Shutter1_pin, 1);
|
|
||||||
// digitalWrite( Shutter2_pin, 0);
|
|
||||||
// }
|
|
||||||
// else if (shutter == Shutter_2)
|
|
||||||
// {
|
|
||||||
// digitalWrite(Shutter1_pin, 0);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -246,3 +477,4 @@ void sensor_data_read(sensor_data *sensor_data_struct)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user