#include #include #include "sdk/os/zos.hpp" #include "sdk\components\flash\zsimple_flash.hpp" #include "sdk\components\zcancmder\zcanreceiver.hpp" #include "sdk\components\zcancmder_module\zcan_basic_order_module.hpp" #include "sdk\components\zprotocols\zcancmder_v2\protocol_parser.hpp" // #include "sdk\components\flash\znvs.hpp" // #include "global.hpp" #include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp" #include "sdk\components\cmdscheduler\cmd_scheduler_v2.hpp" #include "sdk\components\hardware\uart\zuart_dma_receiver.hpp" #include "sdk\components\mini_servo_motor\mini_servo_motor_ctrl_module.hpp" #include "sdk\components\pipette_module\pipette_ctrl_module_v2.hpp" #include "sdk\components\sensors\m3078\m3078_code_scaner.hpp" #include "sdk\components\sensors\tmp117\tmp117.hpp" #include "sdk\components\ti\drv8710.hpp" #include "sdk\components\tmc\ic\ztmc5130.hpp" #include "sdk\components\water_cooling_temperature_control_module\pwm_ctrl_module.hpp" #include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module.hpp" #include "sdk\components\zcancmder\zcan_board_module.hpp" #include "sdk\components\zcancmder\zcanreceiver_master.hpp" #include "sdk\components\zprotocol_helper\micro_computer_module_device_script_cmder_paser.hpp" #include "sdk\components\zprotocols\zcancmder_v2\protocol_proxy.hpp" #include "sdk\components\zprotocols\zcancmder_v2\zmodule_device_manager.hpp" // #include "M3078CodeScanner" #define TAG "main" using namespace iflytop; using namespace std; static ZModuleDeviceManager g_zModuleDeviceManager; static MicroComputerModuleDeviceScriptCmderPaser g_zModuleDeviceScriptCmderPaser; static ZIProtocolProxy proxy[255]; void cmdline_version_main() { chip_cfg_t chipcfg; chipcfg.us_dleay_tim = &PC_SYS_DELAY_US_TIMER; chipcfg.tim_irq_scheduler_tim = &PC_SYS_TIM_IRQ_SCHEDULER_TIMER; chipcfg.huart = &PC_DEBUG_UART; chipcfg.debuglight = PC_DEBUG_LIGHT_GPIO; chip_init(&chipcfg); zos_cfg_t zoscfg; zos_init(&zoscfg); ZLOGI(TAG, "boardId:%d", 0); ZLOGI(TAG, "init can bus"); auto* m_zcanCommnaderMaster_cfg = g_zcanCommnaderMaster.createCFG(); // can总线配置 g_zcanCommnaderMaster.init(m_zcanCommnaderMaster_cfg); // can总线 g_zModuleDeviceManager.initialize(&g_zcanCommnaderMaster); ZLOGI(TAG, "init can bus end..."); static ZUARTDmaReceiver dmaUartReceiver; static CmdSchedulerV2 cmder; ZUARTDmaReceiver::hardware_config_t cfg = { .huart = &PC_DEBUG_UART, .dma_rx = &PC_DEBUG_UART_DMA_HANDLER, .rxbuffersize = PC_DEBUG_UART_RX_BUF_SIZE, .rxovertime_ms = 10, }; ZLOGI(TAG, "init cmder"); dmaUartReceiver.initialize(&cfg); cmder.initialize(&dmaUartReceiver); ZLOGI(TAG, "init cmder end..."); ZLOGI(TAG, "init module"); g_zModuleDeviceManager.initialize(&g_zcanCommnaderMaster); g_zModuleDeviceScriptCmderPaser.initialize(&cmder, &g_zModuleDeviceManager); ZLOGI(TAG, "reg modules"); for (size_t i = 1; i < 255; i++) { proxy[i].initialize(i, &g_zcanCommnaderMaster); g_zModuleDeviceManager.registerModule(&proxy[i]); } ZLOGI(TAG, "board init ok..."); osDelay(3000); // 11 加热转盘 // 12 开盖1 // 21 主机械臂升降 // 22 主机械臂夹取 // 31 主机械臂旋转 // 41 加液机械臂旋转 // 51 加液转盘 // 61 加酸蠕动泵1 // 70 IO板 // 加热转盘 // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_shaft, 0); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_one_circle_pulse, 10000); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_one_circle_pulse_denominator, 30); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_default_velocity, 150); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_default_acc, 25); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_default_dec, 10); // g_zModuleDeviceManager.module_set_reg(11, kreg_stepmotor_ihold, 0); // g_zModuleDeviceManager.module_set_reg(11, kreg_stepmotor_irun, 31); // g_zModuleDeviceManager.module_set_reg(11, kreg_stepmotor_iholddelay, 100); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_run_to_zero_speed, 120); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_run_to_zero_dec, 25); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_look_zero_edge_speed, 25); // g_zModuleDeviceManager.module_set_reg(11, kreg_motor_look_zero_edge_dec, 50); // g_zModuleDeviceManager.module_active_cfg(11); // // 盖盖舵机 // g_zModuleDeviceManager.module_set_reg(12, kreg_motor_default_velocity, 150); // g_zModuleDeviceManager.module_set_reg(12, kreg_motor_default_torque, 1000); // g_zModuleDeviceManager.module_active_cfg(12); // // 升降 // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_shaft, 0); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_one_circle_pulse, 1000); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_one_circle_pulse_denominator, 1); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_default_velocity, 150); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_default_acc, 25); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_default_dec, 10); // g_zModuleDeviceManager.module_set_reg(21, kreg_stepmotor_ihold, 0); // g_zModuleDeviceManager.module_set_reg(21, kreg_stepmotor_irun, 31); // g_zModuleDeviceManager.module_set_reg(21, kreg_stepmotor_iholddelay, 100); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_run_to_zero_speed, 120); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_run_to_zero_dec, 25); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_look_zero_edge_speed, 25); // g_zModuleDeviceManager.module_set_reg(21, kreg_motor_look_zero_edge_dec, 50); // g_zModuleDeviceManager.module_active_cfg(21); // // 夹爪舵机 // g_zModuleDeviceManager.module_set_reg(22, kreg_motor_default_velocity, 800); // g_zModuleDeviceManager.module_set_reg(22, kreg_motor_default_torque, 330); // g_zModuleDeviceManager.module_active_cfg(22); // // 加液体泵 // g_zModuleDeviceManager.module_set_reg(61, kreg_motor_shaft, 0); // g_zModuleDeviceManager.module_set_reg(61, kreg_motor_one_circle_pulse, 10000); // g_zModuleDeviceManager.module_set_reg(61, kreg_motor_one_circle_pulse_denominator, 1); // g_zModuleDeviceManager.module_set_reg(61, kreg_motor_default_velocity, 50); // g_zModuleDeviceManager.module_set_reg(61, kreg_motor_default_acc, 300); // g_zModuleDeviceManager.module_set_reg(61, kreg_motor_default_dec, 300); // g_zModuleDeviceManager.module_set_reg(61, kreg_stepmotor_ihold, 0); // g_zModuleDeviceManager.module_set_reg(61, kreg_stepmotor_irun, 4); // g_zModuleDeviceManager.module_set_reg(61, kreg_stepmotor_iholddelay, 100); // g_zModuleDeviceManager.module_active_cfg(61); // 加热转盘 // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_shaft, 0); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_one_circle_pulse, 1000); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_one_circle_pulse_denominator, 18); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_default_velocity, 50); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_default_acc, 300); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_default_dec, 300); // g_zModuleDeviceManager.module_set_reg(41, kreg_stepmotor_ihold, 1); // g_zModuleDeviceManager.module_set_reg(41, kreg_stepmotor_irun, 4); // g_zModuleDeviceManager.module_set_reg(41, kreg_stepmotor_iholddelay, 100); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_run_to_zero_max_d, 36000); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_look_zero_edge_max_d, 360); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_run_to_zero_speed, 50); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_run_to_zero_dec, 300); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_look_zero_edge_speed, 50); // g_zModuleDeviceManager.module_set_reg(41, kreg_motor_look_zero_edge_dec, 600); // g_zModuleDeviceManager.module_active_cfg(41); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_shaft, 0); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_one_circle_pulse, 3600); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_one_circle_pulse_denominator, 18); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_default_velocity, 100); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_default_acc, 300); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_default_dec, 300); // g_zModuleDeviceManager.module_set_reg(51, kreg_stepmotor_ihold, 1); // g_zModuleDeviceManager.module_set_reg(51, kreg_stepmotor_irun, 8); // g_zModuleDeviceManager.module_set_reg(51, kreg_stepmotor_iholddelay, 100); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_run_to_zero_max_d, 36000); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_look_zero_edge_max_d, 360); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_run_to_zero_speed, 50); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_run_to_zero_dec, 300); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_look_zero_edge_speed, 50); // g_zModuleDeviceManager.module_set_reg(51, kreg_motor_look_zero_edge_dec, 600); // g_zModuleDeviceManager.module_active_cfg(51); while (true) { OSDefaultSchduler::getInstance()->loop(); cmder.schedule(); } };