Посмотрел на исходник возникла пара вопросов void temp(void) { float t; tmp=0; while (tmp==0) tmp=i2c_start(); i2c_write(0x80); i2c_write(0xF3); i2c_stop(); delay_ms(100); i2c_start(); i2c_write(0x81); tmp=i2c_read(1); tmp1=i2c_read(1); i2c_read(0); i2c_stop(); #pragma warn- t=(tmp*256)+tmp1; t=(t/65536)*175.72-46.85; #pragma warn+ tmp=abs(t); drob=abs((t-tmp)*10); } возникла пара вопросов для чего после команды i2c_write(0xF3); посылать i2c_stop(); в описании на SHT21 такого нет. как я понял работа идет в режиме NO HOLD MASTER MODE?
Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26 Сообщений: 11492 Откуда: град Нижний
Рейтинг сообщения:0
11VETAL, а ничего, что ты оказываешь автору этой статьм "мышино-медвежью услугу"? В правилах конкурса написано, цитирую: "Любое общение авторов с читателями запрещено до завершения голосования. За нарушение статьи будут сниматься с голосования."..
_________________ Между людьми возникает напряжение, если у них разный потенциал...
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Вот кусок из работающей программы. Давно уже было.
void Start_temp(void) { i2c__start(); if ((TWSR & 0xF8) != START) //если были пробемы с передачей старта {i2c__error=1;} //то признак ошибки
i2c__tx_addr (ADR_WRITE_SHT21); //команда записи if((TWSR != MTX_ADR_ACK)&&(TWSR != MRX_ADR_ACK))//If NACK received return {i2c__error=1;} //то признак ошибки
i2c__tx (TRIG_T_HOLD); //режим HOLD для температуры if(TWSR != MTX_DATA_ACK) //если нет подтверждения от приемника, то {i2c__error=1;} //признак ошибки
i2c__rep_start(); if ((TWSR & 0xF8) != REP_START) //если были пробемы с передачей поторного старта {i2c__error=1;} //то признак ошибки
i2c__tx_addr (ADR_READ_SHT21); //команда записи if((TWSR != MTX_ADR_ACK)&&(TWSR != MRX_ADR_ACK))//If NACK received return {i2c__error=1;} //то признак ошибки
if (i2c__error==1) { return; //Выходим если Ошибка } delay_ms(100); //Ждем когда пройдет преобразование }
void temp(void) { unsigned int t1; float t;
t1=i2c__rx(1); // read msb t1=t1<<8; //сдвигаем считаный байт на 8 бит t1|=i2c__rx(0); // read lsb и выполняем побитное или со значением t1 //присваиваем полученное значение t1 i2c__stop();
if(i2c__error==1) { return; //Выходим если Ошибка }
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения