26.03.2017, 21:39
|
|
Прохожий
Регистрация: 26.03.2017
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Адресация магнетометра 5883L
GarryZZ, именно то, что мне было нужно, огромное спасибо!
Автоинкремент внутренних адресов оболочка может и умеет, я не умею, буду читать просто по адресам.
Только еще уточнить можно, байт идентификации для чего нужен? Просто контроль правильности работы?
|
|
|
|
26.03.2017, 21:54
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Адресация магнетометра 5883L
Вообщето, в байте адреса устройства на шине младший байт означает направление - запись/чтение. Отсюда и адреса 0х3C, 0x3D.
Я не знаю, умеет ли тот графический редактор правильно работать с последовательностями запись/чтение.
При чтении регистра, нужно сначала записать в магнетометр номер регистра, затем сформировать повторный старт и отправив адрес устройства с битом чтения и далее принять как минимум два байта. Судя по даташиту, там автоинкремент адреса регистров, поэтому можно продолжить чтение, приняв все 6 байт, а чтобы остановить чтение, нужно "не подтвердить" последний байт и остановить чтение.
|
|
|
|
27.03.2017, 08:25
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2010
Адрес: Днепр, Украина
Сообщений: 765
Сказал спасибо: 450
Сказали Спасибо 401 раз(а) в 282 сообщении(ях)
|
Re: Адресация магнетометра 5883L
Сообщение от vladmed
|
байт идентификации для чего нужен?
|
Мм... конструктор... кубики... три компаса разных изготовителей. С разными алгоритмами работы по I2C... Или к примеру все микросхемы фирмы Honeywell, но с разными буквами/цифрами в конце обозначения (скорость, потребление, точность).
Как определить, с чем в данный момент будет работать программа оболочки? Прочитать идентификатор изделия, который обычно присваивается производителем и уникальный для каждого типа/версии изделия.
Следовательно, программа даже без предварительной инициализации микросхемы может прочесть все байты идентификатора, по ним определить что за микросхема ответила ... и использовать соответствующие подпрограммы инициализации и обмена. В общем то это считается хорошим тоном - щупать ревизию чипа в программе и принимать решение на ходу.
Как то так. А насчет автоинкремента адреса внутренних регистров - это внутренне дело микросхемы, важно понять как ваша графическая оболочка сможет (и сможет ли?) прожевать поток данных из микросхемы, сохранить его где то , затем еще и преобразовать их. А после еще и визуализировать в виде стрелки компаса.
И регистры идентификации тем и хороши, что данные в них всегда есть и всегда предсказуемы. А значит удобны для отладки последовательного чтения трех байт с автоинкрементом или без него.
зы. NewWriter, у меня нет опыта работы с описанной графической оболочкой. Могу только догадываться, что она делает. Подозреваю, что весь нижний уровень реализуется автоматически. Рестарты и АСК. Вывод исключительно на основе картинки из поста на первой странице.
Последний раз редактировалось GarryZZ; 27.03.2017 в 08:30.
|
|
|
Сказали "Спасибо" GarryZZ
|
|
|
29.03.2017, 10:38
|
|
Прохожий
Регистрация: 26.03.2017
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Адресация магнетометра 5883L
Краткий отчет: устройство успешно работает. Вначале делается переход на continuous mode (0х02 0х00), затем начинаем читать. Запись 0x1Е 0x03 {готовимся работать с внутренним регистром 03} не требуется, сразу начинаем читать регистры 0x03, 0x05 и 0x07, именно так, через один. Формат входных данных 16 bit MSB. Получаемые цифры точно соответствуют сырым данным, получаемым через готовый скетч Arduino, видимо оболочка понимает автоинкремент и совмещает куски 8-bit значений.
Осталось написать математику, не подскажете, где можно посмотреть псевдокод для получения направления на север?
|
|
|
|
29.03.2017, 18:47
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Адресация магнетометра 5883L
"Строго на север, порядка 50 м будет туалэт типа сортир, помеченный на карте буквами Мэ и Жо"
Школьную тригонометрию помним? Прямоугольный треугольник с катетами некоторой величины. Как найти длину гипотенузы треугольника и самое главное, угол между гипотенузой и одним из катетов?
Я не знаю, понимает ли ваш графический пакет тригонометрические функции, но в общем случае - направление вектора, то есть, угол между одной из коорд.осей и направлением вектора = арктангенс отношения значений координат.
Поскольку магнетометр трехосевой, сначала считаем в плоскости X-Y, затем ищем направление по Z.
|
|
|
|
29.03.2017, 22:18
|
|
Прохожий
Регистрация: 26.03.2017
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Адресация магнетометра 5883L
Ну это-то я помню, но тогда шкалы 360 гр. не получается. Впрочем я уже догадался, что надо разбить значения на 4 диапазона. Сейчас мы уже играемся работающим компасом, еще раз спасибо.
|
|
|
|
29.03.2017, 22:35
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Адресация магнетометра 5883L
Почему ж не получается? все должно получаться. Отрицательные значения по осям то присутствуют. Надо просто переменные определить как signed int.
|
|
|
|
30.03.2017, 01:53
|
|
Прохожий
Регистрация: 26.03.2017
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Адресация магнетометра 5883L
Ну пока не получается, с трехмерным пространством что-то мне сложновато, последний раз я с этим сталкивался лет 25 назад...
|
|
|
|
30.03.2017, 08:45
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,121
Сказал спасибо: 2,569
Сказали Спасибо 11,944 раз(а) в 5,991 сообщении(ях)
|
Re: Адресация магнетометра 5883L
Сообщение от vladmed
|
с трехмерным пространством что-то мне сложновато
|
1.
2.
Гоголь в помощь!
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:55.
|
|