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

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

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

Сообщение Ingwar »

Занимаюсь самообразованием по принципу "кол-во переходящее в качество" :crazy:
Языковой барьер серьезно этому препятствует :smile113: , но я стараюсь (на клавишах C и V светлеют буквы).
Последние "подопытные" - atmega4808 в связке с ADS1271. Худо-бедно разобрался, получил CLK для ацп через CCL атмеги и данные считываю по подсмотренному у Sancho способом.
[scroll]#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 );
}

}[/scroll]
Пробовал сначала дня 3 задать CLK через таймеры (перевел и распечатал туеву кучу страниц, но видно мало еще количество до качества), максимум получал 64кГц (хотя тот же пример залитый через студию давал 300+).
Вопрос в следующем - можно ли сконфигурировать SPI для получения алгоритма, где камнем читаем за раз 24 бита (или быстро по 8 потом клеим) по внешнему сигналу готовности от ацп (DRDY), при этом формируя SCLK камнем? Или нужно по прерыванию от ацп на какой ни будь ноге, запускать SPI как мастера с ногой SS "в воздухе" ?
[spoiler]
Безымянный1.jpg
[/spoiler]
[spoiler]
Безымянный.jpg
[/spoiler]
Спрашиваю по причине временного "морального истощения" в процессе самообучения... Для следующего рывка, нужно подкопить энтузиазма :smile44:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Ingwar писал(а): 05 ноя 2020, 14:22 Вопрос в следующем - можно ли сконфигурировать SPI для получения алгоритма, где камнем читаем за раз 24 бита (или быстро по 8 потом клеим) по внешнему сигналу готовности от ацп (DRDY), при этом формируя SCLK камнем? Или нужно по прерыванию от ацп на какой ни будь ноге, запускать SPI как мастера с ногой SS "в воздухе" ?
Игорь - по моему, это одно и тоже.
где камнем читаем за раз 24 бита (или быстро по 8 потом клеим) по внешнему сигналу готовности от ацп (DRDY)
этот сигнал нужно принять - нужна нога.
А будет она по прерыванию или без - дело другое.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

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

Сообщение Ingwar »

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

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

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость