Не работает SPI в Arduino ProMicro

Ответить
rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Не работает SPI в Arduino ProMicro

#1

Сообщение rusland57 » 15.01.2021{, 11:45}

К Arduino Pro Micro подключаю семисегментный индикатор. Для управления использую сдвиговый регистр 74HC595 и, соответственно, шину SPI. В FLProg для RCK выбираю 14-ый вывод. При выводе на индикатор каких-либо значений (например, секунд из RTC или счётчика) значение на индикаторе не меняется.
Сделал переходную плату для возможности подключения к схеме вместо Arduino Pro Micro контроллера Arduino Nano. С Arduino Nano всё работает отлично.
В чём может быть проблема?

ecoins
Полковник
Сообщения: 2930
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Не работает SPI в Arduino ProMicro

#2

Сообщение ecoins » 15.01.2021{, 13:04}

rusland57 писал(а):
15.01.2021{, 11:45}
В чём может быть проблема?
Там контроллер не atmega328, а atmega324u4.
Там есть существенные отличия - преодолимые, но надо заниматься.
Рекомендую использовать Arduino Pro или Arduino Pro mini.
Габариты маленькие, пины на 5в, дешевле и не будет проблем переноса с Nano.

rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Не работает SPI в Arduino ProMicro

#3

Сообщение rusland57 » 15.01.2021{, 13:47}

ecoins писал(а):
15.01.2021{, 13:04}
rusland57 писал(а):
15.01.2021{, 11:45}
В чём может быть проблема?
Там контроллер не atmega328, а atmega324u4.
Там есть существенные отличия - преодолимые, но надо заниматься.
Рекомендую использовать Arduino Pro или Arduino Pro mini.
Габариты маленькие, пины на 5в, дешевле и не будет проблем переноса с Nano.
Я сразу сделал несколько плат под ProMicro. Неожидал, что будут такие проблемы. Получается в FLProg эти отличия не учтены?
Ардуино ProMicro вроде самый маленький.
Если подскажите что сделать, буду благодарен.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Не работает SPI в Arduino ProMicro

#4

Сообщение Sancho » 15.01.2021{, 14:20}

rusland57 писал(а):
15.01.2021{, 13:47}
Если подскажите что сделать
Для начала Ваш проект - повторить и убедится.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

ecoins
Полковник
Сообщения: 2930
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Не работает SPI в Arduino ProMicro

#5

Сообщение ecoins » 15.01.2021{, 14:25}

rusland57 писал(а):
15.01.2021{, 13:47}
Ардуино ProMicro вроде самый маленький.
Вы уверены, что у Вас Micro? Такая, в размер Nano?
arduinomicrofront-380x171 (1).jpg
arduinomicrofront-380x171 (1).jpg (11.4 КБ) 967 просмотров
Такие не встречал, но есть Arduino Pro mini.
Посмотрите по ссылке.
http://arduino.ru/Hardware
----------
Если все же Micro, то может быть из-за того, что не соответсвующее подключение?

SPI: на разъеме ICSP. Данные выводы поддерживают связь по SPI с использованием библиотеки SPI. Обратите внимание, что выводы SPI не подключены ни к каким цифровым вход/выходам, как на Arduino Uno, они доступны только на соединителе ICSP и ближайших выводах, маркированных MISO, MOSI и SCK.
RX_LED/SS. Это дополнительный вывод по сравнению с Leonardo. Он подключен к RX_LED, который показывает активность передачи по шине USB, но также может использоваться как вывод выбора подчиненного устройства (SS) для связи по SPI.

rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Не работает SPI в Arduino ProMicro

#6

Сообщение rusland57 » 15.01.2021{, 20:01}

Sancho писал(а):
15.01.2021{, 14:20}
Для начала Ваш проект - повторить и убедится.
Проект рабочий, т.к. с Nano всё работает (чтобы Nano установить по месту на основную плату я распаял переходник и соединил соответствующие выводы).

Отправлено спустя 7 минут 58 секунд:
av писал(а):
15.01.2021{, 18:26}
rusland57, при использовании Arduino Pro Micro нужно выбирать Arduino Leonardo. Не знаю с чем это связанно но если выбирать про микро не вся переферия работала. В новой версии не проверял.

Отправлено спустя 2 минуты 49 секунд:
Кстати 14-й вывод про микро это пин MISO а не SCK.

Отправлено спустя 3 минуты 6 секунд:
При выборе контроллера есть информационные вкладки. Выберете "Выводы" и посмотрите на каких пинах у Arduino Pro Micro SPI.
При программировании выбираю именно Leonardo.
14-ый вывод да, но FLProg позволяет его выбрать для RCK.

У Arduino Pro Micro SPI на 14,15 и 16 выводах, но линия SS на 8-ом пине самого микроконтроллера, а на плате выхода нет, выход только на резистор светодиода RX. Пробовал подпаяться к этой линии, выпаяв резистор, но не помогло. Перед компиляцией в Arduino IDE я вручную исправляю пин 14, который прилетает из FLProg, на 8-ой.

rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Не работает SPI в Arduino ProMicro

#7

