Easyelectronics.ru

Электроника для всех
Текущее время: 22 сен 2019, 13:47

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 13 мар 2019, 08:48 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Добрый день, уважаемые форумчане.

Имеется MSP430F2013 и датчик Холла TLV493D https://www.infineon.com/dgdl/Infineon-TLV493D-A1B6_3DMagnetic-UM-v01_03-EN.pdf?fileId=5546d46261d5e6820161e75721903ddd
подключаемый по I2C.
За основу взял пример http://we.easyelectronics.ru/msp430/ispolzovanie-apparatnogo-i2c-msp430launchpad-i-ez430-f2012-dlya-podklyucheniya-segmentnogo-indikatora-melt-10.html, но так и не смог считать значения с датчика. Выдает все нули.
Show Исходный код примера

Плата и обвязка самодельные, подтягивающие резисторы к Vcc на 4,7к установлены.
Проверил с Arduino, там все работает, эта же плата выдает значения.
Исходя из этого делаю вывод, что проблема в коде.
Подскажите что нужно поправить для работы с датчиками по I2C, может быть у кого-либо есть примеры чтения данные с датчиков.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 13 мар 2019, 09:27 
Старожил
Аватара пользователя

Зарегистрирован: 14 апр 2014, 11:06
Сообщения: 1539
Откуда: Курск
Логическим анализатором посмотрите


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 13 мар 2019, 09:33 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Логический анализатор заказал, он еще в пути.
Осциллограф самый простой, без анализа, ничего криминального не показывает.
Аппаратно вроде все живо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 13 мар 2019, 12:30 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
адрес проверьте, он там BC / BD должен быть по умолчанию.
ну или - 3F/3E, если sda без подтяжки на момент включения датчика
0х90 / 0x91 там вроде никак получиться не могут


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 13 мар 2019, 12:54 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Стучусь по адресу аналогичному Ардуино 0x5E:
https://github.com/IRNAS/TLV493D-3D-Magnetic-Sensor-Arduino-Library/blob/master/TLV493D/TLV493D.cpp
const byte TLV493D::m_bAddr1 = 0x5E; // m_bAddress1
Т.к. есть подтяжка, то при включении на ноге адреса 1ка. Соответственно и адрес должен быть 1.
В датащите указано:
After power-up, the sensor reads out the voltage applied on ADDR pin for 200 µs. If the voltage level on
ADDR=high than the address is set to “1”. If the voltage level on ADDR = low the address is set to “0”.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 13 мар 2019, 13:07 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
ну так если 0x5E налево сдвинуть и получится 0xВС/0xBD для записи/чтения.
а в коде
USISRL = 0x90; // Address is 0x48 << 1 bit + 0 (rw)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 13 мар 2019, 13:23 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Код привел в качестве примера, что бы Вам лишний раз не искать.

Сейчас все перепроверил, стучусь на чтение на 0xВС. В ответ тишина. Частота на клоке около 400 кГц, на Ардуино была 100кГц.
В итоге то как правильно нужно написать?
USISRL = 0x5E;
или
USISRL = 0xBC;
Датчик возвращает нули.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 13 мар 2019, 13:46 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
0xBC для записи, чтение 0xBD


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 12:53 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Результатов пока нет.
Взял пример msp430x20x3_usi_06.c
Show msp430x20x3_usi_06.c


Выставил
char SLV_Addr = 0xBC; // Address is 0x48 << 1 bit + 1 for Read
Результат прежний, датчик выдает нули.
Может быть я что-либо пропустил, что то Ардуино делает сам фоново, а тут нужно явно прописывать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 16:17 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2227
7-битный адрес 0x5E, который после сдвига влево становится 0xBC. Для чтения +1 написано же, т.е. 0xBD. У вас же пример на чтение регистра, а не запись.
В ардуино в Wire.x() пишется 7-битный адрес, дальше код сам сдвигает влево до старшего разряда и ставит младший бит при необходимости. Тут же за вас этого никто делать не будет.
Но что вы ждете от этого примера, не понятно. Даже если адрес правильно пошлете, пример ждет что слэйв ему будет тупо инкрементируемые значения слать - 0, 1, 2, ... Это же просто пример.
Почитайте описание протокола I2C для начала. Вполне себе доступное описание тут есть: http://easyelectronics.ru/interface-bus-iic-i2c.html
Особое внимание уделите вот этой картинке, о том, как читать данные с адреса.
Изображение
Сначала _пишем_ адрес, потом отправляем старт и снова шлем адрес ус-ва, но уже с битом на чтение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 17:45 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Уважаемый, NStorm.

