Software SPI на MEGA не работает ?

Тема в разделе "Arduino & Shields", создана пользователем Angels-group, 4 мар 2016.

  1. Angels-group

    Angels-group Нерд

    Суть проблемы - есть дисплейчик со слотом для SD карты.
    Пины у него под Arduino Uno. Т.е. пины SPI попадают на 10-13
    Я его использую на Mega. Соответственно пины не попадают (у меги - 50-53).

    Если соединить шильд проводами по родным для меги разъемам - слот SD карты работает как положено (увидел даже SDHC на 32 гига).

    Далее, чтобы использовать шильд без проводов, в SD.h добавил
    Код (C++):
    #define SOFTWARE_SPI
    Судя по Sd2Card.h - это то, что мне нужно:

    Код (C++):
    #else  // SOFTWARE_SPI
    // define software SPI pins so Mega can use unmodified GPS Shield
    /** SPI chip select pin */
    uint8_t const SD_CHIP_SELECT_PIN = 10;
    /** SPI Master Out Slave In pin */
    uint8_t const SPI_MOSI_PIN = 11;
    /** SPI Master In Slave Out pin */
    uint8_t const SPI_MISO_PIN = 12;
    /** SPI Clock pin */
    uint8_t const SPI_SCK_PIN = 13;
    #endif  // SOFTWARE_SPI
    Пины поменялись (смотрю по логу), но уже простой пример CardInfo - не работает. В лог вываливается ошибка (или нету карты или не так соединил и т.д.). В чем магия ?
     
  2. AlexVS

    AlexVS Гик

    А вы не забыли указать строку инициализации для softSPI?
    Код (C++):
    SoftSPI<SOFT_SPI_MISO_PIN, SOFT_SPI_MOSI_PIN, SOFT_SPI_SCK_PIN, SPI_MODE> spi;
     
  3. Angels-group

    Angels-group Нерд

    Я так понимаю что надо использовать пакет DigitalIO с либой SOFTSPI ?

    Я рассчитывал без нее обойтись. Нашел просто комменты в Sd2Card.h о Software SPI именно для меги.

    Там же указано:
    указал
    Код (C++):
    #define MEGA_SOFT_SPI 1
    Теперь валится с кучей ошибок сборка:

    UPD FIXED:
    Надо закомментить #define USE_SPI_LIB в Sd2Card.h и Sd2Card.cpp
    Теперь все работает вроде. Работаю дальше.
     
    Последнее редактирование: 4 мар 2016
    AlexVS нравится это.