Сообщение rusland57 » 15.01.2021{, 23:02}

av писал(а):
15.01.2021{, 21:03}
rusland57 писал(а):
15.01.2021{, 20:12}
14-ый вывод да, но FLProg позволяет его выбрать для RCK.
Что значит позволяет.... Вы для чего используете SPI ? Если аппаратный SPI, то вы не можете изменить пины интерфейса, но вы их меняете вручную в IDE отсюда и проблемы. Пины аппаратного SPI задаются в библиотеке. Другое дело если это программный SPI тогда да можете поменять пины.
Chip74HC595Scheme1.png
Сейчас у меня реализована вот такая схема (схема взята из справки FLProg к расширителю выходов 74HC595) с той лишь разницей, что линия RCK микросхемы подключена не к 8-ому (как на схеме), а к 9-ому выходу Arduino Nano. В настройках 74HC595 в FLProg для линии RCK я выбирал 9-ый пин. И всё работает, не смотря на то, что линия RCK подключена не к линии SS (пин 10) платы.
Тоже самое должно было быть и с Arduino ProMicro. Выбрав 14-ый пин (или какой-то другой, а я пробовал разные варианты) для линии RCK, по логике, должно было всё заработать, но увы...
Где ошибка понять пока не могу.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Не работает SPI в Arduino ProMicro

#8

Сообщение Sancho » 16.01.2021{, 09:19}

av писал(а):
15.01.2021{, 23:57}
При выборе Леонардо проблем не возникало
Подтверждаю. Не забыть в IDE выбрать именно его.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Не работает SPI в Arduino ProMicro

#9

Сообщение rusland57 » 17.01.2021{, 17:33}

av писал(а):
15.01.2021{, 23:57}
rusland57, ошибка явно в выбранном микроконтроллере. В среде FLProg МК на чипе 32U4 очень редко используются, в особенности про микро. И в следствии чего есть вероятность не отслеженных багов и ошибок которые идут из предшествующих версий программы. Знаю одно точно, что на ардуино про микро интерфейсы работают не корректно если выбрать при создании проекта именно этот МК. При выборе Леонардо проблем не возникало.
Получается, что дело не в контроллере...
Попробовал помимо ProMicro и Nano подключить к схеме Arduino MEGA2560. SPI тоже не заработал. Т.е. с Nano (как 168, так и 328) работает, а с ProMicro и MEGA2560 - нет. Решил написать скетч не в FLProg, а в ArduinoIDE, но не используя библиотеку SPI.h. Вывод данных в SPI сделал по "shiftOut". Так вот как только отключаешь инициализацию библиотеки SPI.h (SPI.begin() ) - SPI работает.
Выходит дело не в контроллерах, а в самой библиотеке SPI? К сожалению я не программист и разобраться в самой библиотеке мне очень сложно, может кто что посоветует где какие параметры посмотреть и поменять?

ecoins
Полковник
Сообщения: 2930
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Не работает SPI в Arduino ProMicro

#10

Сообщение ecoins » 17.01.2021{, 18:09}

rusland57 писал(а):
17.01.2021{, 17:33}
Попробовал помимо ProMicro и Nano подключить к схеме Arduino MEGA2560. SPI тоже не заработал.
У Mega2560 пины SPI не совпадают с Nano и UNO.
----------
Много загадок, но нет ни электрической схемы того, чего не работает и скетча к нему.
Без этого помочь Вам сложно.

rusland57
Рядовой
Сообщения: 19
Зарегистрирован: 18.10.2017{, 20:18}
Репутация: 0

Не работает SPI в Arduino ProMicro

#11

Сообщение rusland57 » 17.01.2021{, 20:40}

ecoins писал(а):
17.01.2021{, 18:09}
rusland57 писал(а):
17.01.2021{, 17:33}
Попробовал помимо ProMicro и Nano подключить к схеме Arduino MEGA2560. SPI тоже не заработал.
У Mega2560 пины SPI не совпадают с Nano и UNO.
----------
Много загадок, но нет ни электрической схемы того, чего не работает и скетча к нему.
Без этого помочь Вам сложно.
Для каждого контроллера пины SPI меняю соответственно (как физически,так и программно).
Схему подключения сдвигового регистра к контроллеру привёл выше (меняю только пины, соответственно для каждого контроллера, и ещё один пин подключён к линии "OE" 74HC595 для включения/выключения). После 74HC595 стоит ULN2803, которая вместо светодиодов включает сегменты семисегментного индикатора и разделитель (точку), выполненных из светодиодной ленты напряжением питания 12В.

В прикрепленных файлах схема FLProg (файл PDF), скетч на основе FLProg (_ProMicro-не_работает), изменённый скетч без использования библиотеки SPI.h (_ProMicro-работает).
В FLProg выход "display_on" включает индикатор и привязан к 10-ому пину контроллера.
Вложения
_ProMicro-работает.ino
(4.6 КБ) 29 скачиваний
_ProMicro-не_работает.io.ino
(4.37 КБ) 32 скачивания
-ProMicro-.pdf
(25.74 КБ) 30 скачиваний

Ответить

Вернуться в «ATmega32u4,2560»