Подключение по последовательному SSI
- Войдите на сайт для отправки комментариев
Ср, 30/11/2016 - 10:07
Здравствуйте участники форума!
Пытался я подключить абсолютный магнитный энкодер ЛИР-МА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]);
}
}