Программирование МК AVR. УРОК 33. Часть 2. SPI. Карта SD

Поделиться
HTML-код
  • Опубликовано: 10 сен 2024

Комментарии • 16

  • @user-vn1wz3vm4f
    @user-vn1wz3vm4f Месяц назад

    Спасибо!

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    Вчера я понадеялся на вас но добавил

  • @DrargonsM
    @DrargonsM 8 лет назад +4

    Интересный урок! нормуль!

  • @igor0242
    @igor0242 4 года назад +1

    у меня заработало только после добавления _delay_ms(6); в цикл ожидания функции SD_Init(void)
    экспериментальным путем я понял, что ответ ноль от карты МК получает только с третьего раза. задержка в 5мс уже не срабатывает. первые два обращения к карте завершаются ответом 1. и на третьем обращении карта выдает 0. КАРТУ СПЕЦИАЛЬНО КУПИЛ на Али размером в 32МБ. При использовании карты в 16 Гб и более - ответ всегда ЕДИНИЦА.

  • @raccoonoreo4254
    @raccoonoreo4254 8 лет назад +2

    Спасибо за ваши уроки.
    По поводу кода в функции unsigned char SD_init(void),
    не совсем понял зачем после "if(temp != 0x01) return 1;" нам нужна линия SPI_SendByte(0xFF); ?
    Спасибо.

    • @Pr0grammer04
      @Pr0grammer04 5 лет назад

      Тоже не понял этого. Более того, по даташиту на 18:20 ясно видно, что после CMD0 должна идти команда CMD8, а затем команда ACMD41. Вместо этого автор сразу после команды CMD0 отправляет команду CMD41. Как после этого у него хоть что-то работает мне абсолютно не понятно. У меня заработало только после того как сделал всё по даташиту.

    • @oxygen8680
      @oxygen8680 4 года назад

      @@Pr0grammer04 если не сложно, скинь код инициализации SD, а то что-то не врубаюсь

    • @Pr0grammer04
      @Pr0grammer04 4 года назад

      @@oxygen8680 Хотел отправить код инициализации и решил еще раз проверить его на реальной флешке. Не работает. Пол года назад на другой флешке работал, а куда я дел ту флешку уже и не помню. Другую флешку вставил - не работает.

  • @rul-p3t
    @rul-p3t 6 лет назад +1

    Спасибо большое!
    Есть вопрос: если карты нет - правильно работает: возвращает "1", а если карту вставить - выдает "2".
    Что у меня может быть не так?

    • @Pr0grammer04
      @Pr0grammer04 5 лет назад +1

      У меня то же самое. Определяет наличие карты по команде CMD0, а потом у автора идет команда CMD41, которая сразу после CMD0 не работает. По даташиту на 18:20 ясно видно, что после CMD0 должна идти команда CMD8, а затем команда ACMD41. Как у автора хоть что-то работает мне абсолютно не понятно. У меня заработало только после того как сделал всё по даташиту.

  • @Ivan-rc4it
    @Ivan-rc4it 5 лет назад

    Владимир меня интересует функция unsigned char SPI_ReceiveByte(void), то что в ней написано понимаю. Но мне не понятно одно. Контролер на 19 ножке ждет импульсы с SD для того, что бы сформировать байт. Мы этой командой PORTB |= (1

  • @MRTORNADO777
    @MRTORNADO777 8 лет назад +1

    Лайк 👍👍👍10

  • @rudolphsikorskiy18
    @rudolphsikorskiy18 7 лет назад

    Мне необходимо использовать 16 Mhz по данному примеру карта не инициализируется,
    Подскажите куда копать?

    • @Pr0grammer04
      @Pr0grammer04 5 лет назад

      Копайте в сторону инициализации. У автора она сделана не правильно. Может для каких-то старинных флешек на 32 мегабайта этот код и работает, но современные с ним работать не хотят. По даташиту на 18:20 ясно видно, что после CMD0 должна идти команда CMD8, а затем команда ACMD41. Вместо этого автор сразу после команды CMD0 отправляет команду CMD41. У меня заработало только после того как сделал всё по даташиту.

  • @6247Belial
    @6247Belial 5 лет назад

    Автор не шарит. Расходимся и читаем даташит

    • @narodstream552
      @narodstream552  5 лет назад +1

      Ну да, а заодно и правила этикета.