Обявления |
---|
Для полноценной работы рекомендуется пройти регистрацию. Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я. |
ZimA писал(а):hvurt а судьи кто? С чем сравниваешь? Эталон?
Updating = !Updating; //это шоб читать температуру через раз
if (Updating) //если в этот раз читаем температуру, то
{
w1_init(); //инициализация шины 1-wire
w1_write(0xCC); //выдаём в шину 1-wire код 0xCC, что значит "Skip ROM"
w1_write(0xBE); //выдаём в шину 1-wire код 0xBE, что значит "Read Scratchpad"
t1=w1_read(); //LSB //читаем младший байт данных
t2=w1_read(); //MSB //читаем старший байт данных
Ff = (t1 & 0x0F); //из LSB выделяем дробную часть значения температуры
t2 = t2 << 4;
t1 = t1 >> 4;
T = (t2 & 0xF0) | (t1 & 0x0F); //после объедининия смещённых частей LSB и MSB объединяем
//их и получаем целую часть значения температуры.
//подробней - смотри даташит.
if (T & 0b10000000) //если отрицательная температура
{
Ff = ~Ff + 1; //инвертируем значение дробной части и добавляем адын.
Ff = Ff & 0b00001111; //убираем лишние биты
if (!Ff) //если дробная часть равна "0"
{
T--; //значение температуры уменьшаем на адын
}
Tnew = 1000 - (((~T & 0xFF) * 10) + (Ff * 10 / 16)); //вычисляем значение температуры если T < 0.
//Формат хранения - смотри строку 58 этого файла.
}
else
{
Tnew = 1000 + (T * 10) + ((Ff * 10) / 16); //вычисляем значение температуры если Т > 0.
//Формат хранения - смотри строку 58 этого файла.
}
}
else
{
w1_write(0x44); //выдаём в шину 1-wire код 0xCC, что значит "Convert T"
}
hardlock писал(а):Artem, не прошился eeprom. Прошить заново.
bilan писал(а):Ребята подскажите: собрал девайс, прошил, после подачи питания - дисплей молчит, PD2=1 PD3=1. В чем проблема? Кто подскажет, шил прошивкой termostat 3.2, дисплей с общим катодом GNQ-5641as-21f. Спасибо!
Кто-нибудь сталкивался, с похожей проблемой, подскажите, в каком направлении копать!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3