No inline assembly, no global register variables; libavr does the datasheet work. The device speaks primitives — flash read/page-program, EEPROM read/write, fuse read, info block, EEPROM-resident activation timeout, hand-over — and verify, erase, reset-vector surgery, and timeout configuration live in the host tool. 490 B on the ATtiny13A, 510 B on the ATtiny85, 484 B on the ATmega328P, each linked into the top 512 bytes of flash; per-chip size tests gate all three. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
87 lines
2.7 KiB
JSON
87 lines
2.7 KiB
JSON
{
|
|
"version": 8,
|
|
"configurePresets": [
|
|
{
|
|
"name": "base",
|
|
"hidden": true,
|
|
"generator": "Ninja",
|
|
"binaryDir": "${sourceDir}/build/${presetName}",
|
|
"toolchainFile": "$env{LIBAVR_ROOT}/cmake/avr-toolchain.cmake",
|
|
"cacheVariables": {
|
|
"CMAKE_BUILD_TYPE": "Release",
|
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
|
"CMAKE_COLOR_DIAGNOSTICS": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega328p-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": { "LIBAVR_MCU": "atmega328p", "LIBAVR_REFLECT": "OFF" }
|
|
},
|
|
{
|
|
"name": "atmega328p-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": { "LIBAVR_MCU": "atmega328p", "LIBAVR_REFLECT": "ON" }
|
|
},
|
|
{
|
|
"name": "attiny85-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": { "LIBAVR_MCU": "attiny85", "LIBAVR_REFLECT": "OFF" }
|
|
},
|
|
{
|
|
"name": "attiny85-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": { "LIBAVR_MCU": "attiny85", "LIBAVR_REFLECT": "ON" }
|
|
},
|
|
{
|
|
"name": "attiny13a-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": { "LIBAVR_MCU": "attiny13a", "LIBAVR_REFLECT": "OFF" }
|
|
},
|
|
{
|
|
"name": "attiny13a-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": { "LIBAVR_MCU": "attiny13a", "LIBAVR_REFLECT": "ON" }
|
|
}
|
|
],
|
|
"buildPresets": [
|
|
{ "name": "atmega328p-generated", "configurePreset": "atmega328p-generated" },
|
|
{ "name": "atmega328p-reflect", "configurePreset": "atmega328p-reflect" },
|
|
{ "name": "attiny85-generated", "configurePreset": "attiny85-generated" },
|
|
{ "name": "attiny85-reflect", "configurePreset": "attiny85-reflect" },
|
|
{ "name": "attiny13a-generated", "configurePreset": "attiny13a-generated" },
|
|
{ "name": "attiny13a-reflect", "configurePreset": "attiny13a-reflect" }
|
|
],
|
|
"workflowPresets": [
|
|
{
|
|
"name": "atmega328p-generated",
|
|
"steps": [
|
|
{ "type": "configure", "name": "atmega328p-generated" },
|
|
{ "type": "build", "name": "atmega328p-generated" },
|
|
{ "type": "test", "name": "atmega328p-generated" }
|
|
]
|
|
},
|
|
{
|
|
"name": "attiny85-generated",
|
|
"steps": [
|
|
{ "type": "configure", "name": "attiny85-generated" },
|
|
{ "type": "build", "name": "attiny85-generated" },
|
|
{ "type": "test", "name": "attiny85-generated" }
|
|
]
|
|
},
|
|
{
|
|
"name": "attiny13a-generated",
|
|
"steps": [
|
|
{ "type": "configure", "name": "attiny13a-generated" },
|
|
{ "type": "build", "name": "attiny13a-generated" },
|
|
{ "type": "test", "name": "attiny13a-generated" }
|
|
]
|
|
}
|
|
],
|
|
"testPresets": [
|
|
{ "name": "atmega328p-generated", "configurePreset": "atmega328p-generated", "output": { "outputOnFailure": true } },
|
|
{ "name": "attiny85-generated", "configurePreset": "attiny85-generated", "output": { "outputOnFailure": true } },
|
|
{ "name": "attiny13a-generated", "configurePreset": "attiny13a-generated", "output": { "outputOnFailure": true } }
|
|
]
|
|
}
|