MCUdude / MegaCoreX

An Arduino hardware package for ATmega4809, ATmega4808, ATmega3209, ATmega3208, ATmega1609, ATmega1608, ATmega809 and ATmega808
GNU Lesser General Public License v2.1
243 stars 47 forks source link

How config PlatformIO with MegaCoreX with Arduino Nano Every? #157

Closed mikrocoder closed 1 year ago

mikrocoder commented 2 years ago

Hello,

I don't know what else I have to set. With the .ini I get 4 usart error messages. I do not know where the takes the 4 USARTs.

The example seems to be incorrect. How would PlatformIO know that I want to use the MegaCoreX package?

It seems to me that the MegaCoreX is not yet integrated although it should be included by default. How does that work?

How do I get the Arduino Nano Every Board to work with the MegaCoreX under PlatformIO?

#include <Arduino.h>

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  digitalWrite(LED_BUILTIN, HIGH);
  delay(200);
  digitalWrite(LED_BUILTIN, LOW); 
  delay(1000);
}

.ini File

; Parameters used for all environments
[env]
platform = atmelmegaavr
framework = arduino

; Chip in use
board = ATmega4809
; Clock frequency in [Hz]
board_build.f_cpu = 16000000L
; Oscillator type (internal or external)
board_hardware.oscillator = internal
; Arduino pinout variant
board_build.variant = nano_every

; Unflag build flags
build_unflags =
; Extra build flags
build_flags =

; Monitor port is auto detected. Override here
;monitor_port =
; Serial monitor baud rate
monitor_speed = 9600

; Run the following command to upload with this environment
; pio run -e Upload_UPDI -t upload
[env:Upload_UPDI]
; Upload protocol for UPDI upload
upload_protocol = atmelice_updi
upload_flags =

; Run the following command to upload with this environment
; pio run -e Upload_UART -t upload
[env:Upload_UART]
; Upload protocol for serial uploads (using Optiboot)
upload_protocol = arduino
upload_flags =
upload_port = /dev/COM7

; run the following command to set fuses
; pio run -e fuses_bootloader -t fuses
; run the following command to set fuses + burn bootloader
; pio run -e fuses_bootloader -t bootloader
[env:fuses_bootloader]
; Upload protocol for used to set fuses/bootloader
upload_protocol = ${env:Upload_UPDI.upload_protocol}
upload_flags =
; Hardware settings
board_hardware.bod = 2.7v
board_hardware.eesave = yes
board_hardware.uart = no_bootloader
board_hardware.rstpin = reset

Errors:

Processing Upload_UPDI (platform: atmelmegaavr; framework: arduino; board: ATmega4809)
-----------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelmegaavr/ATmega4809.html
PLATFORM: Atmel megaAVR (1.6.0) > ATmega4809    
HARDWARE: ATMEGA4809 16MHz, 6KB RAM, 48KB Flash 
PACKAGES:
 - framework-arduino-megaavr-megacorex @ 1.0.10 
 - toolchain-atmelavr @ 3.70300.220127 (7.3.0)  
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio\build\Upload_UPDI\src\main.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART0.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART1.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART2.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART3.cpp.o
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX/Arduino.h:127:0,
                 from src\main.cpp:1:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX/UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\Upload_UPDI\src\main.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Tone.cpp:40:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\Upload_UPDI\FrameworkArduino\Tone.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.cpp:29:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART0.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\Upload_UPDI\FrameworkArduino\UART.cpp.o] Error 1
*** [.pio\build\Upload_UPDI\FrameworkArduino\UART0.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART1.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART2.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\Upload_UPDI\FrameworkArduino\UART1.cpp.o] Error 1
*** [.pio\build\Upload_UPDI\FrameworkArduino\UART2.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART3.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\Upload_UPDI\FrameworkArduino\UART3.cpp.o] Error 1
============================================= [FAILED] Took 1.44 seconds =============================================

