|
比如有这么一个函数.- void SetLM75(unsigned char RegisterAddr,unsigned char HValue,unsigned char LValue){
- TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//发送开始信号
- while (!(TWCR & (1<<TWINT)));
- TWDR = LM75_Address_W;//写信号
- TWCR = (1<<TWINT)|(1<<TWEN);
- while (!(TWCR & (1<<TWINT)));
- TWDR = RegisterAddr;//寄存器地址
- TWCR = (1<<TWINT)|(1<<TWEN);
- while (!(TWCR & (1<<TWINT)));
- TWDR = HValue;//寄存器地址
- TWCR = (1<<TWINT)|(1<<TWEN);
- while (!(TWCR & (1<<TWINT)));
- TWDR = LValue;//寄存器地址
- TWCR = (1<<TWINT)|(1<<TWEN);
- while (!(TWCR & (1<<TWINT)));
- TWCR = TWINT+TWSTO;//STOP信号
- while (!(TWCR & (1<<TWINT)));
- }
复制代码 通过查询标志的方法,不能达到降低功耗的模式,那么,应该在TWCR时候置位TWIE(中断允许位),然后添加一个空中断.以便进入模式后唤醒吧,(先sei再sleep)问题是,他只有一个TWI Address Match的中断唤醒源,发送Start后根本不唤醒,还是我使用Timer 2设置一个定时唤醒呢?
求做过低功耗的说说. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|