Chinaunix首页 | 论坛 | 博客
  • 博客访问: 616982
  • 博文数量: 204
  • 博客积分: 5172
  • 博客等级: 上校
  • 技术积分: 2092
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-08 21:48
个人简介

一个毫无毅力之人的自勉

文章分类

全部博文(204)

文章存档

2014年(1)

2013年(54)

2012年(50)

2011年(94)

2010年(3)

2009年(3)

分类: LINUX

2012-09-07 17:39:39

读三星spec时看到的,很多IC都有类似情况,很是疑惑。

查了很多资料,就下面的一个说法还可以理解:
写1是在硬件上产生一个复位脉冲。
能写0清除就很可能也可以写1进去,而这与功能要求不符。如要控制只能写0而不能写1,则硬件比较复杂。

延伸:
读修改写指令的效用

写代码时,无论是C还是汇编代码,谨记读修改写指令的效用:
28xDSP将会一次性写16或32位寄存器或存储器(的各位)。任何貌似写一位的指令其实是,读该寄存器,修改单个位,再写回(修改后的)结果。这被称为读修改写指令。对于绝大多数寄存器这不会造成问题。一个值得关注的例外是:

有多个标志位,且写1清零其中标志位的寄存器
例如,咱关注下PIEACK寄存器。这个寄存器中的多个位都是写1清0的。如果(此时)多个位值为1,对该寄存器(的单个位)进行读修改写操作时,会‘天违人愿’地将多个位清零。
如下方法是错误的。它会对所有已置位的标志位写1,并且将它们全部清零。
PieCtrl.PIEAck.bit.Ack1=1;
正确的方法是,对该寄存器写入一个掩码值,此值只对希望清零的那位写1(其它位的值都为0):
#define PIEACK_GROUP1 0x0001
PieCtrl.PIEACK.all = PIEACK_GROUP1;
阅读(5068) | 评论(0) | 转发(0) |
0

上一篇:setPreviewFrameRate

下一篇:存储器框图

给主人留下些什么吧!~~