打印

UP8楼!但是:**这楼这么高了,我还是删了吧,

[复制链接]
楼主: 救火车
手机看帖
扫描二维码
随时随地手机跟帖
121
gyt| | 2007-6-28 11:26 | 只看该作者 回帖奖励 |倒序浏览

那是我写错了

预祝第三轮胜出:)

使用特权

评论回复
122
21ele| | 2007-7-3 21:55 | 只看该作者

关于52楼和84楼说法冲突的疑惑

52楼说:"都是由于非原子操作在中断和应用中共享变量造成的",那对于8位机来说,字节操作就应该没事。

84楼意见是:"是字节型,也有问题,除非判断与修改操作能在一条指令里。"

虽然救火车在82楼也表达过:方案1.改用字节型的变量(8位机),但84楼提出异议后,大家都没有再表过态,那到底字节型的变量有没有问题?

我的理解是:问题起因是多字节类型的变量操作或判断期间,发生中断,导致变量判断错误引起。就是非原子操作,中间插入中断,引起错误所致。注意这里是错误,逻辑错误,就是楼主举的例子:本来正确值0x00ff ,中断变为0x0100, 却错误判断为0x01ff,导致产生问题。

对于84楼提出的情况,如果判断与修改操作不在一条指令里,中间可能插入中断,修改变量,但这本来就是设计的意图啊,即允许中断和主程序同时操作变量。只要修改和判断操作本身没有发生错误,就没有问题啊。
 
所以我的理解字节变量中断和应用中共享没有问题。

大家的意见呢?

我非科班出身的,理论知识不够。还请gtw给详细解释一下字节共享操作的产生问题细节,给解解惑。

使用特权

评论回复
123
gtw| | 2007-7-3 23:36 | 只看该作者

不错

问题是,你写出的程序并不
意味这您的意图啊.

使用特权

评论回复
124
gtw| | 2007-7-3 23:37 | 只看该作者

如果您写出的程序就是您的意图

您的错误就会少一半啊

使用特权

评论回复
125
21ele| | 2007-7-4 04:00 | 只看该作者

关于程序的意图

这次讨论的核性问题是:中断和应用中共享变量,这就是意图。

因为程序是用高级语言写的,比如c, 在c程序中,读、写或判断看似只有一条语句,实际上编译后可能是数条汇编指令。c语言的一条语句不是一个整体,导致可以从中间插入中断。

这时候关键看插入中断后又没有影响到c语言单条语句的正确执行,对于多字节变量,大家已经看到导致了错误,即c语言单条语句由于中断的破环,没有被正确执行,所以是有问题,需要避免。

但如果虽然中断被插到了中间,但是可以确定不应影响c语言单条语句的正确执行,那就其实相当于中断是插入了c语言单条语句之后或之前执行。这个本来就是当初设计中断和应用中共享变量的意图。

使用特权

评论回复
126
gtw| | 2007-7-4 08:09 | 只看该作者

你做错了事但并不知道,这时就可能违背意图

现在讨论的这个问题,你无法保证中断和主程序同时读取和修改不发生冲突,
如果你想就这个样子,当然不违背你的意图,但也失去了再讨论的意义.

使用特权

评论回复
127
wuxi_stl| | 2008-1-23 15:24 | 只看该作者

mark

mark

使用特权

评论回复
128
bhsdlmj| | 2009-9-8 08:54 | 只看该作者
要是我的话,估计可能是不是复位呢?因为刚开始放了40秒,所以想到复位可能错误。所以就将这个放40秒弄到程序的中间试一试,哈哈,还是有错误,就说明复位错误的可能性减小了。

我还得好好看看帖子 这个问题出的能遇到也得靠运气!我还得继续看帖子

使用特权

评论回复
129
bhsdlmj| | 2009-9-8 10:35 | 只看该作者
大约通电70-80次??

这测试的次数这么多???

牛!!

使用特权

评论回复
130
xwj| | 2009-9-8 10:48 | 只看该作者
对于LZ分析的那种情况的概率,我觉得“70-80次”是测不出的,
肯定还有其他的原因。

使用特权

评论回复
131
渤海三叠浪| | 2009-9-8 13:32 | 只看该作者
最可惜的是这个帖子 有两个回复被删除,造成帖子都看不懂了(如果有人提到多少楼的话)。

对不上号了

使用特权

评论回复
132
gzs8317| | 2009-9-8 16:30 | 只看该作者
投票

使用特权

评论回复
133
常来21IC| | 2009-9-8 19:26 | 只看该作者
帖子有价值...
用8bit mcu真累,看来还是用32bit mcu爽,爱多简单就多简单,爱定时多久就多久,中断周期也不用动砸百Ms级...

使用特权

评论回复
134
救火车|  楼主 | 2009-9-9 16:35 | 只看该作者
谢谢大家继续投我的票。
我十分想念当年竞选时的八大金刚。

使用特权

评论回复
135
xfgood3872| | 2010-4-7 20:44 | 只看该作者
理解了

使用特权

评论回复
136
xlsbz| | 2010-8-14 07:24 | 只看该作者
这个帖子看了多遍了 这个救火车搞的几个帖子  都不错

使用特权

评论回复
137
xlsbz| | 2010-8-14 07:30 | 只看该作者
8楼的方法我以后要采用了
不过我要写成这样的
while ( ... != ...) {
      .. = ....
}

之所以写成这样的 ,是因为我不会用 do while 语句。另外主要是我刚才看了一本老外的书上是这么写的,嘎嘎

还有别忘了10楼的回复   要加上关键字voliate

这说明8楼并不完美,有缺陷 加上10楼才完美

131楼说的的“对于LZ分析的那种情况的概率,我觉得“70-80次”是测不出的,
肯定还有其他的原因。”是有道理的。
肯定有其他问题。
我觉得7万次也说不准测不出来

使用特权

评论回复
138
zhouyao0550| | 2010-8-16 11:47 | 只看该作者
支持!!!!!

使用特权

评论回复
139
csq463276932| | 2011-4-8 22:13 | 只看该作者
学习,顶起。

使用特权

评论回复
140
linfuchi| | 2011-4-9 10:45 | 只看该作者
支持一下!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则