msjoke 发表于 2009-5-18 20:13:21

请教下P284页中TWINT的问题?谢谢了

“作为从机来说,只要TWINT位的值为1,SCL时钟信号就会被一直拉底。这一特性需要我们特别注意,如果处理不当,比如忘记在中断处理结束以后,人为地对其置位实现清零,就会导致整个总线一向处于瘫痪状态。”
请问后一句中的清零是对TWINT赋1呢?还是写0呢?
如果是赋一操作,那岂不是反倒让总线瘫痪了吗?

Gorgon_Meducer 发表于 2009-5-18 21:09:34

写一实现清零,而不是说写1就是1……

msjoke 发表于 2009-5-19 10:19:52

不好意思,这个问题一直都比较迷。
写一实现清零,那如何区分是置一还是清零呢?
置一不是也要写一的吗?
呵呵,见笑了。谢谢啦!

Gorgon_Meducer 发表于 2009-5-19 10:30:37

一般是某些标志位,例如中断标志位置一实现清零。具体要看数据手册,没有所谓
一般性原则,一定要注意到数据手册上去确认。

通常情况下,某些“使能”、“开启”功能的标志,写1就是1,写0就是0;
某些由硬件来设置的标志,比如中断标志,错误标志,可能需要用户通过软件写1的
方法来清零,对于这些标志,写0是没有任何效果的。

msjoke 发表于 2009-5-19 11:50:15

欧,终于明白了。
对于标志位来说,置一是由硬件来完成的,不能人为实现。
人为软件写一其实不是写一,而是清零,只是表现形式是写一而已。
人为软件对标志位写零无效。

其实这几天对TWINT理解有误还有一个原因:
就是中文DATASHEET中翻译有误,eg:P197,
“直到TWINT 清零,时钟线SCL 才会拉低。”

好在《深入浅出AVR单片机》的书上改过来了。

谢谢Gorgon Meducer 傻孩子快速有效的解答。
我会读看数据手册,呵,不过以后要中英文对照着看了,呵呵。

NE5532 发表于 2009-6-3 21:26:54

呃~书里有说,尽量看英文版的。
页: [1]
查看完整版本: 请教下P284页中TWINT的问题?谢谢了