调试工具:Modbus Poll
编程软件:Atmel Studio 7
理解:PC中的Modbus Poll是主机,而AVR芯片作为从机
此处有两种串行传输模式:RTU和ASCII
此处使用了RTU模式,这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。
//以下是必要的函数
void usart_init(uint baud)//波特率
{
UCSRA = 0X00;
UCSRB = 0X00;
UCSRC = 0X86;// 访问UCSRC 异步 奇偶禁止 停止位1位 字符8位
baud = fosk/16/baud-1;//得到UBRR
UBRRL=baud;
UBRRH=baud>>8;
UCSRB=(1< SREG|=(1<<7);//全局中断开放 DDRD|=(1<<1);//PD1 TXD配置为输出模式 } void usart_send(uchar *buf,uchar len) { while(len--)//发送所有字节 { //等待发送缓冲器为空 while(!(UCSRA&((1< UDR=*buf++;//发送一个字节数据 } } uchar usart_read(uchar *buf, uchar len) { uchar i; if (len > cntRxd) //指定读取长度大于实际接收到的数据长度时, { //读取长度设置为实际接收到的数据长度 len = cntRxd; } for (i=0; i { *buf++ = bufRxd[i]; } cntRxd = 0; //接收计数器清零 return len; //返回实际读取长度 } void UartRxMonitor(uchar ms)//定时器1发生一次中断则进入一次该函数(记得放入定时器的中断函数) { static uchar cntbkp = 0; static uchar idletmr = 0; if (cntRxd > 0) //usart中断发生后,接收到数据,接收计数器大于零时,监控总线空闲时间 { if (cntbkp != cntRxd) //接收计数器改变,即刚接收到数据时,清零空闲计时 { cntbkp = cntRxd; idletmr = 0;//清空空闲计时 } else //接收计数器未改变,即总线空闲时,累积空闲时间 { if (idletmr < 22) //1/19200*3.5*10 { idletmr += ms; if (idletmr >= 22) //判定一帧接收完毕 { flagFrame = 1; //设置帧接收完成标志 } } } } else { cntbkp = 0; } } void usart_driver()//此函数放入while(1)中(该函数网上有) { 关键点需要按照自己的写,记得收和发都需要经过CRC校验(网上有现成程序crc16.c); Modbus poll一发指令,就会触发ISR (USART_RXC_vect)函数,把指令放入bufRxd[]; 等到flagFrame=1,启动usart_read()函数,把指令读到AVR; 把AVR采样得到的数放入数组,发指令的时候; 比如:发指令 01 04 00 00 00 01 31 CA // 设备地址01 功能码04 寄存器地址0 读取1个 响应就是 01 04 02 00 0E 38 F4 //设备地址01 功能码04 字节数2 高字节00 低字节0E //采样数值数码管显示为14,对应了0X0E AVR采样得到的数值发回给PC机,并在Modbus poll上显示出来; } ISR (USART_RXC_vect) { if (cntRxd < sizeof(bufRxd)) //接收缓冲区尚未用完 bufRxd[]是char类型 { bufRxd[cntRxd++] = UDR; } }
上一篇:Atmega8a的采样(查询法)
下一篇:ATmega16定时器1的时间设定
推荐阅读
史海拾趣
ABI Electronics公司的起点可以追溯到其对电路板测试技术的深入研究。在创立初期,ABI便以开发出高精度、高效率的电路板故障检测仪为目标。通过对电路板测试技术的不断钻研和创新,ABI成功推出了一系列性能卓越的测试设备,这些设备不仅提高了电路板测试的准确性和效率,也极大地降低了测试成本,赢得了市场的广泛认可。
随着全球环保意识的提高,电子行业对环保和可持续发展的要求也越来越高。Compact公司积极响应这一趋势,加大环保投入,采用环保材料和工艺,降低生产过程中的能耗和排放。同时,公司还致力于推动循环经济的发展,通过回收和再利用废旧电子产品,减少资源浪费和环境污染。这一举措不仅提升了公司的社会形象,还为公司的可持续发展奠定了坚实基础。
请注意,以上故事仅为示例,并不代表任何真实存在的企业情况。如果需要关于特定企业(如Compact公司)的准确信息,建议查阅相关公司的官方资料、行业报告或新闻报道。
CTS公司,全称CTS Corporation,于1896年在美国印第安那州创立。在创立初期,公司主要生产和销售电器元件,凭借对技术的深入理解和市场需求的敏锐洞察,逐渐在行业中崭露头角。随着业务的扩展,CTS的产品线逐渐丰富,涵盖了汽车及电脑配件、通讯产品、精密仪器及装置等多个领域。
近年来,随着新能源汽车市场的快速崛起,BMS(电池管理系统)技术成为关键。芯海科技凭借在“模拟信号链+MCU”领域的技术积累,成功开发出应用于BMS锂电管理的高精度模拟信号链芯片。这一技术的突破使得芯海科技能够切入新能源汽车市场,为行业的发展提供了有力支持。
进入21世纪,随着全球电子产业的快速发展,三礼公司看到了中国内地市场的巨大潜力。2006年,公司决定扩大在中国内地的生产规模,投资建构了40,000平方米的厂房,并成立了专业客制化产品厂——和瑞电子(3LQ)。这一举措不仅提升了公司的生产能力,还使得产品更加符合市场需求,进一步巩固了公司的市场地位。
随着全球化的深入发展,博通积极调整战略,加强全球布局。公司通过设立研发中心、拓展销售网络等方式,不断提升其在全球市场的竞争力。同时,博通还积极与其他行业领军企业开展战略合作,共同推动电子行业的发展和创新。
这些故事展示了博通在电子行业中的发展历程和成就。从初创时期的艰难起步,到困境中的重生,再到并购扩张和技术创新,博通始终保持着坚韧不拔的精神和追求卓越的态度。正是这样的精神和态度,使博通能够在激烈的市场竞争中脱颖而出,成为电子行业的佼佼者。
摘要:介绍几种抑制尖峰干扰的方法。通过产品试用表明,该方法有一定的实用性。 关键词:纹波滤波器二极管抑制电源纹波会干扰电子设备的正常工作,引起诸如计算机死机、数据处理出错及控制系统失灵等故障,给生产和科研酿成难以估量的损失,因此必 ...… 查看全部问答∨ |
|
TI北京研讨会随想:DM8168——新一代高性能多媒体处理器 2010年8月9日,全球最大的芯片供应商德州仪器 (TI)在新世纪日航饭店举行了“TI技术研讨会(北京)“站的活动。整个研讨会分五个主题会场。在MCU/DSP主题讨论会上,TI公司DSP业务发展经理郑小龙先生介绍了TI最新的媒体处理器TMS320DM8168。 DM8168 ...… 查看全部问答∨ |
|
最近正在学习tiny6410,今天将开发板上电后不小心碰了一下地引脚,被电了一下,只是有点麻麻的感觉。于是用万用表测量。首先使用直流档,测得地和人体的电位差为40mv。接下来用交流档,测得地和人体的电位为75V。然后将排插的开关断开,用万用表交 ...… 查看全部问答∨ |