Нет.
Экземпляров класса не может быть больше, чем контроллеров SPI. Собственно, экземпляр класса, это именно контроллер, а не подключенное устройство.
Соответственно, при работе с разными устройствами следует перестраивать режим контроллера.
Рискованное занятие. Я такого себе не позволяю. Но, если очень нужно, можно разрулить сами прерывания.
А вообще, принято выбирать контроллер, исходя из задачи. МК с двумя контроллерами SPI - не редкость.
Блин, ну этот случай прямо описан в библиотеке SPI. Вы, что не читали её?
// If SPI is used from within an interrupt, this function registers
// that interrupt with the SPI library, so beginTransaction() can
// prevent conflicts. The input interruptNumber is the number used
// with attachInterrupt. If SPI is used from a different interrupt
// (eg, a timer), interruptNumber should be 255.
Прекратите самодеятельность! Я же Вам ещё утром сказал - есть транзакции и правильно делать именно через них! Вот и делайте!
я так и делаю, надеюсь )))
PS я жеж неграмотный, свистеть на ихнем, даже бегло, это всегда пожалуйста, но читать, я же грамоте не обучен )))
PPS прочитал через переводчик, круто, ну я так и использую…
PPPS помню дракула для работы с таймерами посоветовал костыль в ядре прописать, а тут всё по человечески
void MCP4xxxx::writeValue(const int& value) {
SPI.beginTransaction(SPISettings(speedW, MSBFIRST, spimode));
digitalWrite(CSpin, LOW);
MSb = 0x11; // 0b00010001 ; where x = 0, command bits for write
LSb = value & 0xFF; // No value greater than 255 ; send 0x0 otherwise
uint16_t transmission = MSb << 8 | LSb;
SPI.transfer16(transmission);
digitalWrite(CSpin, HIGH); // Disable chip select
SPI.endTransaction();
}