ЭЛЕКТРОНИКА Работа attiny2313 как i2c-master

Mark_gresh

✩✩✩✩✩✩✩
28 Янв 2026
20
0
Здравствуйте. Я хотел на attiny2313 управлять дисплеем и часами. Но там вместо нормального i2c стоит некое USI. Как по-моему, лучше бы вместо уарта i2c сделали нормальное. Есть вроде что-то для ведомого, но для режима ведущего нет. Целый день копался в даташите, уже его наизусть выучил, но про интерфейсы связи там ни слова, только таблица регистров. Какими регистрами можно настроить usi как i2c? Можно ли (как?) настроить его как мастер? Поторебуется ли софтварное решение? Какие там векторы прерываний?
 

Bruzzer

★★★★✩✩✩
23 Май 2020
784
242
@Mark_gresh,
Предупреждение. Сам я USI не пользовался, так что дальше "общие слова"

Сейчас почти на любой вопрос есть ответ в инете. ИИ тоже иногда неплохо отвечает.

Не понятен ваш вопрос.
При установке пакета (addon) поддержки МК, могут автоматически устанавливаться специфические библиотеки для этого MK.
Например в ATTinyCore библиотека WIRE адаптированна для USI.
Если хотите узнать теорию, то у производителей бывают документы "Application Note" по разным вопросам. И запрос в моем поисковике "Atmel application note USI" выдает в том числе ссылку на http://www.gaw.ru/pdf/Atmel/app/avr/AVR310.pdf
 

Mark_gresh

✩✩✩✩✩✩✩
28 Янв 2026
20
0
@Bruzzer, я знаю, что есть. Я дважды перерыл весь интернет, но ничего толкового нету. А ИИ я не особо доверяю в плане программирования МК. И я не буду использовать ядро, только регистры, а ядро максимум чтоб прописать фьюзы.
 

bort707

★★★★★★✩
21 Сен 2020
3,425
984
Я хотел на attiny2313 управлять дисплеем и часами. Но там вместо нормального i2c стоит некое USI. Есть вроде что-то для ведомого, но для режима ведущего нет.
...я не буду использовать ядро, только регистры
Не вполне понятно, в чем ваша проблема? Зачем вам понадобились регистры? Вы что, собрались писать собственную реализацию стека I2c без библиотеки?
Если нет, то начните просто с библиотечных примеров. Там есть и режим мастер, и режим слейв.

Ставите ATTinyCore и открываете пример к библиотеке Wire
https://github.com/SpenceKonde/ATTinyCore/avr/libraries/Wire/examples
 

Mark_gresh

✩✩✩✩✩✩✩
28 Янв 2026
20
0
Зачем вам понадобились регистры?
Во-первых, чтоб уменьшить размер кода, во-вторых, чтоб не стыдно было показать людям прошивку, а в-третьих, чтобы лучше контролировать всё, что происходит в коде. Тогда вытащу из ядра нужный кусок кода и отброшу ненужное.
 

Bruzzer

★★★★✩✩✩
23 Май 2020
784
242
У меня примерно такие же мысли были.

.... Какие там векторы прерываний?
.....чтобы лучше контролировать всё, что происходит в коде.
Желание контролировать все, возможно правильно, но тогда надо и разобраться во всем.
НО!!! Если уже поиск векторов прерываний вызывает трудности, то это странно.

> чтоб не стыдно было показать людям прошивку
Библиотеки и Фреймворки были придуманы в том числе и для того, чтобы людям было проще воспроизводить (и понимать) чужие программы.