Статус пинов SPI?

pepelxl
Offline
Зарегистрирован: 22.12.2020

Как можно проверить уровень на пинах аппаратного SPI? UNO 328/P. Дело в том что ведомое устройство сообщает свою готовность принять данные по уровню на линиях. При использовании библиотеки SPI.h вызов digitalRead() не даёт результата. конструкция вида

SPI.end();
digitalRead(12);
SPI.begin();

не допустима, т.к. 

 SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE3));

при вызове SPI.end() линия clock становится на низкий уровень и если перед этим была посылка с последним битом в логической единице , то ведомый блок распознаёт стартовый бит.

Возможно как-то узнать состояние через регистры или отключить spi с сохранением логических уровней?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Самый дубовый способ - подключить параллельно SPI другие пины и с них читать.

__Alexander
Offline
Зарегистрирован: 24.10.2012

Перед выключением SPI включи на пине SCK подтяжку и следующей командой переведи пин на вход. Должно помочь.