подскажите в чем проблема при вычислении, если вот эту часть
Цитата
temp = ADCread();
gc=(unsigned int)((log(((temp*0.0025)-0.1438)/4.959))/0.029);
long2char(gc);
заменить на :
ADCread();
if (temp<37) temp=37;
gc=(unsigned int)(22499365 - 22473186*(powf(temp,0.00015)));
long2char(gc);
А то выяснилось, что такая функция намного лучше приводит значения полученные с АЦП к тем значениям, которым они соответствуют.
В AVR Studio вся арифметика проходит гладко и без сбоев:
с АЦП 965 --> gc=3002
с АЦП 0 --> 37 --> gc=14002
в реальном железе индикаторы не горят, хотя нули должны гореть всегда.
и еще: в свойствах проекта CSTACK=0x256 RSTACK=128 надо ли их уменьшить/увеличить?
Сообщение отредактировал Serg_greS - May 3 2006, 06:32