Processing Upload_UART (platform: atmelmegaavr; framework: arduino; board: ATmega4809)
-----------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelmegaavr/ATmega4809.html
PLATFORM: Atmel megaAVR (1.6.0) > ATmega4809
HARDWARE: ATMEGA4809 16MHz, 6KB RAM, 48KB Flash
PACKAGES:
 - framework-arduino-megaavr-megacorex @ 1.0.10
 - toolchain-atmelavr @ 3.70300.220127 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio\build\Upload_UART\src\main.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART0.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART1.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART2.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART3.cpp.o
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX/Arduino.h:127:0,
                 from src\main.cpp:1:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX/UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\Upload_UART\src\main.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Tone.cpp:40:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART2.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\Upload_UART\FrameworkArduino\Tone.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.cpp:29:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART1.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
compilation terminated.
*** [.pio\build\Upload_UART\FrameworkArduino\UART2.cpp.o] Error 1
*** [.pio\build\Upload_UART\FrameworkArduino\UART1.cpp.o] Error 1
*** [.pio\build\Upload_UART\FrameworkArduino\UART.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART3.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART0.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
compilation terminated.
*** [.pio\build\Upload_UART\FrameworkArduino\UART0.cpp.o] Error 1
*** [.pio\build\Upload_UART\FrameworkArduino\UART3.cpp.o] Error 1
============================================= [FAILED] Took 1.48 seconds =============================================

Processing fuses_bootloader (platform: atmelmegaavr; framework: arduino; board: ATmega4809)
-----------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelmegaavr/ATmega4809.html
PLATFORM: Atmel megaAVR (1.6.0) > ATmega4809
HARDWARE: ATMEGA4809 16MHz, 6KB RAM, 48KB Flash
PACKAGES:
 - framework-arduino-megaavr-megacorex @ 1.0.10
 - toolchain-atmelavr @ 3.70300.220127 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio\build\fuses_bootloader\src\main.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART0.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART1.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART2.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART3.cpp.o
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX/Arduino.h:127:0,
                 from src\main.cpp:1:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX/UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\fuses_bootloader\src\main.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.cpp:29:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Tone.cpp:40:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\fuses_bootloader\FrameworkArduino\Tone.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART0.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\fuses_bootloader\FrameworkArduino\UART.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART1.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\fuses_bootloader\FrameworkArduino\UART0.cpp.o] Error 1
*** [.pio\build\fuses_bootloader\FrameworkArduino\UART1.cpp.o] Error 1
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART2.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
In file included from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\Arduino.h:127:0,
                 from C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART3.cpp:25:
C:\Users\Worker\.platformio\packages\framework-arduino-megaavr-megacorex\cores\MegaCoreX\UART.h:28:10: fatal error: pins_arduino.h: No such file or directory

**********************************************************************
* Looking for pins_arduino.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:pins_arduino.h"
* Web  > https://registry.platformio.org/search?q=header:pins_arduino.h
*
**********************************************************************

 #include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\fuses_bootloader\FrameworkArduino\UART2.cpp.o] Error 1
*** [.pio\build\fuses_bootloader\FrameworkArduino\UART3.cpp.o] Error 1
============================================= [FAILED] Took 1.46 seconds =============================================

Environment       Status    Duration
----------------  --------  ------------
Upload_UPDI       FAILED    00:00:01.442
Upload_UART       FAILED    00:00:01.484
fuses_bootloader  FAILED    00:00:01.464

#include "pins_arduino.h"
          ^~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\nano_every\FrameworkArduino\UART0.cpp.o] Error 1
*** [.pio\build\nano_every\FrameworkArduino\UART1.cpp.o] Error 1
*** [.pio\build\nano_every\FrameworkArduino\UART3.cpp.o] Error 1
*** [.pio\build\nano_every\FrameworkArduino\UART2.cpp.o] Error 1
======================= [FAILED] Took 1.49 seconds =======================
Processing Upload_UPDI ()
--------------Error: Please specify platform for 'Upload_UPDI' environment
MCUdude commented 2 years ago

Try using board_build.variant = nano-every (with dash instead of underscore).

Also, you need the following "environment" if you want to upload using the on-board USB connector on the Nano Every:

[env:Upload_onboard_usb]
upload_protocol = jtag2updi
board_upload.use_1200bps_touch = true
upload_flags =
mikrocoder commented 2 years ago

Thanks, I'll try it out later. And how does PlatformIO even know that I want to use your MegaCoreX package? Because that is not in any setting.

