I’m trying to set up VSC/PIO as workbench for my projects, but get stuck with a very basic problem.
Basic testing with an Arduino Uno board by uploading a simple blink is working via USB with bootloader.
But when I use a programmer AVRISP mkII or Atmel ICE it seems the devices are not recognized (see the message below). Same setup with Arduino IDE is working.
Not luck using upload_command in platform.ini. Changed USB driver (Zadig) for the programmer for testing, tried a complete new istallation. All without success.
The most weird: PIO commandline works (c:\progs\ArduinoIDE\arduino-1.8.9\hardware\tools\avr\bin\avrdude -Cc:\progs\ArduinoIDE\arduino-1.8.9\hardware\tools\avr\etc\avrdude.conf -v -patmega328p -cstk500v2 -Pusb -Uflash:w:c:\Users\thomas\Documents\PlatformIO\Projects\LED8-RGB.pio\build\uno\firmware.elf)
Configuring upload protocol…
AVAILABLE: stk500v2
CURRENT: upload_protocol = stk500v2
Looking for upload port…
Error: Please specify upload_port for environment or use global --upload-port option.
For some development platforms it can be a USB flash drive (i.e. /media//)
*** [upload] Explicit exit, status 1
The message is telling you that a parameter is missing…
Error: Please specify upload_port for environment or use global --upload-port option.
What do you actually have in your platformio.ini? Does it have the correct settings for your programmer? And are you using the program / upload with programmer option rather than the standard upload option (which for this device family is more for serial uploading).
From another post made recently, it seems that … upload_protocol = atmelice_isp
… should work for the Atmel ICE programmer (but I haven’t tried that with mine yet, so can neither confirm or deny that! ).
Success! Amazing, just adding “upload_port = custom” to platform.ini did it. Thank you.
How to request this directive to be added to the doku? Can’t find it even in the docu .pdf. Would have saved me hours.
Thanks for your time and have a good day.
Then there’s the various platforms, extensions, etc. In this case, I’m going to open an issue against platform-atmelavr to first ask if the behaviour can be improved, as IMO you should be able to do
upload_protocol = stk500v2
upload_port = usb
instead. Currently both that and custom fails on linux, and it would also remove the need for upload_flags = -Pusb as that is what’s setting the port. If that idea isn’t liked, I’ll then suggest a fix to the documentation page.
Totally agree, this is quite unexpected behaviour.
Just some more information about AVR programmer/debugger with PIO for those it may concern:
Now my Atmel-ICE3 is working under PIO as well, adding “upload_port = custom” with “debug_tool = jtag3isp” and “upload_protocol = jtag3isp” defined in .ini.
However adrdude.conf has to be modied. Vendor & Product ID is 03eb/2141 for my device. In advdude.conf usbpid = 0x2110, 0x2140 is defined, so the device will not be found.
But this is common for all avrdude installations I’ve seen.
No idea if this appies to all Atemel-Ice3 devices or this is specific to whatever.
Is it the Atmel-ICE3, or JTAGICE3? I’m not seeing anything for Atmel-ICE3? I’ve got the Atmel ICE, and don’t think I needed to change VID/PID pairs, but it has been a while since I tried it.
Well, good point. The correct naming is ATATMEL-ICE-PCBA. Same as you got.
I ordered the PCB-only version from Digikey 2 months ago. Atmel Studio shows just an ATMEL_ICE. Atmel/Microship can be pretty confusing even with names
USBDeview shows following information