SPI - минимально необходимое и достаточное

Честно говоря использую SPI только для “прошивки” микроконтроллеров.
Появилась одна идея, но нужно взаимодействие между двумя микроконтроллерами. У самого “хилого” микроконтроллера мало лапов и для какой-либо связи имеется только SPI.

Правильно ли я понимаю, что для “однонаправленного” общения (отсылки “команд” от ведущего ведомому) достаточно соединить только:

  • MOSI — MOSI
  • SCK ----- SCK
  • Ну и само собой: GND — GND

Немного не понятно - как быть с CS (SS)? Ну то есть по идеи (так как их всего двое: один передает, второй принимает) его нужно соединить с GND на ведомом сразу, так?
А где у Attiny13 пин CS (SS) ???

Какой назначишь, такой и будет

А разве он не аппаратным должен быть? Как в атмега328?

А его и в атмеге можно переназначить. Это управляющий пин - подал на него низкий уровень, отправил команду, снова перевел его на высокий уровень. Т.е. по его состоянию ведомое устройство понимает, что сейчас будет отправка данных

Во первых (строках своего письма). SPI не значит ICSP. То есть, ICSP может быть, а вот SPI может и не быть. А есть ли он в tiny13?

Надо уточнить - attiny13 есть ведомое. Вообще его можно не назначать? Или обязательно “драгоценную лапу” тратить? :smiley:

В даташите пишут, что имеется…

Обязательно ))


Как видишь, устройств может быть несколько, для каждого свой SS

На заборе? А если попробовать с ним поработать? Или же программный имеется ввиду?

Какие нах CS-ы! 2 устройства! Жаль только что аппаратного SPI в tiny13 нет.

1 лайк

Только для программирования

У неё нет SPI для юзера. У неё только “внутренний” SPI для её программирования. Пин CS ей при этом просто не нужен - для программирования используется Reset.

Заставить её работать SPI-слейвом совсем непросто (если вообще возможно). Я бы делал программный SPI-slave. Тогда Вам не нужен пин для CS. Достаточно SCK и MOSI. Хотя, лучше бы найти пин - он даёт хороший сигнал “начало передачи пакета”.

Может тогда лучше взять софтовый uart или 1-Wire?
Всего одна лапа))

Хорошая идея.

Ага, хорошая. Только uart-ом заниматься надо. А если у тебя на кнопку 10мс тратится?)

Тогда проще микроконтроллер на более “продвинутый” поменять :smiley:

Или использовать 2 ноги и софтовую версию клокающего интерфейса. Типа I2C, SPI, тп.

Вполне. Тут от ситуации зависит, от того что крутится. Вспоминается, на 1-м мипсе крутилась куча задач и ещё планировалось подключить 16 штук 1602 по паразитному питанию. И ничё, работало (тестировал на одном правда). Жаль, в эксплуатацию не пошло.)

С “продвинутым” и дурак сможет. Шютка.) Ну это от тебя зависит, от твоих приоритетов, от того что тебе важнее - результат или “сам процесс”.

Я не прихотливый, мне и то и другое интересно :slight_smile:

Сейчас Attiny13 “хватает за глаза” (160 байт flash / 7 байт ОЗУ), вот думал “связь прикручу” по простому…