Совместная работа светодиодной матрицы на базе MAX7219 и сетевого модуля на базе W5500

Здравствуйте.
Столкнулась с такой проблемой:
Для работы со светодиодной матрицей базе MAX7219 использую библиотеки
Adafruit_GFX
Max72xxPanel

Спойлер
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
#include <Ethernet.h>
#include <avr/wdt.h>

const uint8_t pinCS = 7; 
const uint8_t numberOfHorizontalDisplays = 1;
const uint8_t numberOfVerticalDisplays = 4;

const uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
const uint8_t ip[] = { 192, 168, 0, 105 };
const uint8_t gateway[] = { 192, 168, 0, 1 };
const uint8_t subnet[] = { 255, 255, 255, 0 };
const uint8_t dns[] = { 192, 168, 0, 1 };
const uint8_t server[] = { 192, 168, 0, 25 };
const uint8_t port = 80;


Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
EthernetClient client;

void setup() {

}

void loop() {

}

Подключаем вывод CLK (MAX7219 ) к выводу 13 (Arduino), вывод CS подключаем к выводу 7, вывод DIN подключаем к выводу 11.
Так вот, в таком варианте запросы через интернет не работают, но стоит отключить 11 и 13 пины от MAX7219 (отключила оба пина), всё работает исправно.

Ну так, W550 использует SPI, и MAX7219. Надо , “делить” шину, избегать конфликта.

Когда работает W5500 нужно отключать ножку CS MAX7219 ?

Какой длины провода до MAX7219 ? Возможно провода до MAX7219 слишком длинные. Для проверки, попробуйте сделать их короткими.

А если поменять в скетче порядок подключения и инициализации модуля сети и матрицы, что-то изменится?

попробуйте использовать 2 пина cs,(каждый для своего модуля) а не один как минимум…

Если говорить про шину SPI то да, конечно. Одновременно два устройства работать не могут. Выбор устройстаа делается притягиванием к земле пина CS.(Т.е два устройства - два CS, у мастера (MK) пины называются SS).

Но CS он только у MAX7221, у 7219 он называется LOAD, и, возможно(сам не пробовал 7219/21 с другими устр-вами на шине юзать), ничего не выйдет.
В таком случае, пробуйте или физически переключать пины(мультиплексор), или использовать программный SPI, или UART перенастроить как SPI, но тогда шить программатором придётся))

Или вообще другую библиотеку ))

Так было бы неплохо. Но ведь физически устр-ва всё равно на SPI висят?
P.S.

Если данные на матрице требуют частого обновления, её на одну шину с Ethernet лучше не вешать .

Например, не увидел, чтобы в Max72xxPanel использовалась связка SPI.beginTransaction() и SPI.endTransaction() (тынц). Значит пофигу библиотеке на другие устройства на этой шине ))

Вообще не ясно как LOAD(7219) работает. Переводит ли другие пины SPI в высокоомное состояние? Может нет физ. возможности с другими устройствами работать…
На практике ,запустить простой пример, проверить

https://github.com/markruys/arduino-Max72xxPanel/blob/main/Max72xxPanel.cpp

void Max72xxPanel::spiTransfer(byte opcode, byte data) {
	// If opcode > OP_DIGIT7, send the opcode and data to all displays.
	// If opcode <= OP_DIGIT7, display the column with data in our buffer for all displays.
	// We do not support (nor need) to use the OP_NOOP opcode.

	// Enable the line
	digitalWrite(SPI_CS, LOW);

	// Now shift out the data, two bytes per display. The first byte is the opcode,
	// the second byte the data.
	byte end = opcode - OP_DIGIT0;
	byte start = bitmapSize + end;
	do {
		start -= 8;
		SPI.transfer(opcode);
		SPI.transfer(opcode <= OP_DIGIT7 ? bitmap[start] : data);
	}
	while ( start > end );

	// Latch the data onto the display(s)
	digitalWrite(SPI_CS, HIGH);
}

строки 7 и 21

Я сразу честно признался))

void Max72xxPanel::spiTransfer(byte opcode, byte data) 

Может это только про 7221?
Непонятно, почему разное название и описание пинов в даташите
Пробовали одновременно 7219 с другим устр-вом?

Без разницы. Даташит один

Честно говоря, тоже нет, не доводилось )) Но принцип один для всех - пин CS для каждого устройства свой

Но описание -то разное
Screenshot_304 - копия

Ладно, и так достаточно уже написали, ТС осталось лишь попробовать на практике))

ааааа подстава))) почему сообщение сохранилось ?))) я написал код за бесплатно…

но работает-то одинаково - прижали к GND, принимает, отжали - успокоилось ))

Перечитал, вижу, может быть не совсем понятно

Если вопрос был про физическое отключение - то нет.
Физически на шину SPI могут влиять как раз оставшиеся две ноги.
Если бы был вопрос про MAX7221, то я бы ответил однозначно - достаточно перевести CS в высокий лог.уровень, и остальные пины сами отключатся. Но по 7219 точно не знаю, сработает ли это.
В любом случае, работу W550 и MAX7219, по SPI в программе , надо разделять во времени.

Первая часть верно, а про программатор перегнул, всё будет работать, извините.

10 для W5500
7 для MAX7219

Нашла

#include <GyverMAX7219.h>
#include <RunningGFX.h>

MAX7219< 4, 1, 7, 5, 6 > mtrx;