Спасибо за развернутый ответ.
Я руководствовался датащитом, https://www.infineon.com/dgdl/Infineon-TLV493D-A1B6_3DMagnetic-UM-v01_03-EN.pdf?fileId=5546d46261d5e6820161e75721903ddd
в котором указано
0xBD for read and 0xBC for write.
Собственно так и было сделано. В ответ тишина.
По поводу примера, инкремент не учитываю, смотрю просто значения, полученные с датчика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 17:58 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2227
Ну, всё правильно. 7-битный 0x5E, который со старшего разряда начинаясь и будет 0xBD, если справа нулем дополнить.
Как вы можете не учитывать инкремент и какие значения вы ждете с датчика, если у вас последний пример не для датчика, а для инкремента? Там же в коде есть сверка полученных данных с инкрементируемым значением:
if (USISRL == SLV_data) // If data valid...
И плюс в ваших примерах другие адреса. Вы давайте актуальный код, который с адресом 0xBC/BD пробовали.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 18:20 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
тут телепатов нет,
поэтому непонятно на что вы рассчитываете приводя не реальный код, а какие-то примеры по мотивам которых якобы что-то сделали и оно не работает.

з.ы. сейчас глянул, у меня эти датчики почему-то на 0x3F отзываются, хоть и запитано всё вместе и должно быть 0xBD, почему так получилось - хз, разбираться не стал.
ну и в каком режиме он там по умолчанию просыпается тоже вопрос, сбростье его, и отправте 0x3E(ну или 0xBC) 0x00, 0x03, чтобы наверняка в master controlled mode переключился.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 20:30 
Заглядывает иногда

Зарегистрирован: 02 мар 2017, 20:10
Сообщения: 108
Вопрос чуть не в тему.
Очень заинтересовал этот датчик.
Полазил по инету и не могу найти видео его работы.
В общем я хочу поставить такой датчик на КПП у машины.
Хватит ли у него радиуса если неодимовый магнит 10х20х2 будет от него удалён на 5см?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 21:50 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
_pv писал(а):
тут телепатов нет,
поэтому непонятно на что вы рассчитываете приводя не реальный код, а какие-то примеры по мотивам которых якобы что-то сделали и оно не работает.

з.ы. сейчас глянул, у меня эти датчики почему-то на 0x3F отзываются, хоть и запитано всё вместе и должно быть 0xBD, почему так получилось - хз, разбираться не стал.
ну и в каком режиме он там по умолчанию просыпается тоже вопрос, сбростье его, и отправте 0x3E(ну или 0xBC) 0x00, 0x03, чтобы наверняка в master controlled mode переключился.


Согласен с Вами, не самый лучший вариант просьбы о помощи без демонстрации своего кода.
Я новичок с MSP430, вот и вопросы дилетантские.
_pv, может быть Вы поделитесь своим кодом с менее опытными товарищами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 22:04 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
от магнита 10х20х2 на расстоянии 5см поле будет всего 0.5мТ, что только раз 10 больше магнитного поля Земли, а у этого датчика разрешение 0.1мТ, так что может и увидит чего в шумах после хорошего усреднения/фильтрации, но не очень уверенно.

MLX90393 спасёт отца русской демократии


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 14 мар 2019, 22:21 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
lumen_xp писал(а):
_pv, может быть Вы поделитесь своим кодом с менее опытными товарищами.

контроллер малость другой и i2c сделан "программно", сразу 16 штук в параллель, так как этих датчиков подключено 256 штук с мультиплексированием sck.
но чтение ничем не отличается:

Код:
        i2c_start();
        i2c_write(0x3F);
        for (uint8_t i = 0; i < 7; i++) data[i] = i2c_read();
        i2c_stop();
        int16_t Bx =   data[0]; Bx <<= 4; Bx |= (data[4] >> 4) & 0x0F;
        int16_t By =   data[1]; By <<= 4; By |= (data[4]     ) & 0x0F;
        int16_t Bz =   data[2]; Bz <<= 4; Bz |= (data[5]     ) & 0x0F;
        int16_t T  =   data[3] & 0xF0; T <<= 4; T |= data[6];
        if (Bx & 0x800) Bx -= 4096;
        if (By & 0x800) By -= 4096;
        if (Bz & 0x800) Bz -= 4096;
        if (T & 0x800) T -= 4096;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 15 мар 2019, 10:12 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Прошу прощения за детсадовский уровень вопросов. Еще раз повторяю, я новичок в вопросе работы с MSP430.
