Arduino Due: JTAG и SWD не работают после нажатия кнопки стирания
У меня есть плата Arduino Due. Я могу успешно загрузить код в него, используя загрузку Arduino через USB. Однако я также изучаю другой подход, который заключается в загрузке кода через Atmel studio с использованием соединения Atmel ICE и JTAG. Обычно это работает нормально (код загружается, и простой скетч "мигания" заставляет встроенный светодиод мигать).
Однако когда я нажимаю кнопку стереть, а затем пытаюсь загрузить тот же скетч через Atmel Studio и JTAG, происходит что-то странное. Код загружается нормально:
Erasing device... OK
Programming Flash...OK
Verifying Flash...OK
Но тогда программа на должном уровне фактически не выполняется. Светодиод не начинает "мигать". Если я затем снова загружу через USB (порт программирования) и Arduino IDE, программа blink будет работать. И когда я затем загружаю через Atmel Studio и JTAG снова, не нажимая кнопку стирания, все происходит так, как ожидалось (светодиод мигает и т. Д.). Кто-нибудь имеет хоть малейшее представление о том, что может происходить? Причина, по которой я спрашиваю, заключается в том, что я хотел бы спроектировать плату, используя только соединение JTAG. Считаете ли вы, что вышеуказанная проблема может вызвать проблемы и при использовании "пустого" заводского MCU SAM?
EDIT: та же проблема относится и к SWD.
Blink sketch, который я загружаю:
#define led LED_BUILTIN
// процедура установки выполняется один раз при нажатии кнопки reset:
void setup() {
// инициализировать цифровой вывод в качестве выхода.
pinMode(led, OUTPUT);
}
// процедура цикла выполняется снова и снова навсегда:
void loop() {
digitalWrite(led, HIGH); // включите светодиод (HIGH - уровень напряжения)
delay(600); // дождитесь второй
digitalWrite(led, LOW); // выключите светодиод, сделав
delay(600); // подождите секунду
}
@daniel, 👍2
1 ответ
Лучший ответ:
После загрузки через Microchip Studio перейдите в раздел GPNVM bits окна "программирование устройств". Убедитесь, что режим загрузки установлен в положение "загрузка с флэш-памяти". Также убедитесь, что регистр GPNVMBITS установлен в 0x00000002. Затем нажмите кнопку "программа". Скетч, который вы загрузили в микроконтроллер, теперь должен работать.
Таким образом, кажется, что происходит то, что нажатие кнопки стирания сбрасывает биты GPNVM, так что MCU загружается из ROM, но затем Atmel ICE + JTAG / SWD не устанавливает режим загрузки обратно в flash после (успешного) программирования MCU.
- Ошибка обновления Arduino Nano — avrdude: stk500_recv(): programmer is not responding
- Запрограммируйте черную таблетку SMT32 без нажатия кнопок или специальных устройств
- Внешний программатор ArduinoISP выдает ошибку проверки?
- Программирование Bare Metal Due
- Плата Arduino Due. Ошибка загрузки скетча
- "avrdude: stk500_getsync(): not in sync: resp=0x00", или некто по имени Avr не позволяет мне загрузить мою программу
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату