Подключение по последовательному SSI

Нет ответов
spurius
Offline
Зарегистрирован: 30.11.2016

Здравствуйте участники форума! 

Пытался я подключить абсолютный магнитный энкодер ЛИР-МА317Б (http://www.sensor.dp.ua/?catalog&dep=356)

к Arduino Due, по последовательному SSI и как результат всегда на выходых энкодера ноль. Все линии энкодера (DATA,CLOCK и инверсные) подключены к Arduino через резисторы 3,7КОм без подтяжек.

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

Прилагаю последий скетч, который не дает никакого результата. Заранее спасибо за помощь. 

#define CLK  40
#define CLK_inv  41
#define DATA  30
#define DATA_inv  31

byte HEnc [12];
byte HEnc_inv [12];
byte LEnc [12];
byte LEnc_inv [12];
int i;

void setup ()
{ 
  digitalWrite(CLK,LOW);
  digitalWrite(CLK_inv,LOW);
pinMode(DATA,INPUT);
pinMode(DATA_inv,INPUT);
pinMode(CLK,OUTPUT);
pinMode(CLK_inv,OUTPUT);
Serial.begin (9600);
}

void loop ()
{
  digitalWrite (CLK,HIGH);
  delayMicroseconds (10);
  digitalWrite (CLK,LOW);
  delayMicroseconds (10);
for(i=0;i<11;i++)
{
  digitalWrite(CLK,HIGH);
  delayMicroseconds(5);
  digitalWrite(CLK_inv,LOW);
  delayMicroseconds(5);
  HEnc [i] == digitalRead(DATA);
  HEnc_inv [i] == digitalRead(DATA_inv);
  digitalWrite(CLK,LOW);
  delayMicroseconds(5);
  digitalWrite(CLK_inv,HIGH);
  delayMicroseconds(5);
  LEnc [i] == digitalRead(DATA);
  LEnc_inv [i] == digitalRead(DATA_inv);
}
  digitalWrite (CLK,HIGH);
  delayMicroseconds (50);
for(i=0;i<11;i++)
{
  Serial.print ("HEnc= ");
  Serial.print (HEnc[i]);
  Serial.print ("  HEnc_inv= ");
  Serial.print (HEnc_inv[i]);
  Serial.print ("  LEnc= ");
  Serial.print (LEnc[i]);
  Serial.print ("  LEnc_inv= ");
  Serial.println (LEnc_inv[i]);
}
}