mirror of
https://github.com/eddyem/stm32samples.git
synced 2026-02-28 11:54:30 +03:00
add modbus (not tested yet)
This commit is contained in:
@@ -25,9 +25,11 @@
|
||||
#define SETTER_FLAG (0x80)
|
||||
#define ISSETTER(data) ((data[2] & SETTER_FLAG))
|
||||
// parameter number 127 means there no parameter number at all (don't need paremeter or get all)
|
||||
#define NO_PARNO (0x1f)
|
||||
#define NO_PARNO (0x7f)
|
||||
// base value of parameter (even if it is a setter)
|
||||
#define PARBASE(x) (x & 0x7f)
|
||||
// get parameter value of msg->data
|
||||
#define PARVAL(data) (data[2] & 0x7f)
|
||||
|
||||
// make error for CAN answer
|
||||
#define FORMERR(m, err) do{m->data[3] = err; if(m->length < 4) m->length = 4;}while(0)
|
||||
@@ -43,6 +45,19 @@ typedef enum{
|
||||
ERR_AMOUNT // amount of error codes
|
||||
} errcodes;
|
||||
|
||||
// set command bytes in CAN message
|
||||
#define MSG_SET_CMD(msg, cmd) do{*((uint16_t*)msg.data) = (cmd);}while(0)
|
||||
#define MSGP_SET_CMD(msg, cmd) do{*((uint16_t*)msg->data) = (cmd);}while(0)
|
||||
// set error
|
||||
#define MSG_SET_ERR(msg, err) do{msg.data[3] = (err);}while(0)
|
||||
#define MSGP_SET_ERR(msg, err) do{msg->data[3] = (err);}while(0)
|
||||
// set uint32_t data
|
||||
#define MSG_SET_U32(msg, d) do{*((uint32_t*)(&msg.data[4])) = (d);}while(0)
|
||||
#define MSGP_SET_U32(msg, d) do{*((uint32_t*)(&msg->data[4])) = (d);}while(0)
|
||||
// get uint32_t data
|
||||
#define MSG_GET_U32(msg) (*(uint32_t*)&msg.data[4])
|
||||
#define MSGP_GET_U32(msg) (*(uint32_t*)&msg->data[4])
|
||||
|
||||
// CAN commands indexes
|
||||
enum{
|
||||
CMD_PING, // just ping
|
||||
@@ -62,6 +77,11 @@ enum{
|
||||
CMD_BOUNCE, // get/set bounce constant (ms)
|
||||
CMD_USARTSPEED, // get/set USART1 speed (if encoder on RS-422)
|
||||
CMD_LED, // onboard LED
|
||||
CMD_FLAGS, // flags setter/getter
|
||||
CMD_INCHNLS, // all bits set are active supported IN channels
|
||||
CMD_OUTCHNLS, // all bits set are active supported OUT channels
|
||||
CMD_MODBUSID, // set/get modbus slave ID (or 0 if master)
|
||||
CMD_MODBUSSPEED,// speed of modbus interface
|
||||
// should be the last:
|
||||
CMD_AMOUNT // amount of CAN commands
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user