Связь ардуинок по SPI

harbor
Offline
Зарегистрирован: 31.05.2016

Просьба помочь с составлением кода..

в рамках эксперимента требуется передать данные с одной ардуины на другую.

при этом 1я ардуина использует Modbus  RTU как мастер для считывания пары регистров с устройства по rs485

вторую ардуину надо сделать Modbus слейвом.  

Возможно ли связать ардуины по SPI ? как будет инициализироваться и использоваться при этом буфер сериал порта ?

Можно ли дать кусок кода для передачи одной переменной по SPI (для первого теста буду использовать передачу дискрета с одного из входов)

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

harbor пишет:

Возможно ли связать ардуины по SPI ? 

Возможно

harbor пишет:

как будет инициализироваться и использоваться при этом буфер сериал порта ?

От яндека отлучили?

harbor пишет:

Можно ли дать кусок кода для передачи одной переменной по SPI

Дайте Ваш вариант - обсудим.

harbor
Offline
Зарегистрирован: 31.05.2016

ну ладно скопипастим и поправим пример дяди Жени вахтера )

для мастера:

#include <SPI.h>
#include <Printing.h>


const int buttonPin = 2;
int buttonState = 0; 

void setup(void) {
	Serial.begin(9600);
	Serial.println("I am master!");
	pinMode(SS, OUTPUT);
	digitalWrite(SS, HIGH);
	SPI.begin();
	delay(50); // Дадим слейву время проинициализироваться 

  
     
        pinMode( buttonPin, INPUT);   
}

    
 
void loop(){
  // считываем значения с входа кнопки
  buttonState = digitalRead(buttonPin);
 
  // проверяем нажата ли кнопка
  // если нажата, то buttonState будет HIGH:
  if (buttonState == HIGH) {   
 

        SPI.beginTransaction(SPISettings());
	digitalWrite(SS, LOW);
	SPI.transfer(buttonState);
	delay(1); // пусть там слейв свои дела сделает
	digitalWrite(SS, HIGH);
	SPI.endTransaction();

	delay(100);	// Перекур
}

если чтото не так поправьте

дальше надо будет прикрутить модбас и вместо батонстейт прикрутить переменную после опроса модбас

но это уже завтра

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

Что бы отправить по SPI модбасовский фрейм его надо или иметь или сделать. SPI и буфер сериал порта не взаимодействуют ни как. Они не знают о существовании друг друга. Только програмист может взять информацию из сериал порта и отправить её по SPI. Для этого надо написать программу. В ней отдельно должно быть написано общение по модбасу и получения данных, потом эти данные нужно передать по SPI. В приведённой программе 1 раз в милисекунду посылается состояние кнопки. Про модбас нет ни строчки. 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

harbor пишет:

ну ладно скопипастим и поправим пример дяди Жени вахтера )

Братан, ты берега потерял, здесь помогают тем, кто сам делает. Если сам делать не можешь или не хочешь, топай в коммерческий раздел и заказывай.

harbor
Offline
Зарегистрирован: 31.05.2016

nik182 пишет:

Что бы отправить по SPI модбасовский фрейм его надо или иметь или сделать. SPI и буфер сериал порта не взаимодействуют ни как. Они не знают о существовании друг друга. Только програмист может взять информацию из сериал порта и отправить её по SPI. Для этого надо написать программу. В ней отдельно должно быть написано общение по модбасу и получения данных, потом эти данные нужно передать по SPI. В приведённой программе 1 раз в милисекунду посылается состояние кнопки. Про модбас нет ни строчки. 

скетч модбаса у меня есть давно реализованный, хотя что там реализовывать то.. три строчки кода :)

harbor
Offline
Зарегистрирован: 31.05.2016

с братанами иди общайся у себя на хате друк

здесь форум, я ничего не требую разрабатывать. если у кого-то есть готовый скетч нет никакой проблемы его скопипастить из блокнотика сюда. другие люди придут, посмотрят и не будут задавать лишние вопросы. сам также делаю. по spi мало инфы тут, хотя ничего сложного вроде. 

 

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

harbor пишет:

спо spi мало инфы тут, хотя ничего сложного вроде. 

 

по SPI инфы дофига. Хотя если ты ищешь "Модбас по SPI" - это да, инфы не много... может потому. что никому не приходит в голову модбас по СПИ пускать7

mixail844
Offline
Зарегистрирован: 30.04.2012

я тут подумал : у меня в одном проекте реализован сервер ModBus TCP , а TCP соединение реализовано на w5500 , который соединен к микроконтроллеру по SPI , можно ли это считать Modbus SPI ? :D

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Ты так ничего и не понял, "друк".

Повторяю медленно для альтернативно одарённых: здесь помогают тем, кто сам делает.

Или ты выкладываешь свой скетч в котором ту уже сделал всё, что нужно, но что-то идёт не так и объясняешь, что именно идёт не так, или идёшь в раздел "Ищу исполнителя". Ну, или можно ещё @@@@@ сходить, если тебе там больше нравится.

А своё милостивое одолжение:

harbor пишет:

ну ладно скопипастим 

засунь себе в ..., ну, ты знаешь куда.