С утра экспериментировал и собственно вот какие результаты.
Если скетч простой, например
Код: Выделить всё
bool _kPin0 = 0;
void setup()
{
pinMode(10, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(14, OUTPUT);
}
void loop()
{
//Плата:1
digitalWrite (14, (((!(digitalRead (10)))) || ((!(digitalRead (12))))));
}
То пин 10 работает корректно, ток срабатывания 0,14мА как и на соседних пинах.
Если добавить в программу сдвиговый регистр, то активируется SPI
Код: Выделить всё
#include <SPI.h>
byte _74HC5951OB1 = 0;
byte _74HC5951TB = 0;
bool _74HC5951NS = 0;
bool _kPin0 = 0;
void setup()
{
pinMode(10, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(14, OUTPUT);
SPI.begin();
pinMode(10, OUTPUT);
pinMode(0, OUTPUT);
}
void loop()
{
//Плата:1
digitalWrite (14, (((!(digitalRead (10)))) || ((!(digitalRead (12))))));
_74HC5951NS = 0;
bitWrite(_74HC5951TB, 0, 0);
bitWrite(_74HC5951TB, 1, 0);
bitWrite(_74HC5951TB, 2, 0);
bitWrite(_74HC5951TB, 3, 0);
bitWrite(_74HC5951TB, 4, 0);
bitWrite(_74HC5951TB, 5, 0);
bitWrite(_74HC5951TB, 6, 0);
bitWrite(_74HC5951TB, 7, 0);
if(! (_74HC5951TB == _74HC5951OB1)){_74HC5951OB1 = _74HC5951TB; _74HC5951NS = 1;}
if (_74HC5951NS) {
digitalWrite(0, 0);
SPI.transfer(_74HC5951OB1);
digitalWrite(0, 1);}
}
начинаются чудеса, ток срабатывания становится 81 mA, на соседних пинах ток срабатывания остался 0,14мА
Проверялось это на двух Nano V3 от Robodyn, купленных с интервалом 1,5 месяца. Год назад у меня была такая же история с UNO от неизвестного китайца, то-же не срабатывало с включенным подтягивающим резистором на десятом пине, но тогда я разбираться не стал, т.к. все уже было смонтировано на станке и время поджимало, просто провод на соседний пин кинул.
Как-то вот так. Сегодня вечером попробую на оригинальной UNO от Амперки.
Еще добавлю. На первой Nano, после всех испытаний, 10 пин при включении подтягивающего стал вести себя иначе, как будто ему подают внешний сигнал минус и он все время включен. Может я его уже и подпалил.