суть проблемы заключается ч том, что написанная программа для AtMega 128 работает без каких либо изъянов, но при попытке ее перенести на AtMega 32 возникла следующая проблема:
приведенная ниже конструкция на 32 меге просто не работает:
Вариант 1
if(tmp==0x00)
{
Closed=true;
}
else
{
Closed=false;
if(tmp==0x3F)
{
All=true;
}
else
{
All=false;
for( i = 1; i < 6; i++)
{
if(tmp & (1 << i))
SensorData[i]=false;
else
SensorData[i]=true;
}
}
}
Вариант 2
if(tmp==0x00)
{
Closed=true;
}
else
{
Closed=false;
if(tmp==0x3F)
{
All=true;
}
else
{
All=false;
tmp=(~tmp)&0x01;
if(tmp!=0x01)
{
Nurse1=true;
}
else
{
Nurse1=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x02;
if(tmp!=0x02)
{
Nurse2=true;
}
else
{
Nurse2=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x04;
if(tmp!=0x04)
{
Hall=true;
}
else
{
Hall=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x08;
if(tmp!=0x08)
{
Bedroom=true;
}
else
{
Bedroom=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x10;
if(tmp!=0x10)
{
Kitchen=true;
}
else
{
Kitchen=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x20;
if(tmp!=0x20)
{
Door=true;
}
else
{
Door=false;
}
}
оба варианта ведут себя одинаково нормально на меге 128 и оба же варианта ведут себя одинаково плохо на меге 32
