Два акселерометра по шине SPI

Venanskui
Offline
Зарегистрирован: 10.07.2021

Здравствуйте, имеются два акселерометра ADXL362, как их обоих подключить, для синхронной передачи данных измерений, шина SPI, пытался сделать из примера SimpleRead для ADXL362, т.к. вообще не разбираюсь. Можно ли на один канал передавать измерения с обоих датчиков? Как переназначать пины для SPI? И как вообще подключить, пробовал последовательную и параллельную схему. Читал про настройку регистров вообще не понимаю. В общем не знаю как подключить аппаратно и программно оба. Заранее спасибо.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Читай про SPI и особенно про ногу SS (Slave Select), для чего она нужна, как ты думаешь?

Venanskui
Offline
Зарегистрирован: 10.07.2021

Я читал про то, что его надо в LOW ставить, для открытия, но просто так оно почему то не делается, в библиотеке ADXL362 есть специальная функция begin, я пробовал писать код для обоих акс-ов с разными переменными, но почему то не хочет так работать, а с помощью digitalWrite(10,LOW) к примеру, не хочет вообще работать.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ну, ни схемы, ни кода я не видел, поэтому ХЗ

b707
Offline
Зарегистрирован: 26.05.2017

Venanskui пишет:

я пробовал писать код для обоих акс-ов с разными переменными, но почему то не хочет так работать, а с помощью digitalWrite(10,LOW) к примеру, не хочет вообще работать.


потому что надо не с " разными переменными", а разными пинами! Поэтому неудивительно, что просто digitalWrite(10,LOW) не работает.
Вам посоветовали прочитать про SPI, похоже вы ничего не поняли, читайте еще.

Venanskui
Offline
Зарегистрирован: 10.07.2021
#include <SPI.h>
#include <ADXL362.h>
 
ADXL362 x1;
ADXL362 x2;
 
int16_t temp;
int16_t XValue, YValue, ZValue, Temperature;
int16_t XValuez, YValuez, ZValuez, Temperaturez;
void setup(){
  
  Serial.begin(9600);
  xl.begin(10);
  x2.begin(9);
  xl.beginMeasure();              // Switch ADXL362 to measure mode  
x2.beginMeasure();
  Serial.println("Start Demo: Simple Read");
}
 
void loop(){
    
  // read all three axis in burst to ensure all measurements correspond to same sample time
  xl.readXYZTData(XValue, YValue, ZValue, Temperature);  
  Serial.print("XVALUE=");
  Serial.print(XValue);
  Serial.print("\tYVALUE=");
  Serial.print(YValue);
  Serial.print("\tZVALUE=");
  Serial.print(ZValue);
  Serial.print("\tTEMPERATURE=");
  Serial.println(Temperature);
  x2.readXYZTData(XValuez, YValuez, ZValuez, Temperaturez);  
  Serial.print("XVALUEz=");
  Serial.print(XValuez);   
  Serial.print("\tYVALUEz=");
  Serial.print(YValuez);  
  Serial.print("\tZVALUEz=");
  Serial.print(ZValuez);  
  Serial.print("\tTEMPERATUREz=");
  Serial.println(Temperaturez);
  delay(100);                // Arbitrary delay to make serial monitor easier to observe
}
Venanskui
Offline
Зарегистрирован: 10.07.2021

С разными пинами для каждого делал, но дело в том, что при команде digitalWrite не работает совсем.

Venanskui
Offline
Зарегистрирован: 10.07.2021

И можно, пожалуйста, подсказать по самой SPI, можно ли передавать данные от двух датчиков синхронно по одному каналу MISO, c разными каналами SS, или же надо наоборот, так как, по идее, SlaveSelect можно же один использовать, если данные нужны с обоих одновременно?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Venanskui пишет:

Я читал про то, что его надо в LOW ставить

Нихера ты не читал, самому его в LOW ставить не надо, это делает за тебя библиотека. 

Venanskui
Offline
Зарегистрирован: 10.07.2021

Я знаю, что делает сама библиотека, я же и говорю, что еще пробовал вручную, для двоих по очереди, думал так можно.

rkit
Offline
Зарегистрирован: 23.11.2016

Они и так трехосевые. Если ты собрался больше одного в устройстве использовать, то 99 ты что-то делаешь не так.

Venanskui
Offline
Зарегистрирован: 10.07.2021

Через библиотеку это делается с помощью begin(номер пина), я писал две таких команды с разными переменными для каждого акселя (указано в коде), я думаю, я просто неправильно обращаюсь к акселерометру, так как при двух функциях begin, прога использует только последнюю.

Venanskui
Offline
Зарегистрирован: 10.07.2021

Два акселерометра необходимы для измерения разности фаз при их ускорении.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Хорошо.  Где 

SPI.begin();

в твоём коде?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ты сначала попробуй с одного даччика чонить правильное прочитать, потом второй лепить будешь

Venanskui
Offline
Зарегистрирован: 10.07.2021

x1.begin(10)

x2.begin(9)

Взято из примера SimpleRead для ADXL362

rkit
Offline
Зарегистрирован: 23.11.2016

Venanskui пишет:

измерения разности фаз при их ускорении.

Что бы этот набор слов мог значить?

Venanskui
Offline
Зарегистрирован: 10.07.2021

С одного все хорошо, но вот с двумя не получается, сейчас еще как нибудь попробую.

Venanskui
Offline
Зарегистрирован: 10.07.2021

Ну типа два тела, между ними сила трения, если ускорение одновременно у двух тел, значит разность фаз 0, если одно тело относительно другого сместилось, то будет разность фаз, датчики на каждом теле.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Venanskui пишет:

#include <SPI.h>
#include <ADXL362.h>
...

Вы правда думаете, что кто-то будет это читать?

Может таки окажете нам милость, вставите код правильно?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Venanskui пишет:

x1.begin(10)

x2.begin(9)

Взято из примера SimpleRead для ADXL362

как ты думаешь, без инициализации самой шины SPI, на ней будет работать хоть одно устройство?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Venanskui пишет:

С одного все хорошо, но вот с двумя не получается, сейчас еще как нибудь попробую.

Вывсёврёти!!!

nik182
Offline
Зарегистрирован: 04.05.2015

Эх горе, горькое. Как же так. Объявляется х1 а в программе xl. Это так задумано? Как же компилируется то? А впрочем и digitalWrite отсутствует, хотя перед обращением для читаемого надо писать LOW а для не читаемого НIGH. И наоборот. 

Venanskui
Offline
Зарегистрирован: 10.07.2021

Фух, подключил, но значения кривоватые, думаю, далее с регистрами надо разбираться, как настраивать и т.д. Спасибо.