Здравствуйте.
Не могу подружить Arduino Mega и RFID RC522.
Модуль и скетч заведомо рабочие (при подключении к Arduino Uno работают отлично).
Схема подключения:
RST - pin 5
MISO - pin 50
MOSI - pin 51
SCK - pin 52
SDA (у меня он обозначен как NSS) - pin 53
Подношу карту к модулю никакой реакции.
На UNO при подключении по схеме
RST - pin 9
MISO - pin 12
MOSI - pin 11
SCK - pin 13
SDA (у меня он обозначен как NSS) - pin 10
все отлично работает.
Пробовал на Mege порты как на UNO - не помогает.
Подскажите, пожалуйста, может есть какие-то особенности работы SPI и RFID на Mege.
а в библиотеке Мега как подключается?
#include <SPI.h>
#include <MFRC522.h>
Возможно я неправильно понял вопрос?
в ядре распиновка такая, должно работать
||PB|, // PB 3 ** 50 ** SPI_MISO
||PB|, // PB 2 ** 51 ** SPI_MOSI
||PB|, // PB 1 ** 52 ** SPI_SCK
||PB|, // PB 0 ** 53 ** SPI_SS
Удалось победить только перекинув RST, MISO, MOSI и SCK с 5, 50, 51 и 52 пина на соответствующие пины на разъеме ICSP.
SDA (SS) осталось на пине 53 и все работает.
На Arduine UNO все работает по пинам из описания шины SPI.
Может быть кто-то подскажет в чем глюк?
Библиотека SPI не понимает что у меня плата Mega?
Или это какая-то особенность плат Mega 2560?
Кстати аналогичная проблема у меня с Mega с библиотекой SoftwareSerial. Модуль SIM800 отказывается работать с ней но отлично работает через Serial1.
При всей кажущейся аналогии проблемы совершенно разные. В случае SoftwareSerial все объясняется просто - на Меге СофтСериал фактически не работает. Он лишь обертка для обычного Сериал и запускается только на “хардовых” пинах, так что и смысла его применять нет. Об этом, кстати, написано в документации.
В случае с SPI все должно работать и на Уно и на Мега
ну так понятно, что не в те пины втыкал, если интересно прозванивай с разъема ICP на гребенку, ищи где они там
не поленился, посмотрел у себя на плате, всё звонится по фэншую
Удивился, пошел искать в документации. Посмотрел на arduino.cc не нашел. Можете дать ссылку на документацию, где это написано?
Вы правы, ошибся. “С прямым углом перепутал” - то бишь с СТМ32. На ней софтсериал всего лишь эмуляция, реализованная через хардовый порт, и работает только на UART пинах.
У Меги можно использовать не только пины UART, но и некоторые другие, правда не все. Наверно поэтому у ТС и не работало.
Выписка из доков:
Not all pins on the Mega and Mega 2560 boards support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). Not all pins on the Leonardo and Micro boards support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
SoftSerial работает через PCINT. На 328 PCINT есть на всех ногах, а на 2560 - лишь на некоторых.
Да и смысла в SoftSerial на 2560 не слишком много.
Тоже не поленился. Прозвонил все пины на плате.
Пинов MOSI и RST нигде нет, кроме как на разъеме ICSP.
Два остальных пина MISO и SCK звонятся на положенных местах - 50 и 52.
Видимо такая бракованная реализация платы попалась.
пропаяй 51 пин на разъёме, может сопля