mikrocoder commented 2 years ago

Somehow it can flash, but with error messages. How do you even know what to set everything? The documentation does not help me. There are many lines that are not documented.

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

; Parameters used for all environments
[env]
platform = atmelmegaavr
framework = arduino

; Chip in use
board = ATmega4809
; Clock frequency in [Hz]
board_build.f_cpu = 16000000L
; Oscillator type (internal or external)
board_hardware.oscillator = internal
; Arduino pinout variant
board_build.variant = nano-every

; Unflag build flags
build_unflags =
; Extra build flags
build_flags =

; Monitor port is auto detected. Override here
;monitor_port =
; Serial monitor baud rate
monitor_speed = 9600

; Run the following command to upload with this environment
; pio run -e Upload_UPDI -t upload
[env:Upload_UPDI]
; Upload protocol for UPDI upload
upload_protocol = atmelice_updi
upload_flags =

[env:Upload_onboard_usb]
upload_protocol = jtag2updi
board_upload.use_1200bps_touch = true
upload_flags =

; Run the following command to upload with this environment
; pio run -e Upload_UART -t upload
[env:Upload_UART]
; Upload protocol for serial uploads (using Optiboot)
upload_protocol = arduino
upload_flags =
upload_port = /dev/COM[7]

; run the following command to set fuses
; pio run -e fuses_bootloader -t fuses
; run the following command to set fuses + burn bootloader
; pio run -e fuses_bootloader -t bootloader
[env:fuses_bootloader]
; Upload protocol for used to set fuses/bootloader
upload_protocol = ${env:Upload_UPDI.upload_protocol}
upload_flags =
; Hardware settings
board_hardware.bod = 2.7v
board_hardware.eesave = yes
board_hardware.uart = no_bootloader
board_hardware.rstpin = reset
Processing Upload_UPDI (platform: atmelmegaavr; framework: arduino; board: ATmega4809)
---------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelmegaavr/ATmega4809.html
PLATFORM: Atmel megaAVR (1.6.0) > ATmega4809     
HARDWARE: ATMEGA4809 16MHz, 6KB RAM, 48KB Flash  
PACKAGES:
 - framework-arduino-megaavr-megacorex @ 1.0.10  
 - tool-avrdude-megaavr @ 3.60300.220118 (6.3.0) 
 - toolchain-atmelavr @ 3.70300.220127 (7.3.0)   
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
Dependency Graph
|-- SPI @ 1.0
|-- Wire @ 1.0
Building in release mode
Compiling .pio\build\Upload_UPDI\src\main.cpp.o
Compiling .pio\build\Upload_UPDI\libf86\SPI\SPI.cpp.o
Compiling .pio\build\Upload_UPDI\libd41\Wire\Wire.cpp.o
Compiling .pio\build\Upload_UPDI\libd41\Wire\utility\twi.c.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART0.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART1.cpp.o
Archiving .pio\build\Upload_UPDI\libf86\libSPI.a
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART2.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UART3.cpp.o
Archiving .pio\build\Upload_UPDI\libd41\libWire.a
Compiling .pio\build\Upload_UPDI\FrameworkArduino\UNO_compat.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\USBCore.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\WInterrupts.c.o
Indexing .pio\build\Upload_UPDI\libf86\libSPI.a
Indexing .pio\build\Upload_UPDI\libd41\libWire.a
Compiling .pio\build\Upload_UPDI\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\abi.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\api\Common.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\api\IPAddress.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\api\PluggableUSB.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\api\Print.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\api\RingBuffer.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\api\Stream.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\api\String.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\hooks.c.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\main.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\new.cpp.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\wiring.c.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\wiring_analog.c.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\wiring_digital.c.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\wiring_pulse.S.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\Upload_UPDI\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\Upload_UPDI\libFrameworkArduino.a
Indexing .pio\build\Upload_UPDI\libFrameworkArduino.a
Linking .pio\build\Upload_UPDI\firmware.elf
Checking size .pio\build\Upload_UPDI\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   0.1% (used 4 bytes from 6144 bytes)
Flash: [          ]   1.6% (used 804 bytes from 49152 bytes)
Building .pio\build\Upload_UPDI\firmware.hex
Configuring upload protocol...
AVAILABLE: atmelice_updi
CURRENT: upload_protocol = atmelice_updi
Looking for upload port...
Uploading .pio\build\Upload_UPDI\firmware.hex
avrdude: usbhid_open(): No device found
avrdude: jtag3_open_common(): Did not find any device matching VID 0x03eb and PID list: 0x2141

