SPI три Ардуино (3 arduino)
- Войдите на сайт для отправки комментариев
Доброго времени народ, подскажите вот по какой проблеме.
Сколько статей не читал, везде в целом одно и тоже, приведена схема подключения Мастер, Слейв, Слейв устройств. Я подключил все так же, как по схеме, Уно в роли мастера (11 МИСО, 12 МОСИ, 13 Такт, 10 СС к 1ому Слейву, 9 к 2ому Слэйву), В роли Слэйвов Нано1 (11 МИСО к 11 на УНО, 12 МОСИ к 12 на УНО, 13 Такт к 13 на УНО, 10 СС) и Нано2 (11 МИСО к 11 на УНО, 12 МОСИ к 12 на УНО, 13 Такт к 13 на УНО, 9 СС).
Чтобы сильноне плюхаться, решил сначала законнектить 2а Ардуино (УНО и НАНО1), передача и прием по 1ому байту в такт проходит (УНО отправляет 10000001, НАНО1 принимает 10000001, и в этот же такт НАНО1 отправляет 00000101, УНО принимает его и в сериал выводит как 101, я так понимаю что ведущие нули режутся, т.к. если к примеру ответ сделал 100000101, то выводит полностью).
Промежуточный результат 1 - работает.
Далее копирую скеч слэйва на НАНО2, с изменением СС пина, и ответом, отцепляю НАНО1, подцепляю НАНО2, получается связка УНО-НАНО2, в УНО ставлю делай(500) и копирую блок кода общения с НАНО1 ниже, с заменой выключения-включения СС пин 9 для НАНО2. Т.о. получается за 1н цикл лупа идет транзит с НАНО1 (отключен физически), делай(500), транзит с НАНО2 (включен), опять делай(500). Смотрю в сериал порт, все отлично, отправка в НАНО1 "100000001", получение "0", затем отправка в НАНО2 "10000001", получение "11111110" - как и положено.
Промежуточный результат 2 - работает.
Теперь подцепляю НАНО1 и НАНО 2, и тут пошли проблемы. УНО отправляет в НАНО1 и в НАНО2 как полежено с делаем в 500, а в ответ получает вообще что попало, ни 1н из ответов от СЛЭЙВОВ верно не приходит.
Причем если при работающем выдернуть МИСО от Любого из Слэйвов, ответ от подключенного идет корректный, как втыкаешь обратно - опять "мусор".
Прошу у более опытных ткнуть носом, где я напортачил? Может на каждое МИСО от слэйвов поставить диоды, не знаю поможет ли... Кто что думат? Заранее спасибо.ф
Можно диодами развязать, сопрот с анодов на + не забудь. В скорости потеряешь. Можно логический вентиль 2И воткнуть.
При поступлении высокого уровня на SS ногу любой из нан они сразу должны переводить МИСО в состояние вход. При поступлении низкого уровня сначала перевести на выход, затем уже что то передавать. Изначально тоже должен быть назначен как вход. Если аппаратный SPI ввести в слэйв моду, то МИСО автоматически меняет состояние в зависимости от состояния входа SS.
Попробую. Спасибо за совет.
При поступлении высокого уровня на SS ногу любой из нан они сразу должны переводить МИСО в состояние вход. При поступлении низкого уровня сначала перевести на выход, затем уже что то передавать. Изначально тоже должен быть назначен как вход. Если аппаратный SPI ввести в слэйв моду, то МИСО автоматически меняет состояние в зависимости от состояния входа SS.
Попробовал так + перекинул на НАНО2 СС с пин 9 на 10, все заработало как надо.
Спасибо.