Написание своей библиотеки, что не так?

а у тебя есть наработки, чтобы и SOFT SPI можно было использовать?

У меня нету. Посмотри в этой библиотеке, там как раз софтовый

void LedControl::spiTransfer(int addr, volatile byte opcode, volatile byte data) {
    //Create an array with the data to shift out
    int offset=addr*2;
    int maxbytes=maxDevices*2;

    for(int i=0;i<maxbytes;i++)
        spidata[i]=(byte)0;
    //put our device data into the array
    spidata[offset+1]=opcode;
    spidata[offset]=data;
    //enable the line 
    digitalWrite(SPI_CS,LOW);
    //Now shift out the data 
    for(int i=maxbytes;i>0;i--)
        shiftOut(SPI_MOSI,SPI_CLK,MSBFIRST,spidata[i-1]);
    //latch the data onto the display
    digitalWrite(SPI_CS,HIGH);
}    

щас спрошу дикую дичь, ссаными тряпками не кидаться…
Вот у нас есть объект SPI, библиотеке он требуется, а библиотек может быть белее чем одна, то-есть…КАЖДАЯ БИБЛИОТЕКА ЧТОБЫ НЕ БЫЛО КОНФЛИКТА должна использовать свой экземпляр этой библиотеки, со своими свойствами этого экземпляра…вот ни разу не вижу как это обеспечивается в моём поделии, что-то тут явно у меня косяк…
вопрос - как это правильно делается???

Я ничего не понял.
Объект - это экземпляр класса. Ни больше, ни меньше.

Речь наверное о возможности подключения, например нескольких дисплеев, библиотечным способом?

не только, вот у меня в скетче используется несколько устройств работающих по SPI, при этом SPI настраивается в разных режимах, библиотека должна обеспечивать каждое устройство своим экземпляром SPI я так понимаю, со своими настройками и каждое устройство должно обрабатываться своим экземпляром SPI

Если SPI железный и физически один, то он один на всех

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

Речь наверное идёт о переключении скоростей при переходе между потребителями?

Скорее всего по очереди идут :slight_smile:

Никому не должен, объект SPI - глобальный.

Чего им конфликтовать, если пин CS у каждого свой.
А дальше все в руках программиста

а остальные, одному экземпляру пины дата и синхронизации требую 4 мегагерца, другому 50 килогерц, и режимы разные от 0 до 2… а если экземпляр вызван через прерывание…

Ну так перенастраивать при подключении другого элемента и так каждый раз… А вот вас не смущает, что в библиотеках CS передёргивают при каждом байте, а по идее должны при переходе от уст-ва к устройству?

Остальные пины - общие

А это проблемы разработчика устройства ))

А время на обработку полученного устройству давать не нужно? ))

Думаю нет. Ведь не зря китайцы на одной из версий st7789 CS выкинули.

Конечно нет. Такого он сказать не мог. Это Леонид Ильич.

Это не политика, это история :slight_smile:
Ускорение, ускорение и ещё раз ускорение чтобы через 6 лет Союз кирдыкнулся. Это Горбачёв.

Через механизм транзакций, который поддерживает библиотека SPI. А вот если Ваши библиотеки его не используют, то сами себе злобные буратины.

Можно пример?