#ifndef MODBUS_H__ #define MODBUS_H__ 1 /* * Loosely modelled after AVR-RS485 by Yoshinori Kohyama (http://algobit.jp/), * available at https://github.com/kohyama/AVR-RS485/ * * All bugs by Jan "Yenya" Kasprzak :-) */ void modbus_init(uint8_t unit_id); void modbus_poll(); typedef enum { MB_OK = 0, MB_ILLEGAL_FUNC = 1, MB_ILLEGAL_ADDR = 2, MB_ILLEGAL_VAL = 3, } mb_exception; #define MB_HOLD_REGS_BASE 1000 #define MB_N_HOLD_REGS 40 #define MB_N_HOLD_REGS_EEPROM 20 extern uint16_t hold_regs[MB_N_HOLD_REGS]; #define mb_unit_id (hold_regs[0]) uint8_t hold_reg_is_valid(uint16_t reg, uint16_t val); #endif /* MODBUS_H__ */