Можно ли программировать ATTiny88 через I2C с Raspberry Pi?
Это похоже на Можно ли программировать микросхему AVR (atmega328p) через i2c?, но не совсем, и та тема немного скудна на подробности.
У меня есть ATTiny88, подключённый по I2C к Raspberry Pi, при этом Raspberry Pi выступает в качестве ведущего устройства. Система находится удалённо, но я могу связаться с Raspberry Pi через Wi-Fi. Обновлять ПО на Raspberry Pi, конечно, довольно просто, но было бы здорово, если бы я мог загружать скомпилированный файл из IDE на Raspberry Pi, а затем загружать его на ATTiny88 по I2C. Это упростило бы изменение прошивки и обновление Arduino.
@LesRhorer, 👍0
Обсуждение2 ответа
Согласно техническому описанию:
Устройство обеспечивает самопрограммирующийся механизм загрузки и выгрузки программного кода самим микроконтроллером. Самопрограммирование может использовать любой доступный интерфейс данных и связанный с ним протокол для чтения кода и записи (программирования) этого кода. в память программы. Инструкция SPM по умолчанию отключена, но её можно включить, запрограммировав предохранитель SELFPRGEN (на «0»).
Похоже, это возможно. Для практического применения вам потребуется уместить код для самопрограммирования, а также код, выполняющий что-то полезное, в 8 КБ флеш-памяти.
Вам также потребуется каким-то образом организовать код, чтобы при перепрограммировании не стирать и не перезаписывать код во время процесса перепрограммирования.
Это может быть немного сложно реализовать, но не невозможно.
Если вы сейчас используете tiny с какой-нибудь библиотекой I2C, то эта библиотека, скорее всего, этого не позволит. Если вы хотите упростить задачу, рассмотрите её с другой точки зрения:
- можно ли сбросить настройки Tiny с помощью интерфейса I2C? (совет: создайте регистр «Сброса»)
- Можно ли использовать те же контакты для программирования микроконтроллера (но не через I2C, а через последовательный порт или SPI)?
Если вы сможете выполнить два вышеупомянутых подпроекта, то сможете добиться желаемого. Просто установите контакты на последовательный порт (или SPI) при запуске на несколько секунд, а затем переключитесь на I2C.
- I2C с ATtiny85 на частоте 8 МГц с использованием библиотеки TinyWireM
- ATtiny85 I2C ЖК
- Библиотека Wire.h работает на Uno, но не компилируется для ATtiny85
- Связь I2C между Attiny85 в качестве ведущего устройства и Arduino UNO в качестве ведомого устройства
- Ошибка при компиляции: 'class TwoWire' has no member named 'setClock'
- Сбросить соединение I2C с arduino в качестве ведомого
- Связь AtTiny44 и AtTiny 85
- Преобразование float в байт, от Arduino до Raspberry Pi i2c
Какие результаты вы получили в ходе своего исследования?, @jsotola
Даже если это теоретически возможно, никаких инструкций вы не найдёте. Предполагается, что ATTiny88 программируется с помощью аппаратного обеспечения типа USBASP., @liaifat85
Имеет ли значение, что это I2C?, @timemage
на GitHub есть проект загрузчика I2C, @jsotola
Единственный результат, который я получил, — это то, что это возможно, но без подробностей я в тупике. Есть ли у вас ссылка на проект загрузчика I2C на GitHub? Звучит неплохо для начала., @LesRhorer
@liaifat85: Что я «должен» делать, не имеет значения. У меня есть Raspberry Pi, подключенный к Arduino, с которым я могу связаться и обновить его удалённо. Я могу легко настроить Raspberry Pi на автоматическое подключение к серверу при необходимости обновления. Если возможно обновить прошивку по I2C, то это хорошая идея. Физический доступ к Arduino будет проблемой, если устройство находится на другом конце света в руках человека, которого я никогда не встречал., @LesRhorer
@timemage: Ну, поскольку шина I2C — это то, с помощью чего Raspberry Pi взаимодействует с Arduino, то да, это имеет значение., @LesRhorer