有关ATMEGA128和DS18B20的问题 [复制链接]
1芯积分
此帖出自Microchip MCU论坛
最新回复
正是因为存在中断,会影响时序,所以需要在单总线操作期间禁止中断。
我的程序中开始就关闭中断,完成后恢复中断状态
void OWI_WriteBit1(unsigned char pins)
{
unsigned char intState;
// Disable interrupts.
intState = __save_interrupt();
cli();
// Drive bus low and delay.
OWI_PULL_BUS_LOW(pins);
_delay_us(OWI_DELAY_A_STD_MODE);
// Release bus and delay.
OWI_RELEASE_BUS(pins);
_delay_us(OWI_DELAY_B_STD_MODE);
// Restore interrupts.
__restore_interrupt(intState);
}复制代码
你的代码中就没有相关的处理
void write_1820(unsigned char data)
{
unsigned char i;
for(i=0;i<8;i++)
{
//SET_TEM_SDT;
CLR_TEM_SDT; //从高到低,产生写间隙
if(data&(1<<i)) //写数据,先写低位
SET_TEM_SDT;
else
CLR_TEM_SDT;
delay6(2,60); //15~60us (46us)
SET_TEM_SDT;
data>>=1;
}
SET_TEM_SDT;
}复制代码
详情
回复
发表于 2016-11-18 15:14
| ||
|
||
此帖出自Microchip MCU论坛
| ||
|
||
| |
|
|
此帖出自Microchip MCU论坛
点评 | ||
|
||
此帖出自Microchip MCU论坛
| ||
|
||
此帖出自Microchip MCU论坛
| ||
|
||
此帖出自Microchip MCU论坛
点评 | ||
|
||
此帖出自Microchip MCU论坛
| ||
|
||
此帖出自Microchip MCU论坛
| ||
|
||
论坛测评队员
EEWorld Datasheet 技术支持