arduino mega2560使用avr自带的串口通信命令
本帖最后由 RyeCache.D 于 2011-12-5 08:43 编辑arduino使用的是函数化的命令进行串口通信,比如Serial.print()命令。而实际这个函数是由avr自身的串口通信命令封装而成的。而mega2560有四个串口通信端口,arduino自身的命令只调用一个0号端口,这个端口通过atmega8u2转换成usb可以识别的协议,然后接入pc。不过,这个做法只是保证了0号端口和pc的通信,1~3号端口被忽略了。为了实现1~3号端口的通信,我们需要系统的了解下avr的串口通信命令。
通信的设定 再占一个楼层 1280或者2650 UART通信当然是可以使用全部端口的。
默认的0号端口(Serial.print)以外的剩下几个端口用命令(Serial1.print | Serial2.print | Serial3.print)来操作。
也正是因为这个原因所以1280和2650比其他Arduino更具有“调试优势”
其实~~~~这些在Arduino说明文档里都有
2560/1280的四个串口在 arduino的封装库里确实可以很方便的用 Serial1-Serial3加以使用,不过看看如何直接以AVR C的方式使用有助于对Arduino结构的更进一步了解。
现在我用Serial作为调试串口,基本上除了单步跟踪没法实现外,其他的常见调试方法基本都可以实现了,哈哈哈。看官网论坛上说的,因为arduino的机器码与源码之间的对应关系是不定的,所以单步跟踪这个问题貌似无解。当然了,硬件俺不懂...说错了表打脸
我现在比较奇怪的是,arduino328/2560的硬串口和软串口(arduino rc1及以前版本)似乎存在冲突。只要一使用到软串口,硬串口(波特率 115200,其他速度没测过)就会丢数据,丢得不多,但总是丢。把软串口全部清除,一切恢复正常。
哈 我也是才发现 不过既然做了 就把它写出来。挺有意思的。 打屁股,还没写完:lol 本帖最后由 Always_ccway 于 2012-9-21 13:22 编辑
SS15 发表于 2011-12-5 22:31 static/image/common/back.gif
2560/1280的四个串口在 arduino的封装库里确实可以很方便的用 Serial1-Serial3加以使用,不过看看如何直接以 ...
请问2560哪些是软串口,哪些是硬串口{:soso_e154:} 谢谢啦!刚好用上!
页:
[1]