1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /*
- * user.c
- *
- * Created on: 2 июн. 2023 г.
- * Author: Andrey Koryagin https://blog.avislab.com/
- */
- #include "u_foc.h"
- #include "position.h"
- extern volatile SettingsStruct Settings;
- void USER_Init(void) {
- MC_ProtocolTimeoutDisable(); // Disable motor stopping on U-FOC Protocol timeout
- Position_Init();
- }
- void USER_While(void) {
- HAL_Delay(10);
- if (MC_GetState() == MC_STATE_IDLE) {
- MC_Start();
- }
- if (MC_GetState() == MC_STATE_FAULT) {
- MC_ResetFault();
- }
- }
- void USER_Tasks(void) {
- Position_Process();
- }
- #ifdef USER_PROTOCOL_ENABLE
- #define USER_PACKET_SET_POSITION 60
- #define USER_PACKET_GET_POSITION 61
- extern uint8_t PACKET_REQUEST[PACKET_LENGTH];
- extern uint8_t PACKET_RESPONSE[PACKET_LENGTH];
- uint8_t USER_Packet_Handling(void) {
- if (PACKET_REQUEST[1] == USER_PACKET_SET_POSITION) { // Set Position
- int16_t position;
- position = (PACKET_REQUEST[2]<<8) | PACKET_REQUEST[3];
- Position_Set(position);
- return 0;
- }
- if (PACKET_REQUEST[1] == USER_PACKET_GET_POSITION) { // Get Position
- PACKET_RESPONSE[0]= Settings.DevID;
- PACKET_RESPONSE[1]= PACKET_REQUEST[1] + 127;
- uint16_t position;
- position = Position_Get_Real();
- PACKET_RESPONSE[2]= ((position & 0x0000FF00) >> 8);
- PACKET_RESPONSE[3]= (position & 0x000000FF);
- position = Position_Get();
- PACKET_RESPONSE[4]= ((position & 0x0000FF00) >> 8);
- PACKET_RESPONSE[5]= (position & 0x000000FF);
- PACKET_RESPONSE[6]= 0;
- PACKET_RESPONSE[7]= 0;
- return 1;
- }
- return 0;
- }
- #endif
|