请教下P284页中TWINT的问题?谢谢了
“作为从机来说,只要TWINT位的值为1,SCL时钟信号就会被一直拉底。这一特性需要我们特别注意,如果处理不当,比如忘记在中断处理结束以后,人为地对其置位实现清零,就会导致整个总线一向处于瘫痪状态。”请问后一句中的清零是对TWINT赋1呢?还是写0呢?
如果是赋一操作,那岂不是反倒让总线瘫痪了吗? 写一实现清零,而不是说写1就是1…… 不好意思,这个问题一直都比较迷。
写一实现清零,那如何区分是置一还是清零呢?
置一不是也要写一的吗?
呵呵,见笑了。谢谢啦! 一般是某些标志位,例如中断标志位置一实现清零。具体要看数据手册,没有所谓
一般性原则,一定要注意到数据手册上去确认。
通常情况下,某些“使能”、“开启”功能的标志,写1就是1,写0就是0;
某些由硬件来设置的标志,比如中断标志,错误标志,可能需要用户通过软件写1的
方法来清零,对于这些标志,写0是没有任何效果的。 欧,终于明白了。
对于标志位来说,置一是由硬件来完成的,不能人为实现。
人为软件写一其实不是写一,而是清零,只是表现形式是写一而已。
人为软件对标志位写零无效。
其实这几天对TWINT理解有误还有一个原因:
就是中文DATASHEET中翻译有误,eg:P197,
“直到TWINT 清零,时钟线SCL 才会拉低。”
好在《深入浅出AVR单片机》的书上改过来了。
谢谢Gorgon Meducer 傻孩子快速有效的解答。
我会读看数据手册,呵,不过以后要中英文对照着看了,呵呵。 呃~书里有说,尽量看英文版的。
页:
[1]