Метценгерштейн 0 20 февраля, 2015 Опубликовано 20 февраля, 2015 · Жалоба кто-нить его использовал? считываю переменные калибровки. Закомменчены значения // переменные калибровки int16_t AC1; // 0x1FCC int16_t AC2; // 0xFBD1 int16_t AC3; // 0xC853 uint16_t AC4; // 0x8316 uint16_t AC5; // 0x63AF uint16_t AC6; // 0x447B int16_t B1; // 0x1973 int16_t B2; // 0x0026 int16_t MB; // 0x8000 int16_t MC; // 0xD1F6 int16_t MD; // 0x09C8 запрашиваю температуру UT = 26459 дальше калибрую int32_t X1 = (UT - AC6) * AC5 / 32768; int16_t X2 = MC * 2048 / (X1 + MD); int16_t B5 = X1 + X2; int16_t T = (B5 + 8) / 16; и Т у меня равно 435 ну нету у меня в квартире 43 градуса. Или что упустил? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 21 февраля, 2015 Опубликовано 21 февраля, 2015 · Жалоба кто-нить его использовал? Да. Всё там соответствует даташиту. int32_t X1 = (UT - AC6) * AC5 / 32768; int16_t X2 = MC * 2048 / (X1 + MD); Когда такое пишете, как у вас вообще хоть что-то работает? Откройте учебник по си на странице "типы данных". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 21 февраля, 2015 Опубликовано 21 февраля, 2015 · Жалоба вот что в даташите. Разные типы данных изначально. Потом уже работаем с ними. От сюда мой код и вылезает. Да, соглашусь, типы разные, идет приведение одного к другому. Как на ваш взгляд, стоило бы написать тогда? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 21 февраля, 2015 Опубликовано 21 февраля, 2015 · Жалоба причём тут типы исходных данных??? У Вас при вычислении MC * 2048 что получится? В си разрядность результата == разрядности максимального операнда. MC надо расширить до long. А ещё люди для отладки используют отладчики обычно когда что-то неясно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 21 февраля, 2015 Опубликовано 21 февраля, 2015 · Жалоба у меня нет на АВР отладчика, есть AVReal и printf отладка. От того и страдаю. грабли следующие как только разделил на любое число, прога встала а так, да, если вручную поделить на калькуляторе T_1 на 16, то температура корректна причём тут типы исходных данных??? У Вас при вычислении MC * 2048 что получится? В си разрядность результата == разрядности максимального операнда. MC надо расширить до long. А ещё люди для отладки используют отладчики обычно когда что-то неясно. т.е. корректно было бы делать (int32_t)MC*2048 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 45 21 февраля, 2015 Опубликовано 21 февраля, 2015 · Жалоба http://www.avislab.com/blog/bmp180/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 21 февраля, 2015 Опубликовано 21 февраля, 2015 · Жалоба http://www.avislab.com/blog/bmp180/ это видел. но у меня twi на прерываниях, да и просто по граблям иной раз приятно походить и разобраться ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 24 февраля, 2015 Опубликовано 24 февраля, 2015 · Жалоба т.е. корректно было бы делать (int32_t)MC*2048 ? Везде при умножении нужно учитывать, что разрядность произведения == сумме разрядностей операндов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cant_101 0 24 февраля, 2015 Опубликовано 24 февраля, 2015 · Жалоба зачем вы используете деление на 2 ????? при делении у вас куча циклов и проблемы с приведением типов данных используйте сдвиг в право на единицу. так же легко можно поделить на 16 :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 24 февраля, 2015 Опубликовано 24 февраля, 2015 · Жалоба зачем вы используете деление на 2 ????? так же легко можно поделить на 16 :) Деление на степень двойки думаю любой компилятор заменяет на соотв. кол-во сдвигов. См. листинги. Аналогично - умножение на степень 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cant_101 0 24 февраля, 2015 Опубликовано 24 февраля, 2015 · Жалоба Всегда писал явно для исключения других вариантов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться