ethernet shield w5100 программно отключить 4 пин

zztop1967
Offline
Зарегистрирован: 02.01.2017

Добрый день. Собственно не совсем понятно вопрос аппаратный или программный. Создал тему тут, наверное все таки больше программный...

Arduino UNO

ethernet shield w5100 использует 4й цифровой пин для работы с флешкой. Мне этот функционал ненужен зато очень нужен 4й пин для своих нужд.  Можно ли используя штатную библиотеку из поставки Arduino IDE в своем скетче заставить освободить этот порт? 

Может придется изменять библиотеку? Или это реализовано аппаратно и придется кромсать дорожки?

b707
Offline
Зарегистрирован: 26.05.2017

Не понятно. чем тут может помочь библиотека. Отсоедините 4 пин шилда от 4-пина ардуины и все.

zztop1967
Offline
Зарегистрирован: 02.01.2017

Это очевидное решение. И,казалось бы, самое простое. Но у меня бутерброд из трех плат. UNO + Ethernet + sensor  и эта нога удобно используется для подключения через sensor шилд. А так придется гнуть ногу на ethernet шилде и тянуть провод вниз. Само собой, если программно нельзя - буду делать так. А вдруг это можно легко, какой нибудь опцией реализовать? В этом то и суть вопроса.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Ну, а SD вам нужен? Если нет, то пин свободен. Или шилд его держит?

zztop1967
Offline
Зарегистрирован: 02.01.2017

В том то и дело, что шилд его держит. Подключаю к этому пину датчик DHT22. Компиляция проходит без ошибок. Но при попытке считать данные - данные считать не удается.

Дело в том, что мне нужно как можно больше цифровых входов под свои нужды. 10-13 - использует eshernet. 4 - управление флешкой. 0,1 - Если я правильно понял для UART. Если на них повесить что то свое, то нельзя будет на лету перепрошивать ардуинку не разобрав шилд. По крайней мере у меня не шилось.

Вот и хотелось бы изящьно решить вопрос :)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

ну, если шилд держит аппаратно, то и отключать придется аппаратно. Подождите, может придут люди, которые бились с таким шилдом, но мне кажется, что придется резать, не дожидаясь перитонита.

b707
Offline
Зарегистрирован: 26.05.2017

zztop1967 пишет:

Это очевидное решение. И,казалось бы, самое простое. Но у меня бутерброд из трех плат. UNO + Ethernet + sensor  и эта нога удобно используется для подключения через sensor шилд. А так придется гнуть ногу на ethernet шилде и тянуть провод вниз.

ничего страшного не вижу в этом. Я вообще противник шилдов и все подключаю проводами

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

IMHO сам по себе Ethernet Shield 4-ю ногу использовать не должен: для него это вход. При подключении библиотеки Ethernet тоже, вроде бы, хватать не должен. Если библиотека SD не подключена.

Проверьте, можно ли общаться с DHT22, если шилд физически не подключен. Если нельзя - проблема не в шилде. Если можно - попытайтесь в setup установить пин в состояние выхода. 

Впрочем, возможно, в шилде на входе стоит что-то вроде резисторного делителя, который мешает работать датчику с высокоомным выходом (это исключительно из области предположений). В таком случае, пожалуй, наилучшим вариантом будет разрезать на плате шилда проводник, идущий к 4-му пину. Тогда он физически будет отсоедине от схем шилда, но будет передавать сигнал "юутербродом" на следующий шилд.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Нужно ковырять библиотеку. Просто замените там этот пин на другой. Только вот эзернет пострадает :)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Ethernet.h сидит на стандартном SPI-шном CS - D10. Так что не пострадает. Но и смысла ковырять библиотеку тоже нет никакого. 

zztop1967
Offline
Зарегистрирован: 02.01.2017

Проверял, без шилда тестовый скетч DHTtester с этим пином работает, с шилдом - нет. 

Дальнейшие исследования показали:

1. С подключеным шилдом сопротивление между землёй и 4 пином ~ 1,5 к, без ~ 2к

2. При залитом скетче напряжение на этой ноге 0,37В, без 4,6В 

3. Если в тестовом шилде прописать другой пин, то на 4м пине 0В

Возможно при подаче питания на шилд его мозги по умолчанию тянут ногу к земле. Но неизвестно можно ли этим как то управлять программно. В смысле сказать шилду, что бы он оставил этот пин в покое. Возможно шилд сам, без библиотеки, переводит этот пин в режим выхода. Ведь, по сути, это же управление. Как Вы считаете, может такое быть? Где то видел ссылку на схему шилда, поищу и гляну что там вообще наворочено.

 

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

zztop1967 пишет:

Возможно шилд сам, без библиотеки, переводит этот пин в режим выхода.

Интересно, как Вы представляете себе механизм этого действия.

Цитата:

Где то видел ссылку на схему шилда, поищу и гляну что там вообще наворочено.

Лучше всего гачать именно с этого.

andryn
Offline
Зарегистрирован: 08.06.2018

Судя по этому описанию: https://www.arduino.cc/en/Reference/Ethernet

И этой схеме: https://static5.arrow.com/pdfs/2015/8/31/8/48/14/322/arduin_/manual/a000056_fig.1_2.jpg

4-й пин используется для включения SD карты, и он подключен к верху резисторного делителя из 1K и 2.2К. См. SD_CS.

Поведение вполне объяснимо.