реклама на сайте
подробности

 
 
> Проблемы с MAX44009
kreker
сообщение Apr 9 2016, 13:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 20-09-14
Пользователь №: 82 877



Доброго дня.

Мне надо получить разовые показания освещённости с дачтика MAX44009.
Седлал всё, как описано тут.

Проблема в том, что прерывание происходит только один раз, после чего уровень на пине INT остаётся высоким постоянно (см. прикреплённые файлы i2c сессии логического анализатора и скриншоты).
И с описанием в статье не очень-то сходится: после изменения регистра конфигурации уровень на пине INT должен смениться пару раз, но этого не происходит.
Код
void setupMax44009(void)
{
  i2c_write(MAX44009_INTERRUPT_ENA_REG, 0x01); // Set ADDR: 0x01, VAL: [b7]...[b0] = 0000 0001, after RESET
  i2c_write(MAX44009_CONFIG_REG, 0xC7); // Set ADDR: 0x02, VAL: [b7]...[b0] = 1100 0111, after RESET
  i2c_write(MAX44009_THRESH_LOW_REG, 0xFF); // Set ADDR: 0x06, VAL: [b7]...[b0] = 1111 1111, after RESET
  i2c_write(MAX44009_THRESH_HIGH_REG, 0x00); // Set ADDR: 0x05, VAL: [b7]...[b0] = 0000 0000, after RESET
  i2c_write(MAX44009_THRESH_TIMER_REG, 0x00); // Set ADDR: 0x07, VAL: [b7]...[b0] = 0000 0000, after RESET
}

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение


Прикрепленный файл  MAX44009_i2c_session.zip ( 8.84 килобайт ) Кол-во скачиваний: 24


Может кто подсказать, что сделано не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RabidRabbit
сообщение Apr 10 2016, 10:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Вас не смущает вот это:
If the INTE bit is set to 1, then the INTS status bit is asserted if the light intensity exceeds either upper or lower threshold
limits (as specified by registers 0x05 and 0x06, respectively) for a period longer than that defined by the Threshold
Timer register (0x07)
. This bit resets to 0 after the host reads this register.

При том, что в Вашем коде:
i2c_write(MAX44009_THRESH_TIMER_REG, 0x00); // Set ADDR: 0x07, VAL: [b7]...[b0] = 0000 0000, after RESET

И при том, что в даташите:
POWER-ON RESET STATE для регистра Threshold Timer = 0xFF

И далее:
The value in this register sets the time used to control this delay. A value of 0x00 in this register (with INTE bit = 1 in the
Interrupt Enable register) configures the IC to assert the interrupt pin as soon as the light level exceeds either threshold
.
Time delay = (128xT7 + 64xT6 + 32xT5 + 16xT4 + 8xT3 + 4xT2 + 2xT1 + T0) x 100ms.

По-моему, чип всё делает в соответствии с документацией sm.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 22:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016