Для сокращения затрат времени участников форума, привожу скриншоты из документации.
И так карта регистров TLV493D:
Show Карта регистров TLV493D

У датчика есть регистры только на чтение и регистры на запись.
Для инициализации датчика нужно записать два байте, первый с нулями, а второй с настройкой адреса и режима работы.
Show Пример записи из документации

Т.е. записи типа: i2c_write(0x3F); может быть недостаточно. Наверное ему нужен байт нулей и байт типа 0x07 для выставления единиц в конце байта настройки.
Show Кусок кода с вопросами

Ну и вопросы на уровне детского сада, куда уж без них.
1. Для MSP430F2013 верна ли запись:
#include <msp430x20x3.h> //В примере был <msp430x20x2.h> для F2013 заменяю на <msp430x20x3.h>

2. Что делать с подтяжкой ног, если у меня установлены внешние резисторы?
P1OUT = 0xC0; // P1.6 & P1.7 Pullups, others to 0
P1REN |= 0xC0; // P1.6 & P1.7 Pullups

3. Я завел переменную для флага инициализации датчика в начале работы МК
int Sensor_is_init = 0; // Переменная для определения инициализации датчика в начале работы
Мне в цикле while(1) сделать проверку и записать что то вроде i2c_write(0x3F);
Как правильно записать данные байты?
В примере есть вот такая конструкция:
Код:
void Data_TX (void){

              USISRL = MST_Data++;          // Load data byte
              USICNT |=  0x08;              // Bit counter = 8, start TX
              I2C_State = 10;               // next state: receive data (N)Ack
              Bytecount++;

Как правильно в переменную передать два байта для записи?
char MST_Data = 0x55; // Переменная для передаваемых данных


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 15 мар 2019, 12:10 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
i2c_write(0x3F); это отправка i2c адреса с взведённым младшим битом, который означает что сейчас будет чтение на шине. до следующего старта, стопа или отсутсвующего АСК.
для инициализации надо сделать
i2c_start();
i2c_write(0x3E);
i2c_write(0x00); //Res [0]
i2c_write(0x03); //MOD [1], master controlled mode.
i2c_stop();

там на самом деле надо прочитать все 10 регистров и в старших трех байтах должны быть магические константы, нигде не описанные, которые надо распихать по reserved местами в четырёх конфигурационных регистрах.

1) зависит от компилятора, в каких заголовочных файлах периферия описана, для iar вроде достаточно было #include <msp430.h> или io430.h, где через кучу #ifdef нужный заголовочный файл конкретного МК сам подключится, надо только задать его в настройках проекта.
2) без разницы, внешние подтяжки всё равно для i2c должны быть гораздо сильнее внутренних.
3) почитать любой букварь по С про указатели.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 15 мар 2019, 14:10 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Уважаемый, _pv.
Согласен с Вами, что педагогика важный аспект в воспитании технической интеллигенции.
Давать готовые решения, это вредно для обучаемого.

Последую Вашему примеру, и возьму программный i2c.
Вот тут товарищ отлично описывает пример http://we.easyelectronics.ru/msp430/softovyy-i2c-i-obschenie-s-datchikom-ds1624.html

А по поводу мутных констант в регистрах, они затираются при рестарте?

Собственно в датащите указано:
MOD1 Reserved Bits must correspond to bits 4:3 from read register 7H.
Reserved register 2H Bits must correspond to bits 7:0 from read register 8H.
MOD2 Reserved Bits must correspond to bits 4:0 from read register 9H.

Наверное там что то калибровочное в части интерпретации значений с датчика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 15 мар 2019, 16:29 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
для единственного датчика программный i2c незачем делать, при наличии аппаратного.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 15 мар 2019, 19:27 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
С софтверным I2C тоже не завелось.
Вот файл настройки
Show i2c-soft.h

Вот сам код
Show Код

Будьте так любезны, поправьте что не так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 15 мар 2019, 22:08 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
вы опять предлагаете найти ошибку по заголовочым файлам?

слэйв ACK выставляет?
адрес 0x3E / 0x3F попробуйте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 15 мар 2019, 22:14 
Только пришел

Зарегистрирован: 12 мар 2019, 21:55
Сообщения: 12
Хорошо, попробую.

Я ведь выложил код во втором спойлере.

А если не секрет, то что за многоточечные измерения Вы делали?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MSP430F2013 и датчик Холла по I2C
СообщениеДобавлено: 16 мар 2019, 02:06 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3287
для измерения и сортировки постоянных магнитов.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB