FreeModbus Slave For AVR源代码 精简版2 【worldsing 笔记】
FreeModbus 源码:点击下载
线圈BUG解决(后来发现不一定是BUG)
1、eMBException eMBFuncWriteCoil( UCHAR * pucFrame, USHORT * usLen )中的
usRegAddress++;行注释掉,否则输出线圈0永远无法输出,其它的线圈错位。
2、eMBException eMBFuncWriteCoil( UCHAR * pucFrame, USHORT * usLen )中的写操作
while循环改加入 usBitOffset += 8; 否则8以后的线圈无法进行写操作。
while( iNCoils > 0 ){
xMBUtilSetBits( ucRegCoilsBuf, usBitOffset,
( uint8_t )( iNCoils > 8 ? 8 : iNCoils ),
*pucRegBuffer++ );
iNCoils -= 8;
usBitOffset += 8;
}
3、细读后发现,usRegAddress++在每个操作下都有,有可能是原版就是有意这么写的,但这样
有违背MODBU协议,也有就是地址0的所有东西是没法操作到的,修改的版本中已可以操作0址
址。
4、合并User.c和rtu.c
这回把User.c和function.c合并了,同样的配置,Flash 下降,RAM反了长了点。
4 880 bytes of CODE memory (+ 12 range fill )
977 bytes of DATA memory (+ 14 absolute )
ModbusFun.c 整合FreeModbus的功能c代码文件;
ModbusRTU.c Modbus的RTU模式桢处理,整理FreeModbus去除ASCII模式;
ModbusPort.c 关于硬件的移植包括串口、定时器、桢队列功能实现(目前是单桢处理);
(此文件是ATMEGA128硬件的代码,其它CPU需要自己移植)
#define MB_FUNC_HANDLERS_MAX ( 16 )//使用的功能码数量
#define MB_FUNC_OTHER_REP_SLAVEID_BUF ( 8 )
#define MB_FUNC_OTHER_REP_SLAVEID_ENABLED ( 1 ) //报告从设备功能
#define MB_FUNC_READ_INPUT_ENABLED ( 1 ) //读输入寄存器功能
#define MB_FUNC_READ_HOLDING_ENABLED ( 1 ) //读保持寄存器功能
#define MB_FUNC_WRITE_HOLDING_ENABLED ( 1 ) //写操持寄存存功能
#define MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED ( 1 )//写多个操持寄存存功能
#define MB_FUNC_READ_COILS_ENABLED ( 1 )//读线圈
#define MB_FUNC_WRITE_COIL_ENABLED ( 1 )//写线圈
#define MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED ( 1 )//写多个线圈
#define MB_FUNC_READ_DISCRETE_INPUTS_ENABLED ( 1 )//读离散输入
#define MB_FUNC_READWRITE_HOLDING_ENABLED ( 1 )//读写多个寄存器
测试环境:IAR for avr 5.40 & M128
8K Flash的单片机运行起来没有压力
随后将移植到其它平台有:
FreeModbus for STM32xx
FreeModbus for STM8xx
FreeModbus for LPCxx
FreeModbus for LMxx
FreeModbus for MSP430
FreeModbus Slave For AVR源代码 精简版2 【worldsing 笔记】的更多相关文章
- 使用Superprg 下载 AVR/51单片机固件 【worldsing笔记】
progisp 2.0 可以下载avr.51等单片机,单击下载 Superprg 单击下载 Superprg软件志峰公司出的专用软件,配合ZF_209使用, ...
- SQL Server 2000 绿色精简版gsql适用于xp/win7/win8/win10
老的程序员肯定都用过sql2000数据库,我在2006-2010年之间,做的不少网站也都是sql2000数据库的,但是后来随着mysql的兴起,就逐渐不再使用sql数据库了.但是最近有个客户的网站要修 ...
- Linux上oracle精简版客户端快速部署
RHEL6 + Oracle 11g客户端快速部署 需求:只是用到客户端的sqlplus, sqlldr功能. 方案:用精简版实现客户端的快速部署 1.上传oracle精简版客户端到服务器/tmp目录 ...
- ArcGIS10.2.1精简版、ArcGIS_Desktop10_Tutorial、破解文件等下载地址
原版ArcGIS for Desktop的ISO文件一般都在4.5G以上,一般人用不上里面很多工具,下载回来又浪费时间,现推出ArcGIS10.2.1精简版(里面只包含主程序.Data Interop ...
- TeamViewer12.0.71503(远程控制软件)精简版 单文件企业版介绍
TeamViewer 是一款能在任何防火墙和 NAT 代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可 ...
- Log4j快速使用精简版
Log4j快速使用精简版 1.导入log4j-1.2.17.jar包 2.在src根目录下创建log4j.properties文件 log4j.rootLogger=INFO, CONSOLE, FI ...
- VMware10.06精简版安装后台运行
VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...
- [异常解决] ubuntu上安装虚拟机遇到的问题(vmware坑了,virtual-box简单安装,在virtual-box中安装精简版win7)
利用周末时间将整个电脑格式化,换成了ubuntu系统- 所谓:扫清屋子再请客! 但是有些软件只在win上有,于是还是考虑装个虚拟机来个——逐步过度策略,一点点地从win上转移到linux上 我的系统是 ...
- 电脑公司最新GHOST WIN7系统32,64位优化精简版下载
系统来自系统妈:http://www.xitongma.com 电脑公司最新GHOST win7系统32位优化精简版V2016年3月 系统概述 电脑公司ghost win7 x86(32位)万能装机版 ...
随机推荐
- 【mysql的设计与优化专题(4)】表的垂直拆分和水平拆分
垂直拆分 垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表 通常我们按以下原则进行垂直拆分: 把不常用的字段单独放在一张表; 把text,blob等大字段拆分出来放在附表中; 经常组合查询的 ...
- laravel的解决方案
对form表单批量去掉前后空格trim: $request->merge(array_map('trim', $request->all())); 或 Input::merge(array ...
- Magento学习
Magento是一个php电子商务系统. 内部模块化. 创建模块流程 Magento系统模块 app/code/core/Mage 其中每一个子目录都是一个单独的模块 自己创建的模块放在下面路径 ap ...
- Nginx的反相代理, 负载均衡
转自 http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
- 最短路径算法之四——SPFA算法
SPAF算法 求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm,该算法是西南交通大学段凡丁于1994年发表的. 它可以在O(kE)的时间复杂度内求出源点 ...
- CodeForces114E——Double Happiness(素数二次筛选)
Double Happiness On the math lesson a teacher asked each pupil to come up with his own lucky numbers ...
- linux查看某个端口是否被占用
一个还算可以的:[root@benet ~]# netstat -nlptu |awk '{print $4,$7}' | grep 80:::80 2508/httpd这样更直观的显示出要查询的端口 ...
- poj3592Instantaneous Transference(tarjan+spfa)
http://poj.org/problem?id=3592提交了30多次了 受不了了 两份的代码基本上一样了 一个AC一个WA 木办法 贴份别人的吧 改得跟我得一样 人家能A 我是WA.. 强连通 ...
- poj 1035 Spell checker(水题)
题目:http://poj.org/problem?id=1035 还是暴搜 #include <iostream> #include<cstdio> #include< ...
- 大四实习准备3_java多线程
4.25.27无耻地懒散了.....26号陪女朋友去了.今天28号,继续加油! 2015-4-28 Java 多线程 (java中类不能多继承,可以多层继承:接口则都可以) 定义和创建: 方法一:继承 ...