SPI в нестандартном применении

Применительно к ADS1271

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

SPI в нестандартном применении

#1

Сообщение Ingwar » 05.11.2020{, 14:22}

Занимаюсь самообразованием по принципу "кол-во переходящее в качество" :crazy:
Языковой барьер серьезно этому препятствует :smile113: , но я стараюсь (на клавишах C и V светлеют буквы).
Последние "подопытные" - atmega4808 в связке с ADS1271. Худо-бедно разобрался, получил CLK для ацп через CCL атмеги и данные считываю по подсмотренному у Sancho способом.
#include <Logic.h>
long out_ads;
long _stou1;
void setup()
{
Serial1.begin(115200, SERIAL_8N1);
Logic0.enable = true; // Включить логический блок 0
Logic0.input0 = in::input_pullup; // Установить PA0 как вход с подтягиванием
Logic0.input1 = in::input_pullup; //
Logic0.output = out::enable; // Выходной контакт логического блока 0 (PA3)
Logic0.truth = 0x01; // Установить таблицу истинности
Logic0.filter = filter::synchronizer; // Включить фильтр на выходе блока 0 (fclok / 2)
Logic0.init(); // Инициализировать логический блок 0
Logic::start(); // Запустить оборудование логики AVR
pinMode(4, OUTPUT); //SCLK
pinMode(5, INPUT); //DATA
pinMode(6, INPUT); //DRDY
attachInterrupt (6 , SCLK_ADS1271, FALLING);
}
void loop()
{
//Плата:1
if (1)
{
if(!((out_ads)==(_stou1)))
{
Serial1.println(out_ads);
}
}
_stou1 = out_ads;
}
void SCLK_ADS1271()
{
out_ads = 0L;

for(int i = 23; i >= 0; i--)
{
digitalWriteFast(4, 1);
out_ads |= (digitalReadFast(5) ? (1<<i) : 0);
digitalWriteFast(4, 0);
// delayMicroseconds( 1 );
}

}
Пробовал сначала дня 3 задать CLK через таймеры (перевел и распечатал туеву кучу страниц, но видно мало еще количество до качества), максимум получал 64кГц (хотя тот же пример залитый через студию давал 300+).
Вопрос в следующем - можно ли сконфигурировать SPI для получения алгоритма, где камнем читаем за раз 24 бита (или быстро по 8 потом клеим) по внешнему сигналу готовности от ацп (DRDY), при этом формируя SCLK камнем? Или нужно по прерыванию от ацп на какой ни будь ноге, запускать SPI как мастера с ногой SS "в воздухе" ?
СпойлерПоказать
Безымянный1.jpg
СпойлерПоказать
Безымянный.jpg
Спрашиваю по причине временного "морального истощения" в процессе самообучения... Для следующего рывка, нужно подкопить энтузиазма :smile44:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

SPI в нестандартном применении

#2

Сообщение Sancho » 05.11.2020{, 16:00}

Ingwar писал(а):
05.11.2020{, 14:22}
Вопрос в следующем - можно ли сконфигурировать SPI для получения алгоритма, где камнем читаем за раз 24 бита (или быстро по 8 потом клеим) по внешнему сигналу готовности от ацп (DRDY), при этом формируя SCLK камнем? Или нужно по прерыванию от ацп на какой ни будь ноге, запускать SPI как мастера с ногой SS "в воздухе" ?
Игорь - по моему, это одно и тоже.
где камнем читаем за раз 24 бита (или быстро по 8 потом клеим) по внешнему сигналу готовности от ацп (DRDY)
этот сигнал нужно принять - нужна нога.
А будет она по прерыванию или без - дело другое.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

SPI в нестандартном применении

#3

Сообщение Ingwar » 05.11.2020{, 16:07}

Я к тому, что в режиме слейва не получится управлять SCLK?

Отправлено спустя 6 минут 15 секунд:
Я каюсь, только пару часов листал про SPI. И в общем понял, что режим мастер/слейв можно задать через SS. Но в режиме слейв такты задаёт мастер. Я про то, что хотел сигнал от АЦП (готовность) завести на SS.

Отправлено спустя 9 часов 29 минут 26 секунд:
Усе, колхозно, но победил. Позже выложу блоки.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Ответить

Вернуться в «Спросить у знатоков»