Не подскажите, есть ли выход из положения - использую аппаратный SPI на Nano (SS - 5, CLK - 13, MOSI - 11). Пин MISO (12) не использую для SPI, но он нужен для другого дела, однако при подключенной библиотеки SPI.h и при команде digitalWrite(12, HIGH) на пине около 1.2В, а не 5В. Что можно сделать, кроме как переписать код под программный SPI? Заранее спасибо
Да, как нестранно, Вы, оказались правы, я думал, что виной всему библиотека SPI.h, но все оказалось банальнее. 12 пин у меня управляет маломощным мосфетом, через затворный резистор 100 Ом, а сам затвор притянут к массе через 10 кОм резистор, считалось что большой роли, как делитель напряжения он не сыграет, но гарантированно закроет мосфет при лог. "0". Но почему-то именно резистор 10 кОм просаживал напряжение с пина до 1.2 В С другими пинами подобного не замечалось, и с такими номиналами все прекрасно работало. Ведь ток через оба этих резистора меньше 1 мА, а ток затвора мосфета не более 50 мА. Почему же так? Выход: поменял резистор с 10 кОм до 1 МОм, напряжение повысилось почти до 5 В, мосфет стал открываться.
Библиотека переводит пин в режим INPUT а digitalWrite в этом случае подключает или отключает pullup резистор. Вот и получается делитель напряжения на встроенном pullup резисторе и внешнем резисторе.
Так вот в чем собака зарыта, а ведь правда, MISO используется для обратной связи от ведомого устройства к ведущему в режиме INPUT. Как то можно поправить это, и убрать 12 пин из библиотеки? Или можно оставить так, вроде тока хватает для открытия транзистора, даже через этот подтягивающий резистор, при этом на работоспособность самого пина, этот момент практически не влияет?