Can you program ATmega 32u4 and 4809 with FTDI?

I have been getting some conflicting results about programming the 32u4 and 4809. Some say to use UPDI for the 4809, but I can't find any good resources for that. For the 32u4 I saw that some people used ISP programming and I couldn't get that many results for resources on that.
I want to have 1 type of programming interface so that I don't have to use multiple programmers.

I have seen FTDI looks good, but I am not sure.

Did the links provided in response to your previous post here not work for you for the 4809?

I think the initial bootloader programming will be different as the 2 chips use different methods - ISP vs UPDI. Once you have the bootloaders installed, then you can use the same type of serial programming interface to load sketches into both chips.

I think the initial bootloader programming will be different as the 2 chips use different methods - ISP vs UPDI. Once you have the bootloaders installed, then you can use the same type of serial programming interface to load sketches into both chips.

Yea, that was the problem, I am not that familiar with UPDI or ISP programming as this is my first step into using the ATmegas by themselves

Here's one:

The 32u4 and 4809 have different programming tools.
32u4 can be programmed with ICSP, but not with UPDI.
4809 can be programmed with UPDI, but not with ICSP.

In order to use serial programming, you most need to program the bootloader first.
And if you want to use both of these two uCs, both ICSP and UPDI methods need to be used.

As mentioned in the previous topic, FTDI alone can execute either programming method.
But you have to operate the tool yourself, not from the Arduino IDE.

If you want to easily program your bootloader from the Arduino IDE, get another Arduino and follow the linked steps as many other posters have introduced.

I am trying to make a keyboard with the ATmega 32u4 and the ATmega 4809. I have them connected over Serial. This presents me the problem of

1: uploading code to one ATmega without uploading it to the other,
2: how would I burn the Bootloader to the ATmega 4809 or 32u4?

Re 2:
With the 4809, I asked a similar question here. There's a simple sketch that you can load into an Arduino (or compatible) that can program the 4809 via UDPI.

I started out with this page as a guide. I had a USB-Serial adapter module so my setup resembled the FTDI variant on that web page.

There's an excellent guide here on how to build your own UDPI programmer using an Arduino Nano. I used that to burn the bootloader into the 4809.

1 Like

Just reading above again - some good links there , think I used them too !!

Just adding my bit …

Have a look at “Mighty core” and it’s documentation , although you don’t need a bootloader with a 4809 , this will make Arduino programming a bit simpler via one of the UARTS.
As said , You will need to make a programmer from a normal Arduino to install the boot loader via the single programming pin, then use an ftdi programmer for the UART ( or Arduino again) for uploading your sketch . Mighty core allows you to choose which UART you want to use for programming, which will solve your problem

I have made some 4809 development boards , if anyone interested .

Btw why not just buy a Nano every , all done for you !

You can burn the bootloader to ATmega4809 using pyupdi or pymcuprog without another Arduino.
In this case all you need is a USB serial adapter like FTDI.

The pymcuprog is from the Microchip, it's manufacturer of AVR.

I am making a keyboard, and the Arduino Nano Every doesn't have enough pins. The whole reason I want to use the 4809 is because I need more pins.

Why not port expanders or shift registers; and in case of analogue inputs, multiplexers.

I am not familiar with those kind of things

MightyCore is awesome for the ATmega1284P and friends, but the one for the ATmega4809 is called MegaCoreX:

Time to research; it's probably a lot cheaper, both in costs and in time for coding

PCF8575 8-bit bidirectional
23017 or 23S17 16-bit bidirectional

74HC595 8 bit output
74HC165 8 bit input

Thx - I always get them mixed up!

Do you need to burn a Bootloader to program the 32u4 and 4809 with the Arduino IDE? If I don't burn the Bootloader, will I need to use ISP for the 32u4 and UPDI for the 4809?

I merged all the related topics. There is just too much overlap in their subject matter.

@awesomeklashl. It's fine and sometimes best to break an inquiry into multiple distinct subjects and create a topic for each, but if you do that you must carefully manage the topics so that they don't end up converging into parallel discussions of the same subject matter. This ends up wasting the time of people trying to help when they unknowingly duplicate the efforts others have already made in the other thread. For this reason, creating parallel topics of that sort is not allowed here.

Boards platforms typically use the Arduino IDE's "Burn Bootloader" functionality to run two distinct processes:

  • Set configuration fuses on the microcontroller
  • Flash the bootloader binary to the microcontroller

The configuration fuse settings the microcontroller ships from the factory with are often not the ones you want. For this reason, it is common to run a "Burn Bootloader" operation even when you have no need for a bootloader to be flashed to your microcontroller. By doing this, you are ensuring that the fuses are configured for the Arduino board definition you are using in the IDE. Some boards platforms even use "Burn Bootloader" exclusively for setting fuses in cases where flashing a bootloader is either not applicable or not needed.

Once you have a microcontroller configured correctly, you can use the Arduino IDE's Sketch > Upload Using Programmer functionality to flash sketches directly to the microcontroller via the programmer without the need for a bootloader.

The Arduino IDE is not essential for any of this. You are welcome to use AVRDUDE directly (Arduino IDE just generates and runs AVRDUDE commands; there's no magic to it), or one of the other AVRDUDE wrappers. But the Arduino IDE is a convenient way to do this.


Thanks for the clarification!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.