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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Акселерометр ADXL362
vladimir_orl
сообщение Feb 28 2014, 10:43
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591



Здравствуйте, уважаемые коллеги.

Второй день уже сижу и думаю. Имеется акселерометр ADXL362 (рабочая партия), подключенный через SPI к микроконтроллеру.
И с него считываются данные ускорений по осям X Y Z (регистры 0х08, 0х09, 0х0А). Точнее должны считываться. Потому что приходит информация только о значении по оси Х.

Читаю и по очереди и списком. Раньше всё работало. Подскажите, что это может быть.

Если вопрос не в этой ветке, переадресуйте.

Сам себе отвечаю.

На сайте AD нашёл.


/* Bit values in POWER_CTL (8 bits allocated) */
#define XL362_STANDBY 0x00
#define XL362_MEASURE_1D 0x01 !!!!!
#define XL362_MEASURE_3D 0x02
#define XL362_AUTO_SLEEP 0x04
#define XL362_SLEEP 0x08


А в даташите этого нет...
Go to the top of the page
 
+Quote Post
Herz
сообщение Feb 28 2014, 12:13
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(vladimir_orl @ Feb 28 2014, 12:43) *
А в даташите этого нет...


Как это нет? А это:
Прикрепленное изображение


(Страница 34 ДШ).
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 2 2014, 12:10
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Я вот другого не пойму. На стр. 36 есть пример Autonomous Motion Switch. И рекомендуется, среди прочего:
Цитата
3. Write 30 decimal (0x1E) to Register 0x25: sets inactivity timer to 30 samples or about 5 seconds.

что предполагает Sample rate 6 Гц, как в режиме Wake-up. Но, с одной стороны, в этом режиме inactivity timer не работает, а с другой - при Sample rate по умолчанию - 100Гц (в режиме measurement) для 5 сек паузы нужно писать число 5000. Опечатка?
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 3 2014, 17:09
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Странно, но не удаётся отобразить прерывания на выводы INT1 и INT2. Более того, при попытке записывать INTMAP2 после перевода устройства в measurement mode устанавливается бит ошибки ERR_USER_REGS и акселерометр "виснет" - содержимое регистров не обновляется. Сами пины при этом никуда даже не подключены.
Кто-нибудь сталкивался?
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 3 2014, 21:44
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Значит, веду репортаж. biggrin.gif
Обнаружилась ещё одна "опечатка" (ох, и нервов же потрачено!):
вопреки рекомендациям из ДШ, для конфигурации устройства в качестве Autonomous Motion Switch, необходимо в регистре POWER_CTL устанавливать бит AUTOSLEEP, а не WAKEUP (и ни в коем случае не оба сразу), соответственно, записывая значение 0х06 вместо 0x0A. Иначе акселерометр не реагирует на движение и продолжает работать с частотой 6Гц.
Вот такой нюанс. Я полагал, что режим Sleep и Standby - это одно и то же и из него можно выйти только по сбросу. Что такое WAKEUP без AUTOSLEEP (или с AUTOSLEEP) - ума не приложу. Ведь только из AUTOSLEEP возможно "пробуждение" в нормальный режим.
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 4 2014, 04:50
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Herz @ Feb 28 2014, 16:13) *
Как это нет? А это:


А что, "это" ?

В даташите стоит "Reserved", а у ТС #define XL362_MEASURE_1D 0x01

Я так подозреваю, что они хотели сделать 1D-режим, но не получилось, не заработал, и в даташите обозвали Reserved.
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 4 2014, 07:54
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(SM @ Mar 4 2014, 06:50) *
А что, "это" ?
В даташите стоит "Reserved", а у ТС #define XL362_MEASURE_1D 0x01
Я так подозреваю, что они хотели сделать 1D-режим, но не получилось, не заработал, и в даташите обозвали Reserved.

Возможно, ну и что? К проблемам автора это какое имеет отношение? Если он подключал акселерометр по даташиту, то и работать он должен был в соответствии с даташитом. А как ему помогло то, что он раскопал в каких-то апнотах - осталось непонятным.
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 4 2014, 08:09
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Herz @ Mar 4 2014, 11:54) *
А как ему помогло то, что он раскопал в каких-то апнотах - осталось непонятным.

Кому непонятным? Очень даже понятным. Он, по видимому случайно, включил этот самый 1D-режим недокументированный, и у него пошли выборки только по оси X, а каналы Y и Z отключились. А теперь, спасибо ему, мы все знаем об интересном полунедокументированном режиме (скорее всего, экономящем питание, если не нужны все 3 оси, а хватает одной, неплохо бы проверить)
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 4 2014, 10:45
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(SM @ Mar 4 2014, 10:09) *
Кому непонятным? Очень даже понятным. Он, по видимому случайно, включил этот самый 1D-режим недокументированный, и у него пошли выборки только по оси X, а каналы Y и Z отключились. А теперь, спасибо ему, мы все знаем об интересном полунедокументированном режиме (скорее всего, экономящем питание, если не нужны все 3 оси, а хватает одной, неплохо бы проверить)

В том-то и дело: непонятно, как это произошло. Ведь раньше, по утверждению автора, всё работало. И логично было бы сверять установки с даташитом, а не искать какие-то объяснения отказу устройства работать в нештатном режиме.
Другое дело, что раньше, возможно, этот режим 1D поддерживался и автор ожидал от новой партии аналогичного поведения. Но он об этом ничего не написал, а наоборот, высказался в том духе, что:
Цитата
И с него считываются данные ускорений по осям X Y Z (регистры 0х08, 0х09, 0х0А). Точнее должны считываться. Потому что приходит информация только о значении по оси Х.
Читаю и по очереди и списком. Раньше всё работало. Подскажите, что это может быть.

