搜索
bottom↓
回复: 19

大比拼!AVR-STM8-R8C IO 操作对比.

[复制链接]

出0入0汤圆

发表于 2015-4-5 13:29:47 | 显示全部楼层 |阅读模式
本帖最后由 kation122 于 2015-4-5 13:31 编辑

        最近想将LGT8F88D用在一个项目上, 初接触到AVR ,所以初步研究了一下AVR ,以前看到很多大侠说AVR 非常好用,
但是我个人自己的感觉,用起来不是很顺手,就拿IO 操作来说,之前用到的MCU 都是可以直接bit 操作的,比如 用瑞萨的 R8C
#define LED_R   p1_0  之后就可以直接用了 , 这样 LED_R =1;IO 就输出高了,很直接、很方便, STM8S 也可以直接bit 操作。
但是AVR 好像这样用不了,在IAR 中,仿照R8C 的头文件,用位域的方法,定义可以位操作的IO ,但是擦看汇编一看,吓一跳,并没有用SBI ,CBI 这样的指令,
而是用 了 类似  读-写-改的操作来实现的,这样效率也太低了吧,将编译器优化等级调到最高,结果还是一样,网上查了一下,原来是“SBI和CBI指令只能对$00-$1F的I/O寄存器”,
但是8F328 的IO 是从0X25 开始的,所以SBI CBI 指令用不了,是不是这个原因呢?请大侠指点。

1、R8C 的IO 设置和操作,可以看到,设置IO DDR 、设置输出值,都是一条 BSET 就搞定了




2、STM8S 的IO 设置和操作,可以看到,同样的一条位指令就OK ,比如设置IO 为低,BRES 就OK 。



3、AVR 的IO 操作,汇编就比较复杂了。可以看到 设置IO 为输出 、设置IO 为低,都要5条指令才能完成。怎么差距会这么大呢。





PS: 使用的平台都统一是 IAR,优化等级都是最高

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入4汤圆

发表于 2015-4-5 13:46:05 | 显示全部楼层
CodeVisionAVR   可以直接操作位

出0入0汤圆

发表于 2015-4-5 13:56:05 来自手机 | 显示全部楼层
就是这样的

出0入0汤圆

发表于 2015-4-5 15:41:11 | 显示全部楼层
楼主可以试一下其它操作

出0入0汤圆

发表于 2015-4-5 17:45:52 | 显示全部楼层
本帖最后由 zhanan 于 2015-4-5 21:47 编辑

AVR 的IO 操作只有一部分是能位操作的,外设地址1F(RAM地址3F)以下才可以位操作。

毕竟是十几年前的产品了,stm8是现时代的产品。

出0入0汤圆

发表于 2015-4-5 20:41:04 | 显示全部楼层
1.
楼主, 不是AVR的问题, 是你用的测试程序造成使用了读-改-写。
因为你使用的是Toggle, 这个操作一定要知道之前是什么, 才能决定之后输出, 所以一定会编译出读/改/写。

2.
AVR说地址00-0x1F可以用SBI/CBI, 这是是I/O地址, 如果换成内存映射地址,就是0x20~0x3F

3.
IAR的优化特性是最好的, 特别是针对AVR, 我们比较过同样的程序C51和AVR在相同配置下的编译,AVR要比C51小很多。

4.
下面的例子是直接给I/O复制产生SBI/CBI指令的代码, IAR此时选择是关闭任何优化。你可以试试。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2015-4-5 21:58:23 | 显示全部楼层
LGT 发表于 2015-4-5 20:41
1.
楼主, 不是AVR的问题, 是你用的测试程序造成使用了读-改-写。
因为你使用的是Toggle, 这个操作一定 ...


你好,谢谢指dian,从你这个代码来看,确实是可以位操作IO ,
我用的程序应该是和你的一样的。
DrvGPIO_EnableOutput(E, OUT4);//设置IO为输出
        
        DrvGPIO_ClearPort(E, OUT4) ;//IO输出0

就这两个语句,我估计是和IAR 版本有关,请问你用的IAR 是什么版本的呢,你这个测试程序方便打包上传上来吗。

出0入0汤圆

 楼主| 发表于 2015-4-5 22:05:56 | 显示全部楼层
