Возможно ли для Arduino as ISP board прошить мастер-плату ISP?
У меня есть установка из 2 плат Arduino Leonardo. Давайте назовем их Платой А и Платой В.
Плата A - это основная плата SPI, которая постоянно связывается через SPI с массивом датчиков. В какой-то момент плату А нужно будет прошить новым скетчем. Вот тут-то и вступает в игру плата Б.
Я хочу использовать плату B go используйте Arduino в качестве скетча ISP, чтобы перейти и прошить новый скетч на плате A. Проблема в том, что Arduino as ISP использует SPI, что противоречит коду на плате B, поскольку плата B является главным устройством, связывающимся с другими датчиками через SPI.
Возможно ли, чтобы плата B прошивала плату A через ISP?
@SomeGuy, 👍0
Обсуждение1 ответ
Лучший ответ:
Да, вы можете прошить MCU с помощью ISP, даже если MCU действует как SPI-устройство (будь то master или slave). Программатор переводит MCU в режим сброса, поэтому в момент загрузки скетча SPI все равно будет отключен. Еще одна вещь, о которой вам нужно думать, - это другие устройства SPI (датчики или то, что когда-либо контролирует MCU). Они могут улавливать сигналы SPI, посылаемые программатором, и иногда сами писать на шину, поэтому нарушают связь по линии МИСО, что было бы критично. Есть два варианта справиться с этим:
- Просто отключите все подчиненные устройства SPI во время загрузки кода
- Убедитесь, что на линиях CS есть подтягивания, чтобы они имели определенное состояние (они могут быть плавающими, пока MCU находится в режиме сброса). Некоторые ведомые устройства могут потребовать деактивации выпадающих списков, но это редкость.
Спасибо за подробный ответ! Вопросы: когда вы говорите о линиях CS, вы имеете в виду подчиненные линии выбора? И являются ли подтягивающие резисторы резисторами, один конец которых подключен к vcc, а другой - к порту выбора ведомого устройства на датчике? Прямо сейчас я представляю, что каким-то образом подтягивающий резистор удерживает линию выбора ведомого устройства на высоком уровне во время сброса. Я думаю, потому, что рабам свойственно быть активными на низком уровне. Если подтягивание удерживает SS на высоком уровне, как плата A при нормальной работе понижает уровень SS, чтобы сказать: "Эй, датчик, отправь мне данные"?, @SomeGuy
протокол SPI *** говорит, что у выбранного ведомого устройства низкий уровень SS, а ведомые устройства с ВЫСОКИМ уровнем SS не должны получать доступ к шине, @Juraj
@SomeGuy да, я имею в виду подчиненные строки выбора. да, подтягивания соединены между Vcc и линией, которую нужно подтянуть. если у всех ваших подчиненных все равно есть подтягивания, у вас не должно возникнуть проблем с загрузкой кода, @Sim Son
- Прорыв FTDI с дополнительным соединителем ISP
- Самодельный Arduino с использованием ATMEGA328P, ISP или ICSP?
- Конфликт SPI с двумя экранами - IOREF?
- Как использовать любой модуль, у которого нет библиотеки для arduino?
- Использование выводов ICSP в качестве SPI в Arduino Due
- Резервное копирование ATMEGA16
- Программирование barebone-системы ATMega328 с помощью внешнего программатора и без загрузчика
- Линии пульсируют недостаточно быстро (?))
перепрошивка ISP выполняется в состоянии сброса. тогда SPI не используется. но подключенный SPI slave может создавать помехи, @Juraj
Ваш код не выполняется при загрузке вашего нового кода., @Gerben