То есть, логично предположить, что и раньше "всё" - это значило "все три координаты".
В общем, неясно, чего искал автор.
А режим я проверю, благо плата на столе. Но с экономией питания разработчики и так перестарались, ИМХО. biggrin.gif Вот если бы FIFO можно было бы заполнять одной или двумя координатами да ещё выбирать 8-битный режим, это была бы экономия.
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 4 2014, 11:28
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Herz @ Mar 4 2014, 14:45) *
В том-то и дело: непонятно, как это произошло. Ведь раньше, по утверждению автора, всё работало.

Ну тут уж да, как именно это произошло на физическом уровне, это мы не узнаем (да и автор, тоже вряд ли sm.gif sm.gif ). Например, случайно цифру не ту нажал и не заметил, когда что-то исправлял... Но ясно то, что по какой то нелепой случайности в регистр занеслось значение Reserved, а раньше было правильное. И оно показало, что на самом деле режим 1D есть и работает. Вопрос на сколько нормально он работает, и почему не описан в ДШ, но описан в апноте...
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 4 2014, 14:50
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Мне лично неясен мотив поисков, ведь всего-то нужно было проверить цифирьки... rolleyes.gif
Указанный дефайн присутствует в коде неизвестного автора, датируемом 2011 годом:
Цитата
File Name : XL362.h
Author : MPD Application Team
Version : V0.0.1
Date : 12/12/2011
Description : XL362 Registers and bits values
File ID : $Id: xl362.h,v 1.1.1.1 2012/01/10 15:18:18 jlee11 Exp $

Analog Devices ADXL 362 digital output accellerometer
with advanced digital features.

Based on preliminary data sheet Rev 12b

© 2008 Analog Devices application support team.
xxx@analog.com


В хедере ADXL362.h автора DNechita (Dan.Nechita@analog.com) от 2012г. режим 1D уже не упоминается.
Я попробовал, действительно в этом случае обновляется только регистр координаты Х. Уменьшается ли потребление - пока не проверял.
Полезна ли эта информация? Сомневаюсь. Не зря, видно, Девицы отказались от этой опции, ведь она, по крайней мере, не помешала бы.
Видимо, с ней есть проблемы. Девайс и так получился уж очень трепетным.

Вот с регистрами INTMAP настоящие чудеса. Если записывать их до включения измерений так:
Код
AD_W_Reg(INTMAP2, 0x01);        // INT2 pin is active high, data ready status
AD_W_Reg(INTMAP1, 0x01);        // INT1 pin is active high, data ready status
AD_W_Reg(POWER, 0x06);          // measurement mode, normal operation, autosleep mode

то регистры не прописываются и акселерометр не работает. Вообще. То же самое, если писать только второй.
Если писать только первый:
Код
//AD_W_Reg(INTMAP2, 0x01);        // INT2 pin is active high, data ready status
AD_W_Reg(INTMAP1, 0x01);        // INT1 pin is active high, data ready status
AD_W_Reg(POWER, 0x06);          // measurement mode, normal operation, autosleep mode

то он получает нужное значение (можно проверить чтением), акселерометр работает, но пин остаётся в третьем состоянии.
Если же писать второй (или оба) после включения режима измерений, то возникает ошибка, как я писал выше, и акселерометр - мёртв.
Запись первого после включения измерений проходит, опять же, успешно, но никак не проявляется.
Монтаж проверил уже пятьдесят раз. Перепаивать вручную очень пока не хочется.
Жаль, что автор пропал. Интересно, не было ли у него чего похожего...
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 4 2014, 15:08
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Herz @ Mar 4 2014, 18:50) *
Полезна ли эта информация? Сомневаюсь. Не зря, видно, Девицы отказались от этой опции, ведь она, по крайней мере, не помешала бы.


Ну это как сказать... Много чего недокументированного оказывается полезным в реальной работе sm.gif По секрету скажу, что, к примеру, работа эмуляторов TI XDS510 старых, ISA и PCI, до сих пор базируется на недокументированных возможностях Windows. И работает до сих пор во всех ОС sm.gif

Так что, если этот режим работает, то и может быть полезен кому нибудь... Он ведь явно был в "preliminary data sheet Rev 12b".

По поводу INTMAP, это пожалуй в техподдержку обращаться надо, подробно описав вопрос и приложив примеры.
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 4 2014, 18:03
Сообщение #13


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(SM @ Mar 4 2014, 17:08) *
Так что, если этот режим работает, то и может быть полезен кому нибудь... Он ведь явно был в "preliminary data sheet Rev 12b".


Но ведь наверняка убрали не без причины. Казалось бы, лишний плюс...
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 4 2014, 18:22
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Herz @ Mar 4 2014, 22:03) *
Но ведь наверняка убрали не без причины. Казалось бы, лишний плюс...

Мы вряд ли догадаемся, зачем и почему это сделано. Может быть, например, точность в этом режиме падает ниже описанной, или еще какой глючок-с, а может быть просто из маркетинговых соображений, чтобы какие-то другие продукты, не трехосевые, тоже продавались... Причем маркетинг не менее вероятен, чем глюк...
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 6 2014, 12:40
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Проверил, наконец, другой экземпляр. Как и следовало ожидать, всё в порядке. Проблема с прерываниями, похоже, крылась в "сопле" между выводами 9 и 10 под корпусом чипа.
10-й это "Reserved" как-бы... Эх, ну почему для макетирования не выпускать микросхемы в нормальных корпусах?! Ох, уж эта погоня за размером!
Ладно бы, но дайте альтернативу, а то ведь без breakout board под каждый элемент - уже никуда...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:00
Рейтинг@Mail.ru


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