avrdude done.  Thank you.

*** [upload] Error 1
================================================================= [FAILED] Took 4.49 seconds =================================================================

Processing Upload_onboard_usb (platform: atmelmegaavr; framework: arduino; board: ATmega4809)
---------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelmegaavr/ATmega4809.html
PLATFORM: Atmel megaAVR (1.6.0) > ATmega4809
HARDWARE: ATMEGA4809 16MHz, 6KB RAM, 48KB Flash
PACKAGES:
 - framework-arduino-megaavr-megacorex @ 1.0.10
 - tool-avrdude-megaavr @ 3.60300.220118 (6.3.0)
 - toolchain-atmelavr @ 3.70300.220127 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
Dependency Graph
|-- SPI @ 1.0
|-- Wire @ 1.0
Building in release mode
Compiling .pio\build\Upload_onboard_usb\src\main.cpp.o
Compiling .pio\build\Upload_onboard_usb\libf86\SPI\SPI.cpp.o
Compiling .pio\build\Upload_onboard_usb\libd41\Wire\Wire.cpp.o
Compiling .pio\build\Upload_onboard_usb\libd41\Wire\utility\twi.c.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\UART.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\UART0.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\UART1.cpp.o
Archiving .pio\build\Upload_onboard_usb\libf86\libSPI.a
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\UART2.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\UART3.cpp.o
Archiving .pio\build\Upload_onboard_usb\libd41\libWire.a
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\UNO_compat.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\USBCore.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\WInterrupts.c.o
Indexing .pio\build\Upload_onboard_usb\libf86\libSPI.a
Indexing .pio\build\Upload_onboard_usb\libd41\libWire.a
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\abi.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\api\Common.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\api\IPAddress.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\api\PluggableUSB.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\api\Print.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\api\RingBuffer.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\api\Stream.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\api\String.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\hooks.c.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\main.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\new.cpp.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\wiring.c.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\wiring_analog.c.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\wiring_digital.c.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\wiring_pulse.S.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\Upload_onboard_usb\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\Upload_onboard_usb\libFrameworkArduino.a
Indexing .pio\build\Upload_onboard_usb\libFrameworkArduino.a
Linking .pio\build\Upload_onboard_usb\firmware.elf
Checking size .pio\build\Upload_onboard_usb\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   0.1% (used 4 bytes from 6144 bytes)
Flash: [          ]   1.6% (used 804 bytes from 49152 bytes)
Building .pio\build\Upload_onboard_usb\firmware.hex
Configuring upload protocol...
AVAILABLE: jtag2updi
CURRENT: upload_protocol = jtag2updi
Looking for upload port...
Auto-detected: COM7
Forcing reset using 1200bps open/close on port COM7
Uploading .pio\build\Upload_onboard_usb\firmware.hex

avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.15s

avrdude: Device signature = 0x1e9651 (probably m4809)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file ".pio\build\Upload_onboard_usb\firmware.hex"
avrdude: writing flash (804 bytes):

Writing | ################################################## | 100% 0.67s

avrdude: 804 bytes of flash written
avrdude: verifying flash memory against .pio\build\Upload_onboard_usb\firmware.hex:
avrdude: load data flash data from input file .pio\build\Upload_onboard_usb\firmware.hex:
avrdude: input file .pio\build\Upload_onboard_usb\firmware.hex contains 804 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.22s

avrdude: verifying ...
avrdude: 804 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:FF, L:FF)

avrdude done.  Thank you.

================================================================= [SUCCESS] Took 6.28 seconds =================================================================
Processing Upload_UART (platform: atmelmegaavr; framework: arduino; board: ATmega4809)
---------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelmegaavr/ATmega4809.html
PLATFORM: Atmel megaAVR (1.6.0) > ATmega4809
HARDWARE: ATMEGA4809 16MHz, 6KB RAM, 48KB Flash
PACKAGES:
 - framework-arduino-megaavr-megacorex @ 1.0.10
 - tool-avrdude-megaavr @ 3.60300.220118 (6.3.0)
 - toolchain-atmelavr @ 3.70300.220127 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
