极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 35621|回复: 8

arduino mega2560使用avr自带的串口通信命令

[复制链接]
发表于 2011-12-5 08:25:41 | 显示全部楼层 |阅读模式
本帖最后由 RyeCache.D 于 2011-12-5 08:43 编辑

arduino使用的是函数化的命令进行串口通信,比如Serial.print()命令。而实际这个函数是由avr自身的串口通信命令封装而成的。而mega2560有四个串口通信端口,arduino自身的命令只调用一个0号端口,这个端口通过atmega8u2转换成usb可以识别的协议,然后接入pc。不过,这个做法只是保证了0号端口和pc的通信,1~3号端口被忽略了。为了实现1~3号端口的通信,我们需要系统的了解下avr的串口通信命令。
回复

使用道具 举报

 楼主| 发表于 2011-12-5 08:25:57 | 显示全部楼层
通信的设定
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-5 08:26:13 | 显示全部楼层
再占一个楼层
回复 支持 反对

使用道具 举报

发表于 2011-12-5 18:31:18 | 显示全部楼层
1280或者2650 UART通信当然是可以使用全部端口的。
默认的0号端口(Serial.print)以外的剩下几个端口用命令(Serial1.print | Serial2.print | Serial3.print)来操作。

也正是因为这个原因所以1280和2650比其他Arduino更具有“调试优势”

其实~~~~这些在Arduino说明文档里都有

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2011-12-5 22:31:05 | 显示全部楼层
2560/1280的四个串口在 arduino的封装库里确实可以很方便的用 Serial1-Serial3加以使用,不过看看如何直接以AVR C的方式使用有助于对Arduino结构的更进一步了解。

现在我用Serial作为调试串口,基本上除了单步跟踪没法实现外,其他的常见调试方法基本都可以实现了,哈哈哈。看官网论坛上说的,因为arduino的机器码与源码之间的对应关系是不定的,所以单步跟踪这个问题貌似无解。当然了,硬件俺不懂...说错了表打脸

我现在比较奇怪的是,arduino328/2560的硬串口和软串口(arduino rc1及以前版本)似乎存在冲突。只要一使用到软串口,硬串口(波特率 115200,其他速度没测过)就会丢数据,丢得不多,但总是丢。把软串口全部清除,一切恢复正常。




回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-6 08:23:41 | 显示全部楼层
哈 我也是才发现 不过既然做了 就把它写出来。挺有意思的。
回复 支持 反对

使用道具 举报

发表于 2012-2-3 01:53:25 | 显示全部楼层
打屁股,还没写完
回复 支持 反对

使用道具 举报

发表于 2012-9-21 13:05:00 | 显示全部楼层
本帖最后由 Always_ccway 于 2012-9-21 13:22 编辑
SS15 发表于 2011-12-5 22:31
2560/1280的四个串口在 arduino的封装库里确实可以很方便的用 Serial1-Serial3加以使用,不过看看如何直接以 ...


请问2560哪些是软串口,哪些是硬串口{:soso_e154:}
回复 支持 反对

使用道具 举报

发表于 2013-12-14 12:58:23 | 显示全部楼层
谢谢啦!刚好用上!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 14:46 , Processed in 0.071697 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表