TLDR: made “Set Fuses”, “Upload, Build, and Set Fuses”, and “Upload w/o Build, and Set Fuses” toolbar buttons, code is below
I kept running into issues with fuses, sometimes forgetting to set them, assuming they’d been set but didn’t, irksome lil things like that - especially on my current project, where I’m disabling the reset pin on an ATtiny85 and thus have to reset my fuses a LOT.
So (with help from this github comment and this forum post and a whooole lotta googling) I made a button for the VSCode PIO toolbar to upload your program and set fuses. I also made one just for setting fuses, cuz navigating to PlatformIO Sidebar > Project Tasks > Platform > Set Fuses takes eleven seconds too many (edit: also added “Upload without Build and Set Fuses”, kudos to this post)
Just wanted to share! I’ve also made a gist because I’ll 100% hit this issue again someday and forget about this post. Here ya go
Code for settings.json
It’s just the upload
and fuses
commands, one after the other. The only really notable parts are the ;
to stagger commands and auto-detecting the currently active environment.
[ ... the rest of settings.json above ... ]
"platformio-ide.toolbar": [
[ ... other toolbar commands ... ]
{
"text": "$(flame)",
"tooltip": "PlatformIO: Set Fuses",
"commands": [
{
"id": "platformio-ide.runPIOCoreCommand",
"args": "pio run -t fuses -e ${command:platformio-ide.activeEnvironment}"
}
]
},
{
"text": "$(rocket)",
"tooltip": "PlatformIO: Upload, Build, and Set Fuses",
"commands": [
{
"id": "platformio-ide.runPIOCoreCommand",
"args": "pio run -t upload -e ${command:platformio-ide.activeEnvironment}; Write-Host ''; Write-Host -ForegroundColor Yellow ' > > > PROJECT BUILT AND UPLOADED, SETTING FUSES, PLEASE WAIT... < < < '; Write-Host ''; pio run -t fuses -e ${command:platformio-ide.activeEnvironment}"
}
]
},
{
"text": "$(zap)",
"tooltip": "PlatformIO: Upload w/o Build, and Set Fuses",
"commands": [
{
"id": "platformio-ide.runPIOCoreCommand",
"args": "pio run -t nobuild -t upload -e ${command:platformio-ide.activeEnvironment}; Write-Host ''; Write-Host -ForegroundColor Yellow ' > > > PROJECT BUILT AND UPLOADED, SETTING FUSES, PLEASE WAIT... < < < '; Write-Host ''; pio run -t fuses -e ${command:platformio-ide.activeEnvironment}"
}
]
},
[ ... other toolbar commands ... ]
],
[ ... the rest of settings.json below ... ]
Setup
Easy enough, in VSCode go to Settings > Extensions > PlatformIO IDE, and under Toolbar, hit Edit in settings.json. Then just paste the above into the list of menu commands as you see fit I positioned them right after the default Upload button. Note that their position didn’t update until I restarted VSCode (aka relaunched the PIO extension).
(why yes I am procrastinating work by writing an exhaustively thorough tutorial for a very basic CLI command UI, don’t judge me)