Dependency Graph
|-- SPI @ 1.0
|-- Wire @ 1.0
Building in release mode
Compiling .pio\build\Upload_UART\src\main.cpp.o
Compiling .pio\build\Upload_UART\libf86\SPI\SPI.cpp.o
Compiling .pio\build\Upload_UART\libd41\Wire\Wire.cpp.o
Compiling .pio\build\Upload_UART\libd41\Wire\utility\twi.c.o
Compiling .pio\build\Upload_UART\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART0.cpp.o
Archiving .pio\build\Upload_UART\libf86\libSPI.a
Compiling .pio\build\Upload_UART\FrameworkArduino\UART1.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART2.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\UART3.cpp.o
Archiving .pio\build\Upload_UART\libd41\libWire.a
Compiling .pio\build\Upload_UART\FrameworkArduino\UNO_compat.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\USBCore.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\WInterrupts.c.o
Indexing .pio\build\Upload_UART\libf86\libSPI.a
Indexing .pio\build\Upload_UART\libd41\libWire.a
Compiling .pio\build\Upload_UART\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\abi.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\api\Common.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\api\IPAddress.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\api\PluggableUSB.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\api\Print.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\api\RingBuffer.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\api\Stream.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\api\String.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\hooks.c.o
Compiling .pio\build\Upload_UART\FrameworkArduino\main.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\new.cpp.o
Compiling .pio\build\Upload_UART\FrameworkArduino\wiring.c.o
Compiling .pio\build\Upload_UART\FrameworkArduino\wiring_analog.c.o
Compiling .pio\build\Upload_UART\FrameworkArduino\wiring_digital.c.o
Compiling .pio\build\Upload_UART\FrameworkArduino\wiring_pulse.S.o
Compiling .pio\build\Upload_UART\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\Upload_UART\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\Upload_UART\libFrameworkArduino.a
Indexing .pio\build\Upload_UART\libFrameworkArduino.a
Linking .pio\build\Upload_UART\firmware.elf
Checking size .pio\build\Upload_UART\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   0.1% (used 4 bytes from 6144 bytes)
Flash: [          ]   1.6% (used 804 bytes from 49152 bytes)
Building .pio\build\Upload_UART\firmware.hex
Configuring upload protocol...
AVAILABLE: arduino
CURRENT: upload_protocol = arduino
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/<user>/<device name>)
*** [upload] Explicit exit, status 1
================================================================= [FAILED] Took 3.80 seconds =================================================================

Processing fuses_bootloader (platform: atmelmegaavr; framework: arduino; board: ATmega4809)
---------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelmegaavr/ATmega4809.html
PLATFORM: Atmel megaAVR (1.6.0) > ATmega4809
HARDWARE: ATMEGA4809 16MHz, 6KB RAM, 48KB Flash
PACKAGES:
 - framework-arduino-megaavr-megacorex @ 1.0.10
 - tool-avrdude-megaavr @ 3.60300.220118 (6.3.0)
 - toolchain-atmelavr @ 3.70300.220127 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 11 compatible libraries
Scanning dependencies...
Dependency Graph
|-- SPI @ 1.0
|-- Wire @ 1.0
Building in release mode
Compiling .pio\build\fuses_bootloader\src\main.cpp.o
Compiling .pio\build\fuses_bootloader\libf86\SPI\SPI.cpp.o
Compiling .pio\build\fuses_bootloader\libd41\Wire\Wire.cpp.o
Compiling .pio\build\fuses_bootloader\libd41\Wire\utility\twi.c.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART0.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART1.cpp.o
Archiving .pio\build\fuses_bootloader\libf86\libSPI.a
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART2.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UART3.cpp.o
Archiving .pio\build\fuses_bootloader\libd41\libWire.a
Compiling .pio\build\fuses_bootloader\FrameworkArduino\UNO_compat.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\USBCore.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\WInterrupts.c.o
Indexing .pio\build\fuses_bootloader\libf86\libSPI.a
Indexing .pio\build\fuses_bootloader\libd41\libWire.a
Compiling .pio\build\fuses_bootloader\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\abi.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\api\Common.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\api\IPAddress.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\api\PluggableUSB.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\api\Print.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\api\RingBuffer.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\api\Stream.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\api\String.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\hooks.c.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\main.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\new.cpp.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\wiring.c.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\wiring_analog.c.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\wiring_digital.c.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\wiring_pulse.S.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\fuses_bootloader\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\fuses_bootloader\libFrameworkArduino.a
Indexing .pio\build\fuses_bootloader\libFrameworkArduino.a
Linking .pio\build\fuses_bootloader\firmware.elf
Checking size .pio\build\fuses_bootloader\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   0.1% (used 4 bytes from 6144 bytes)
Flash: [          ]   1.6% (used 804 bytes from 49152 bytes)
Building .pio\build\fuses_bootloader\firmware.hex
Configuring upload protocol...
AVAILABLE: atmelice_updi
CURRENT: upload_protocol = atmelice_updi
Looking for upload port...
Uploading .pio\build\fuses_bootloader\firmware.hex
avrdude: usbhid_open(): No device found
avrdude: jtag3_open_common(): Did not find any device matching VID 0x03eb and PID list: 0x2141

avrdude done.  Thank you.

*** [upload] Error 1
================================================================= [FAILED] Took 4.56 seconds =================================================================

Environment         Status    Duration
------------------  --------  ------------
Upload_UPDI         FAILED    00:00:04.490
Upload_onboard_usb  SUCCESS   00:00:06.283
Upload_UART         FAILED    00:00:03.803
fuses_bootloader    FAILED    00:00:04.559
============================================================ 3 failed, 1 succeeded in 00:00:19.135 =====
MCUdude commented 2 years ago

And how does PlatformIO even know that I want to use your MegaCoreX package? Because that is not in any setting.

MegaCoreX is selected when you choose board = ATmega4809, platform = atmelmegaavr and framework = arduino.

Which programmer are you using for uploading? The on-board USB connector on the Nano Every?

mikrocoder commented 2 years ago

Thank you for the explanation. That helps already once for the understanding.

I am using the original Arduino Nano Every normal with the USB cable.

What are the many names in [env ...] in the platformio.ini for? I don't have a menu to choose from like in the Arduino IDE. How do I know which name to use?

In comparison, the configuration in Microchip Studio is totally simple.

This is my 5th attempt to try PlatformIO for months now.

MCUdude commented 2 years ago

PlatformIO is fantastic once you can wrap your head around it. If you're using VSCode, you can select which environment you want to use. For other projects, I have one environment for uploading over UART, and another environment for uploading using an ISP programmer. You can easily change the environment you're using in VSCode:

image

Here's a working PlatformIO.ini I recently used with an Arduino Nano Every:

[platformio]
default_envs = Upload_UPDI ; Default build target

; Common settings for all environments
[env]
platform = atmelmegaavr
framework = arduino

; TARGET SETTINGS
; Chip in use
board = ATmega4809
; Clock frequency in [Hz]
board_build.f_cpu = 16000000L
; Current pinout
board_build.variant = nano-every

; BUILD OPTIONS
build_unflags =
build_flags = 

; SERIAL MONITOR OPTIONS
; Serial monitor port defined in the Upload_UART environment
;monitor_port = 
; Serial monitor baud rate
monitor_speed = 9600

[env:Upload_UPDI]
; Upload protocol for UPDI upload
upload_protocol = jtag2updi
board_upload.use_1200bps_touch = true
upload_flags =
mikrocoder commented 2 years ago

Thank you very much. Now I know what the [env] are for. That is, all the settings of a [env] are valid until the next [env] definition and so on? I will definitely have some more questions in the near future.

How does it now know with the new settings that it is COM port 7? Okay, has a automatic detection. :-)

MCUdude commented 2 years ago

That is, all the settings of a [env] are valid until the next [env] definition and so on?

Environments are "isolated", but you can extend an environment like so:

[env:Upload_UPDI]
; Upload protocol for UPDI upload
upload_protocol = jtag2updi
board_upload.use_1200bps_touch = true

[env:Upload_UPDI_57600_baud]
extends = env:Upload_UPDI
upload_flags =
  -b57600

I'll recommend you to read through the PlatformIO docs. There's lots of valuable information there.

mikrocoder commented 2 years ago

Thanks. My problem is that I do not understand the logic and syntax of the .ini. It is not logical for me. This also shows me your new example. A flag for a new baudrate? I don't have the logic for that.

Why once board_upload.use_1200bps_touch = true and the other time upload_flags = -b57600

Shouldn't default be 115200?

How do you even know that you have to set this with these values for example? board_upload.use_1200bps_touch = true

I wanted to include my toolchain first. platform_packages = C:/avrToolchain/avr-gcc-11.3.0_mingw32_binutils2.38/bin Does not work either.

Tool Manager: Installing bin @ Error: Could not find the package with 'bin @ ' requirements for your system 'windows_amd64'.

MCUdude commented 2 years ago

My problem is that I do not understand the logic and syntax of the .ini. It is not logical for me

I do agree that the syntax might be a bit confusing. I try to keep various templates around because it is difficult to remember all the keywords. There's lots of info here though: https://docs.platformio.org/en/latest/projectconf/index.html

This also shows me your new example. A flag for a new baudrate? I don't have the logic for that.

It was just a dumb example to show you how extends works. There's no reason to not use 115200 baud. upload_flags is just flags passed directly to Avrdude, and I happen to remember the correct flag to specify the Avrdude baud rate. Each flag is supposed to be on a new line, indented as shown in my example.

How do you even know that you have to set this with these values for example? board_upload.use_1200bps_touch = true

The Nano Every requires a 1200bps "touch" in order to leave UART mode and enter jtag2updi mode. This line needs to be there for the 1200bps thing to happen. All I searched for was "PlatformIO ini 1200bps touch", and I found it quite quickly.

I wanted to include my toolchain first. platform_packages = C:/avrToolchain/avr-gcc-11.3.0_mingw32_binutils2.38/bin Does not work either.

Sorry, I've never used my own toolchain with PlatformIO before, so I can't help you there...

mikrocoder commented 2 years ago

Thank you for everything. Let's see how I get on. Am with the x th attempt with your help already very far come.

mikrocoder commented 2 years ago

Hello,

got this working with the toolchain. Because you helped me so kindly I show you this.

01 PlatformIO eigene avr-gcc Toolchain Picture 01 shows the hidden folder where PlatformIO stores all its toolchains according to my knowledge.

In the folder 'packages" I copied 2 of my toolchains. The 10.2 and the 11.3 version. With a path where they are actually located, I did not get it, therefore the copying. The folder names of my two toolchains I have renamed like the other existing.

toolchain-atmelavr@1.1020.0
toolchain-atmelavr@1.1130.0

The crucial thing for it to work at all are the two files .piopm and package.json in these folders. See picture 02. 02 PlatformIO eigene avr-gcc Toolchain

You can copy both files from the existing toolchains and change only the version in both files, everything else in it you leave alone. So for me once on "version": "1.1020.0", and the other on "version": "1.1130.0",

The .ini currently looks like this.

[platformio]
default_envs = Upload_UPDI

[env]
platform = atmelmegaavr
framework = arduino
board = ATmega4809
board_build.f_cpu = 16000000L
board_build.variant = nano-every
build_unflags = 
    -std=gnu++11
    ;-std=gnu++14
    ;-std=gnu++17
build_flags = 
    --verbose
    -flto
    -std=c++20
monitor_speed = 250000
;platform_packages = toolchain-atmelavr@1.1020.0  ; ok
platform_packages = toolchain-atmelavr@1.1130.0  ; ok
;platform_packages = toolchain-atmelavr@C:/avrToolchain/avr-gcc-12.1.0_mingw32_binutils2.38  ; path or anything else not in okay

[env:Upload_UPDI]
upload_protocol = jtag2updi
board_upload.use_1200bps_touch = true
upload_flags = 
lib_deps = mikalhart/Streaming@^1.0.0

How would you change the .ini to switch between the default toolchain and the other two toolchains?

MCUdude commented 2 years ago

Sorry, but I've never used custom toolchains with PlatformIO. But you may get help with this over at the PlatformIO community forums.