Why is ATmega644 not officially supported by the Arduino IDE?

I suspect because there is not an official 644P board developed (yet) by the Arduino company. But being open sourced, 3rd party developers are free to make the necessary modified files available so that their 644p product can be run under the Arduino IDE.


If you are looking into working with this chip, you can go to a Sanguino board and get one from Wulfden. Lady Ada has files for adding 644 support to the IDE. It really is not difficult.

I already started working with sanguino. I thought it would be nice to have the IDE working out of the box, since the “unofficial” support is already out there.
My initial questions should have been more like “why is not 644 officially taken under the umbrella of Arduino?”, since developing a board is not big deal, and some work to support the IDE is already out there.

It’s a good question because the 644P fits a nice (but missing) progression of memory size between the Mega8 to Mega1280 line up. The two hardware serial ports are also a nice bump in feature set.


Another nice thing about 644 is that it comes in DIP package, so everybody can solder it or plug it into a socket.

The core Arduino code was not designed to adapt easily to the hardware variations in different chips. The conditional statements that required for different chips make the code difficult to maintain. For example, if you have a look at the core arduino file named pins_arduino.c and compare this to the file of the same name in the Sanguino release, you can see how much more complicated the (functionally identical) Arduino code becomes with all those conditional statements.

To support the ATmega644. all registers and pin differences in the ATmega644 chip would need to be added as conditional statements into this file and all the other files that accesses hardware registers and pins. An even bigger burden is testing all the core functionality and all the libraries with all the variations so that each work as expected.

I use the ATmega644 (both in the Sanguino version and on a custom built board) and would be pleased if the chip was supported in the official releases. But knowing how much more effort would have to go into supporting another chip, I think I understand why they have not done so.
I do hope some day that the core code will get restructured to make it easier to support different chips. But in the mean time I am grateful for the work done by the Sanguino developers to make the 644 chip work with Arduino.

I have used the ATmega 644 for many projects as a custom build, it is simple to build and the cost of it is low.
Great chip and fully possible to use with IDE 16 as long as you use some of the basic arduino libraries.

The Mega1280 is missing the regular DIP design so hard to involve in custom build borads =(.

as long as you use some of the basic arduino libraries

Even more complex libraries, like those using I2C and SPI work fine. Essentially, SD card, Ethernet shield, LCD displays, RTCs are covered.

I think HULK means that libraries that directly accesses low level hardware registers may not work unless someone has done the work to port the hardware specific elements.

I just noticed that Uzebox is based on ATmega644.

Uzebox seems to be a intresting project :sunglasses:

mem, well that also.
But some libraries are not working that i would like to use with the ATMega 644

Actually not only libraries that are the issue, code that compiles on a arduino supported chip may not compile on the atmega 644.

Sombody pointed out that lada yada have there own files for supporting ATMega 644, where can they be found?

The uzebox does look interesting but I would guess that not much of the software would usable in an arduino environment. It looks like it has an optimized multi-tasking kernel and I doubt this will play well with Arduino code. Another thing is that its overclocked to 28MHz. But I would be interested in reading more about Uzebox code if someone here has the time to pick it apart.

BTW, the Gator board here
uses the ATmega324P chip (the smaller memory version of the 644) and has Arduino compatibility.

ATmega324 is smaller in terms of RAM (2KB), I think that is what you meant.

actually, I meant that all three type of memory (RAM, EEPROM and flash) are smaller, they are half that of the 644

Another board with ATmega644, geared towards game development, it seems: