Arduino SPI slave, прием 2-х байтов

sirajud
Offline
Зарегистрирован: 06.07.2016

Хочу соединить две ардуины по SPI, мастер должен передавать слейву значение 1000-4000.

С программой мастера понятно, как организовать SPI слейв?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Ну через прерывание. Вывод CLK мастера на прерывание славе . Вот для скорости надо писать на ассемблере. Но если через shiftOut, то можно и на Си, но скоростя будут медленные.

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

sirajud пишет:

как организовать SPI слейв?

Вот так.

sirajud
Offline
Зарегистрирован: 06.07.2016
Нашел похожий пример на гитхабе, но корректно принимается только байт(т.е если передавать от 0-255). Как сохранить в массив число занимающее 2 байта?

#include <AccelStepper.h>
#include <SPI.h>

int buf [2];
volatile byte pos;
volatile bool process_it;
AccelStepper stepperr(1,8,9); // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
int spMotor1;
void setup()
{
  Serial.begin(9600); // устанавливаем последовательное соединение
stepperr.setMaxSpeed(10000);
   SPCR |= bit (SPE);

    pinMode (MISO, OUTPUT);

  // get ready for an interrupt
  pos = 0;   // buffer empty
  process_it = false;

  // now turn on interrupts
  SPI.attachInterrupt();
}
ISR (SPI_STC_vect)
{
byte c = SPDR;  // grab byte from SPI Data Register

  // add to buffer if room
  if (pos < sizeof buf)
    {
    buf [pos++] = c;

    // example: newline means time to process buffer
    if (c == '\n')
      process_it = true;

    }  // end of room available
}

void loop()

{
if (process_it)
    {
    buf [pos] = 0;
//    Serial.println (buf);
    pos = 0;
    process_it = false;
    }  // end of flag set

stepperr.setSpeed(spMotor1);
Serial.println(buf[0]);
stepperr.runSpeed();
}
wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sirajud пишет:

...Как сохранить в массив число занимающее 2 байта?

Вот! Вот это настоящий вопрос. А вам слабо? ;) ;) ;)

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

wdrakula пишет:

sirajud пишет:

...Как сохранить в массив число занимающее 2 байта?

Вот! Вот это настоящий вопрос. А вам слабо? ;) ;) ;)

Числа это очень странный предмет. Вот они есть, а потом сразу их нет.

sirajud
Offline
Зарегистрирован: 06.07.2016

Ждем кролика...

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

Ну, это смотря какой массив и какие байты. Математика, она ж тоже ... того. Вот, почитайте помолясь, глядишь и поможет.

sirajud
Offline
Зарегистрирован: 06.07.2016

Еще один петросян..

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ЕвгенийП пишет:

Ну, это смотря какой массив и какие байты. Математика, она ж тоже ... того. Вот, почитайте помолясь, глядишь и поможет.

Женя! Я полистал это. Ураган! Где Вы это взяли? Это чистейший адов адище! Понятно, что автор шизофреник либо очень талантливый тролль-психиатр, но как круто!

Там же действительно ни в одном предложении невозможно проследить нить логики. Мозг просто "проскальзывает".

Супер! В мемориз однозначно!

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sirajud пишет:

Еще один петросян..

Дорогой! Если Вы продолжите настаивать, что Вам объяснили, как из двух байт сделать одно целое, то пойдете отсюда нахер, учить школьную арифметику... лучше по более классическому учебнику.

sirajud
Offline
Зарегистрирован: 06.07.2016

Я тебе не дорогой.

Если не можешь помочь иди нах..й и своих долбо..в зверей с собой забери.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sirajud пишет:

Я тебе не дорогой.

Если не можешь помочь иди нах..й и своих долбо..в зверей с собой забери.

Ну наконец!

Ты, родное сердце, папке своему советы давай, если тебя мама с ним познакомила, а не незнакомым людям. ОК?

sirajud
Offline
Зарегистрирован: 06.07.2016

Это не совет, это я тебя нах..й посылаю. Или ты читать не умеешь?

Если ты не можешь помочь не надо всякую чушь писать.

bwn
Offline
Зарегистрирован: 25.08.2014

Маладца, почти всех кто помогает, на хер послать сумел. Зачот.

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

Ну, раз пошла такая пьянка, поделюсь ссылкой на готовое решение. Другого тут и придумать сложно.

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

wdrakula пишет:

Ураган! Где Вы это взяли? 

Знакомый показал. Кстати, очень серьёзный математик (логик). Прислал линку с ехидным смайликом.

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

вв