SPI_BUS

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09 апр 2016, 12:17
Откуда: Кременчуг
Имя: Сергей

SPI_BUS

Сообщение seri0shka »

Для расширения входов-выходов применяю сдвиговые регистры, до этого пользовался блоками Arisov77 с программным SPI, всё отлично работало. Сейчас осваиваю аппаратный SPI, попробовал блоки SPI_BUS_IN и SPI_BUS , их можно взять из пробного проекта здесь: [spoiler]http://forum.flprog.ru/download/file.php?id=3015[/spoiler]
Взято из форума http://forum.flprog.ru/viewtopic.php?p=12371#p12371
Теперь о проблеме. Блоки рассчитаны на отправку и получение байтовой переменной и работают отлично с одним регистром 74НС165 или 74НС595.
Как изменить блоки для работы с двумя регистрами, то есть отправлять и принимать нужно 16 бит.
Вот листинг блока SPI_BUS_IN для работы с входным регистром 74НС165 (8 входов, 8 бит):
[spoiler]#include <LineDriver.h>
#include <SPI.h>
#include <SPI_Bus.h>
SPI_Bus reg(_8bit, pin);
unsigned long time_=0;

reg.setSelectionPolicy(SPI_Bus::SELECT_BEFORE);

if (millis()>= time_)
{
time_ =millis()+ period_survey;
noInterrupts();
out = reg.read8bits();
interrupts();
}[/spoiler]
Тип переменной на int менял, и пробовал в блоке менять 8bit на 16bit, не прокатило. Дальше уже сутки копаю, безрезультатно!
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

SPI_BUS

Сообщение Sancho »

То есть вот так не работает?
Судя по библиотеке - должно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09 апр 2016, 12:17
Откуда: Кременчуг
Имя: Сергей

SPI_BUS

Сообщение seri0shka »

Сегодня уже не попробую. Но пока ждал ответа, методом научного тыка перепробовал много, получилось с таким вариантом блока:
[spoiler]#include <LineDriver.h>
#include <SPI.h>
#include <SPI_Bus.h>
SPI_Bus reg(_16bit, pin);
unsigned long time_=0;

reg.setSelectionPolicy(SPI_Bus::SELECT_BEFORE);

if (millis()>= time_)
{
time_ =millis()+ period_survey;
noInterrupts();
out = reg.read32bits();
interrupts();
}[/spoiler]
Возможно, неправильно. Но работает.
_____ Только сейчас заметил: Вы ж мне блок вывода прислали, а я пока с блоками ввода пробую, вывода на 16 бит у меня нет ещё.
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09 апр 2016, 12:17
Откуда: Кременчуг
Имя: Сергей

SPI_BUS

Сообщение seri0shka »

Проверил, SPI_BUS_16_v1_(CODE) не работает.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

SPI_BUS

Сообщение Sancho »

seri0shka писал(а): 04 фев 2018, 13:18Проверил, SPI_BUS_16_v1_(CODE) не работает.
Весёлая бибка....
Жаль, нет такого железа, для тестов.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

SPI_BUS

Сообщение Sancho »

[ref]seri0shka[/ref],
Попробуй "пролеченную" библиотеку, должно работать.
Всё должно работать(95%). Чтение 100%. Наверно.
И цитата из обсуждения библиотеки ( не здесь)
Добрый день. Подскажите, пожалуйста, почему нельзя использовать общую линию SS при подключении 74*595 и 74*165 регистров? Или все-таки можно?
Ответ
Продублирую ответ из лички, дабы остальные тоже могли просветиться:
Потому что 74HC165 всю малину портит тем, что использует SS не совсем по-SPIшному. В SPI принято выбирать устройство прижатием соответствующей ему линии SS к земле на время работы с ним, тогда как для 74HC165 нужно сначала дёрнуть SS вниз-вверх, а потом уже считывать данные.(в общем-то, учитывая исключительную простоту устройства шины SPI, можно сказать, что 74HC165 не поддерживает SPI, а просто имеет общие с ней принципы работы)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09 апр 2016, 12:17
Откуда: Кременчуг
Имя: Сергей

SPI_BUS

Сообщение seri0shka »

Спасибо, надо будет попробовать. Что интересно, несколько дней экспериментов показали проблемы с 74*595 , а не с 74*165.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

SPI_BUS

Сообщение Sancho »

О, уже появились "железные выходы"!
Есть вариант попробовать чистую SPI, для 165 придётся слегка подправлять, что скажешь? У меня нету такого железа...
Если да, тему перенесём в "Разработка пользовательских блоков " - чего-то должно получится!
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
MegaF
Рядовой
Сообщения: 87
Зарегистрирован: 05 сен 2018, 10:09
Имя: farad

SPI_BUS

Сообщение MegaF »

Sancho писал(а): 07 фев 2018, 10:39 О, уже появились "железные выходы"!
Есть вариант попробовать чистую SPI, для 165 придётся слегка подправлять, что скажешь? У меня нету такого железа...
Если да, тему перенесём в "Разработка пользовательских блоков " - чего-то должно получится!
интересная тема, есть железо ,хочу попробовать на аппаратном spi ,пробовал с блоком 165-595 по трем проводам, конфликтует зараза с лсд st7735.
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09 апр 2016, 12:17
Откуда: Кременчуг
Имя: Сергей

SPI_BUS

Сообщение seri0shka »

[ref]MegaF[/ref], в этой теме были? Эти блоки ни с чем конфликтовать не должны. Быстродействие только не очень.
viewtopic.php?f=10&t=885&start=60
MegaF
Рядовой
Сообщения: 87
Зарегистрирован: 05 сен 2018, 10:09
Имя: farad

SPI_BUS

Сообщение MegaF »

seri0shka писал(а): 24 июл 2019, 13:00 [ref]MegaF[/ref], в этой теме были? Эти блоки ни с чем конфликтовать не должны. Быстродействие только не очень.
viewtopic.php?f=10&t=885&start=60
пробовал , st7735 не хочет работать с этими блоками вместе .мне надо чисто 165 spi аппаратный.у меня st7735 и 595 по spi уже работают и занимают 4 пина .
работаю я с есп8266 и не хватает уже пинов для подключения и клавиатуры ,так и так 12 пин еспешки не работает как вход или выход.
почему бы не использовать miso для приема байта от 165 по spi.
MegaF
Рядовой
Сообщения: 87
Зарегистрирован: 05 сен 2018, 10:09
Имя: farad

SPI_BUS

Сообщение MegaF »

74HC165_(CODE).ubi
сделал блок на аппаратный spi .теперь не конфликтует с st7735/
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

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

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

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