LGT 发表于 2015-4-5 20:41
1.
楼主, 不是AVR的问题, 是你用的测试程序造成使用了读-改-写。
因为你使用的是Toggle, 这个操作一定 ...

再次测试了,和神马Toggle 没关系,你操作PE 口,确实不能位操作。请看,如下图,PB、PC、PD 口都可以位操作,但是 PE口不行



本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2015-4-5 22:13:51 来自手机 | 显示全部楼层
本帖最后由 LGT 于 2015-4-5 22:15 编辑

PE口是我们附加的,在AVR里是没有的,端口地址没有在位操作区域;你用其他口做toggle,产生不了一条指令的

出0入0汤圆

 楼主| 发表于 2015-4-5 22:22:22 | 显示全部楼层
本帖最后由 kation122 于 2015-4-5 22:27 编辑
LGT 发表于 2015-4-5 22:13
PE口是我们附加的,在AVR里是没有的,端口地址没有在位操作区域;你用其他口做toggle,产生不了一条指令的 ...


toggle 肯定是一条指令实现不了,这个我知道呢,我上面测试的程序,也从来没有用到toggle 的功能,都是最简单 置高 置低。
还请教一下 下面的问题

1.
楼主, 不是AVR的问题, 是你用的测试程序造成使用了读-改-写。
因为你使用的是Toggle,

我1L 测试使用的程序就是  这两个语句,请问哪里涉及到Toggle呢。

DrvGPIO_EnableOutput(E, OUT4);//设置IO为输出
         DrvGPIO_ClearPort(E, OUT4) ;//IO输出0

对应的汇编如下:

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2015-4-5 22:37:00 | 显示全部楼层
上个帖子说了, PE这个口不是M328固有的, 是我们增加的, 地址分配在了非位寻址的区域,所以就不能编译出SBI/CBI指令了。
我说toggle是看到你最早的贴图用的是toggle函数。

出0入0汤圆

 楼主| 发表于 2015-4-5 22:53:57 | 显示全部楼层
LGT 发表于 2015-4-5 22:37
上个帖子说了, PE这个口不是M328固有的, 是我们增加的, 地址分配在了非位寻址的区域,所以就不能编译出S ...

是的,这样问题就清楚,总结如下:
1、这个不是我测试程序的问题,因为我测试程序,确实没用到Toggle.
2、造成这个根本原因是这个 PE口是附加的,PE 口 的地址超出了 SBI CBI 的范围,所以不能使用不位操作。其他的PB PC PD 都是可以的。

出0入0汤圆

发表于 2015-4-5 23:14:40 | 显示全部楼层
这个还不错!

出0入296汤圆

发表于 2015-4-10 11:25:48 | 显示全部楼层
AVR比较新的型号,向PINx对应位写1可以实现TOGGLE功能。我记得好像Atmega48/88/168系列开始就有这个特性了。

出0入0汤圆

发表于 2015-4-10 11:42:35 | 显示全部楼层
这个?


位操作实际上是寻址的问题,AVR内核决定了只能IO地址在0x1F以下可以。再好的编译器也跳不出这个框框。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2015-4-10 11:50:05 | 显示全部楼层

是的,AVR 的位寻址能力相对  R8C  、STM8S 确实弱 , STM8S ,R8C 全部RAM 空间都可以位寻址。用位域来定义Flg 标志位,
对应的汇编就可以是位操作,很方便。

出0入0汤圆

发表于 2015-5-1 01:33:40 | 显示全部楼层
AVR的这个弱点LGT不能改变吗?

出0入0汤圆

发表于 2015-5-1 09:09:00 | 显示全部楼层
就工业应用而言,我不知道LGT的端口有没有保护二极管,但STM8全系列是确认了没有,AVR全系列是确认了有,过EMC的时候差别非常大,AVR最容易过,没有保护二极管的,耐受群脉冲能力都差很多。

出0入0汤圆

发表于 2015-5-1 10:09:36 | 显示全部楼层
学习了引脚变化功能一直h没用过

出0入0汤圆

发表于 2015-5-1 14:55:50 | 显示全部楼层
IAR 的编译器优化不够?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 23:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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