Перейти к содержанию

Датчик Температуры И Влажности Sht15 И Pic18F25J50


Senyacherenakov

Рекомендуемые сообщения

Всем добрый день!

Пишу в надежде, что кто-то-нибудь пытался связаться с этим датчиком аппаратным i2c. На деле он воспринимает только программный вариант. А так чтоб подключить модуль MSSP - это неет!

Среда mplab 8.92, С18 compiler. Данный компилятор имеет хорошую библиотеку функций i2c.

Задание мое такое - увидеть (хотя бы!) на осциллографе линию тактирования и прочитать два байта данных от датчика. Вот листинг:

#pragma config OSC = INTOSC, FCMEN = OFF, IESO = OFF, MSSP7B_EN = MSK7

#pragma config DSBOREN = OFF

#pragma config WDTEN = OFF, WDTPS = 32768, DSWDTEN = OFF

#pragma config LPT1OSC = OFF

#pragma config STVREN = ON, XINST = OFF, T1DIG = OFF

#pragma config RTCOSC = INTOSCREF

#pragma config DSWDTOSC = INTOSCREF, IOL1WAY = OFF

#pragma config WPFP = PAGE_0, WPEND = PAGE_0, WPCFG = OFF, WPDIS = OFF

/** I N C L U D E S **************************************************/

#include <p18f25j50.h>

#include <i2c.h>

// header file

#include <delays.h>

#include <math.h>

#define measure_temp 0x03

#define measure_humidity 0x05

#define pic_frq 500 // кГц - частота контроллера

#define i2c_frq 100 // кГц - частота обмена

// расчет коэф генератора

#define gen_frq (((pic_frq / i2c_frq) / 4) - 1)

/** V A R I A B L E S *************************************************/

#pragma udata // declare statically allocated uinitialized variables

unsigned char buff[2]={0,0}; // 8-bit variable

int temp;

/** D E C L A R A T I O N S *******************************************/

#pragma code // declare executable instructions

void main (void)

{

TRISBbits.TRISB4 = 1;

TRISBbits.TRISB5 = 1;

PORTA = PORTB = PORTC = 0;

OpenI2C1 (MASTER, SLEW_OFF);

SSP1ADD = gen_frq;

IdleI2C1();

StartI2C1();

IdleI2C1();

WriteI2C1( measure_temp );

IdleI2C1();

buff[0] = ReadI2C1();

AckI2C3();

buff[1] = ReadI2C1();

NotAckI2C1();

StopI2C1();

temp = buff[0] << 8;

temp = temp + buff[1];

}

Линия данных стоит в положении ВЫСОКОЕ, линия тактирования молчит. Отладчик тем не менее доходит до функции ReadI2C1(), типа он там ждет что появится флаг заполнения буфера.

...............про этот датчик я где-то на западном форуме увидел отзыв "It's notI2c sensor". В ДШ условие старта отличается от общепринятого для i2c. Сломал себе мозги. Думаю завести фляжечку с беленькой...

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

В даташите черным по белому написано:

The sensor cannot be addressed by I2C protocol, however, the sensor can be connected to an I2C bus without interference with other devices connected to the bus. The controller must switch between the protocols.

У него свой протокол, несовместимый с I2C.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Я это читал и понял, что, мол, связь возможна только когда у нас один контроллер и один датчик. Разве не так? Если переводить совсем дословно, то получается, что датчик может быть подключен к шине без взаимодействия с другими устройствами, подключенными к шине. Тогда смысл его вообще подключать?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Там лишь уточняется, что датчик можно подключить (для экономии выводов) к шине I2C вместе с другими устройствами. Мешать друг другу они при этом не будут. Но контроллер нужно переключать между протоколами. Так что просто программно организуйте протокол для датчика, не используя аппаратный I2C.

Ссылка на комментарий
Поделиться на другие сайты

Большое спасибо! Тогда вопрос такой - почему на осциллографе может быть не видно условий старта и отсылаемого байта. Ведь соответствующие функции конфигурируют МК, как мастер. Значит он может выдать на линии данных и тактирования хоть что-нибудь.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...