What do YOU want on an Xmega Arduino?

Hi,

I am the originator of the LEDuino at http://siliconrailway.com. Part of my life is designing all sorts of hardware for processors from 8 pin AVRs all the way up to PowerPC based embedded Linux platforms. My colleagues and I have already started to define a new ATXmega based platform, and we would be very interested in doing it for the Arduino community.

But to be successful we need to get a feel for what you want on the board, so I am going to start a poll to try and figure it out!

If you wish to give more detail, please respond in this thread. Then maybe in a week or two we can sum up the results and see where we might go from there.

John the geek

Well the XMegas certainly have a lot of exciting new features: events, DMA, fast A-to-D, D-to-A, multiple SPI/TWI/USARTs, and timers. How to take advantage of them will take some thought.

The first question is what size package to use. I think my choice would be to go for a bigger package, and make a quantum jump form the present offerings. So, the line would be ATMega8 --> ATMegaa168 --> XMega. Perhaps one of the smaller packages could replace the 168s, eventually.

A larger one would let us use on-board RAM, and open up a lot of uses: buffers for sound, etc. This would probably mandate using the DMA capabilities. Also we could have more i/o, more peripherals, and good make good use of the event system.

How we translate these into the software remains and will need some smart people to come up with a useful but simple way of using these features, especially the event system and DMA.

David

Isn't "wiring" essentially an arduino superset with a bigger CPU/more IO/etc? How come "wiring mini" isn't the obvious next step above Arduino? (I can't tell whether the wiring hardware is "open source" or not, and I don't see schematics or CAD files - is that the problem?)

In general, I'd like to see some discussion on moving arduino to bigger hardware "in general" before we jump on any specific bandwagon. How DO we handle more pins with more function in a way that is at least somewhat backward compatible? It's a complex topic regardless of actual CPU choice.

And I'd rather see Arduino expand to a different architecture instead of sticking to AVR cpus. In particular, the ARM cpus are faced with a bewildering array of development tools and versions and such, making them pretty unapproachable even to hobbyists with moderate experience; I'd love to see an "Armuino" simplified development environment and simple hardware implementation addressing some ARM part. (The STM32 looks good; has USB on board, so it could potentially eliminate the FTDI chip.)

Using a more complex chip (ARM or Xmega or PIC32 or whatever) might start to require that the board run something that resembles an operating system, instead of a trivial bootloader and set of libraries. (for example, the hypothetical STM32 OS would provide the USB->serial conversion needed to make the arduino sketches think they still have a serial port available...)

I believe the success of Arduino is due to two features:

1) Low Cost 2) Simple Results Oriented Feature Set (i.e. Read Analog Input)

We may be at a forking point in Arduino developement. Possibilities:

  • Lowerest Cost Platform
  • Web platform
  • Full Real Time Linux

I personally would like to see maximum mileage made of Simplicity and Low Cost.

I’m not convinced some of these forks are realistic or necessary. Isn’t the gumstix project still going? ARM (IIRC), linux, and base price of US$100. The wiring board buys 32 bits, and the recently announced Sanguino adds to the IO pin count as well as adding a second UART while maintaining the software compatibility with the existing environment.

If some software development can get us an Arduino/NG/Diecimilla compatible board that has all the spiffy features of the ATxmega that would be awesome, but I wouldn’t want to see the project die because of dilution of resources.

The ATxmega still appears to be vaporware, anyway. I was a bit fooled by the 1-week lead time that Digikey’s online order form have me, but the TBD specs for voltage levels in the spec sheet brought me back to reality. How long have we been hearing about the 328? Is it even generally available yet?

-j

I agree that we have to watch out we don't wreck the Arduino model. However, we have to move forward, as we have done in the past: Mega8-->Mega168 and RS232 --> USB.

I htink the XMega is a very plausible next step. More i/o, connectivity and nifty features for about the same price. I would think that the software would remain essentially the same except for some extensions.

David

So, the line would be ATMega8 --> ATMegaa168 --> XMega.

That would depend on who finishes first:-

ATMega8 --> ATMega168 --> XMega --> Atmega1280

or maybe

ATMega8 --> ATMega168 --> Atmega1280 --> XMega

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1219300997/3#3

I might point out that Parallax still sells "Basic stamp 1" boards. Presumably lots of them, since they have several varieties...

And your point?

David

The ATmega8 to 168 migration is a relatively no-brain drop in replacement that doesnt really affect the strategy of the Arduino concept. As is I assume the 328 migration will be as well when/if that ever happens.

Now, Dave has hinted at a big Arduino whatever that turns out to be. The question here is at what point is it no longer an Arduino? When should a fork leave the Arduino name behind? Im all for a more powerful uC with a compatible language that allows an entry point for non-ubergeeks but I think riding on the coattails of the Arduino concept sems a stretch.

To be perfectly honest Id like to see an even smaller uC! Ive used the PICAXE 08M for years and its surprising what can be done with an 8pin uC.

$.02

-B

I can find attraction in both side of the deal, but I guess what is attractive in the Arduino project (why I got into it, at least) is the ease of use. Having more I/O, USART, etc... can be fine, but it will be blocking a lot of newcomers and not-so-technical people already using the Arduino platform. Unless someone comes with a magic solution ^^

I got to agree with bwevans : why not extend the family with some smaller chips ? Maybe the architecture is completely different and so the arduino bootloader cannot be ported to the Tiny family, in which case the 32 leads TQFP/MLF package is the smallest Mega possible, but wouldn't it be nice to have a small 8pin SOIC package chip from the Tiny series in the family ? I guess a lot of people would be interested in those kind of chips : easy to etch your home PCB & small form factor for embedded projects. I'd go with it for, say, a binary watch.

I just realised my post wasn't really in the subject of the thread, so please excuse me ^^

BS1 still sells

And your point?

A bigger, badder, arduino may not be what anyone really needs. It's certainly not what EVERYONE needs. Don't forget that once you hit a price of about $100, the options available multiply immensely. EVERYTHING is "about $100", from Rabbitcore boards, to 8051 BASIC boards, to ARM eval boards to low-end PDAs to used desktop PCs... (Of course, in another thread I also opined that perhaps "cheaper" wasn't what the world needed either...)

Since floating this idea I have found out that their is already a big brother to the Arduino, the Sanguino - http://sanguino.cc. The Sanquino people have added the code necessary to support their hardware - based on the ATmega644P.

The Sanguino people espoused a philosophy worth emulating - inspired by Arduino. They needed something bigger for the RepRap project so they based it on the Arduino. Much the same as we did with the LEDuino by adding interfaces to the Arduino to make it more useful in other niches. The extended Arduino's are not meant to supplant the Arduino - they are meant to reach an extended market.

Trying to move the Arduino concept to other processor families would, in my opinion, mean a fork in the project. So far all of the things associated with Arduino, Wiring, Arduino-328, and a possible Arduino-Xmega are based on the AVR-GCC port of the GNU compiler. Whilst I would almost literally salivate to see something based on the LPC2378 (ARM7) with integrated Ethernet, USB, CAN and lots of other stuff with 512K of Flash, the Wiring/Arduino code generation system would need to change significantly to accommodate it. For example just for the USB port, what device classes do we implement? Sure, you need a virtual COM port, but somebody will want HID or Mass Storage before long. For the Ethernet, do we integrate an entire TCP/IP stack into the codebase?

As for little chips, like the ATtiny's. Well, just a few months ago a colleague and I were working away on a design project and chatting on Skype, we are located several thousand kilometres apart, I had used an ATtiny45/85 in a design. But we need maybe a little more code space and an IO pin or two more. So we looked at using the ATtiny84. But when you get down to it, the ATmegaX8 family is barely any more expensive! The ATmega168 costs around $US2.56 on 100's, the ATtiny84's are $US2.11. So we changed - we went for the ATmega168 we - reduced the variety of devices we were using - saved money by buying larger quantities - reduced our coding efforts - opened the way to using the Arduino approach - spurred the development of the LEDuino

and all of that for about 40 cents per board.

In my professional life right now one issue I need to address is "platform creep". We are finding that over the years we have collected an array of different processors in things and we have different development environments, different assemblers/compilers, different limitations all resulting in lots of extra cost and many headaches. Within the Arduino movement the move to other platforms would produce similar results. That would inevitably result in the 'dilution' some people have referred to.

I am not against platforms using bigger processors - I design with other CPU's both conventional and soft-core every day. But so much of what the Arduino movement is all about isn't addressed by the 'big' end of the market. And as for price point, well for $100 you can get an AVR32 based board with Ethernet ports and Linux. For $145 you can get an ARM-Cortex-A8 based board with Linux - if that is what you need. But the success of the Arduino, BASIC-Stamp and a number of other things like them is due to the low entry cost. And the Arduino philosophy of low hardware cost, simple replication and an easy to use development environment is VERY VERY hard to resist.

Sorry for the longpost, I hope it isn't TOO boring.

The Geek.

I can find attraction in both side of the deal, but I guess what is attractive in the Arduino project (why I got into it, at least) is the ease of use. Having more I/O, USART, etc... can be fine, but it will be blocking a lot of newcomers and not-so-technical people already using the Arduino platform. Unless someone comes with a magic solution ^^

Melka,

I think the answer is already there. The Sanguino people have ported Arduino to the ATmega644P, I suspect that we will see the ATmega328P supported when it becomes available, all of this without taking anything away from the Arduino simplicity. Far from being blocking surely the inclusion of more I/O, USARTs and whatever within the same simple environment is enabling?

The Geek

Prior to Arduino I had no electronics, microcontroller, or programing experience. With the help of the website, forum, playground, and a growing library of books I feel more confidant as time passes. Some of the things that for me make Arduino great are the use of C code as opposed to basic, multiple platform release, website/community, etc.. One thing missing, and a large thing in my opinion, is multi device support. There are times where I would just rather use an 8-pin micro for various reasons and others where I would like to take on a large led cube but lack the IO. As mentioned previously Picaxe offers from an 8-pin to a 40-pin microcontroller, the right size and features for the right job. But, for me at least, it ends there. No cross platform and it's basic, I haven't been learning C for the past year to go there and my only windows computer has been collecting dust for some time now. Plus Arduino rocks.

My point is I have read some posts about going bigger leading to a loss of simplicity/low cost for entry level hobbyists and going smaller not being feasible. Why no verity? Why not offer say.. Arduino classic for the beginner, and 8-pin less feature device/dev board for the smaller projects which would also extend battery life I assume, and a larger more powerful feature rich device once a user gets more advanced/adventurous. An Arduino family so to speak.

Please note I mean no disrespect with this post and I am grateful for what the Arduino team has done and provided. So much so I would like to continue to utilize the IDE and participate in the community but not be locked into a single device.

Thank you for your time and again for the Arduino.

Well the XMegas certainly have a lot of exciting new features: events, DMA, fast A-to-D, D-to-A, multiple SPI/TWI/USARTs, and timers. How to take advantage of them will take some thought.

The first question is what size package to use. I think my choice would be to go for a bigger package, and make a quantum jump form the present offerings. So, the line would be ATMega8 --> ATMegaa168 --> XMega. Perhaps one of the smaller packages could replace the 168s, eventually.

A larger one would let us use on-board RAM, and open up a lot of uses: buffers for sound, etc. This would probably mandate using the DMA capabilities. Also we could have more i/o, more peripherals, and good make good use of the event system.

How we translate these into the software remains and will need some smart people to come up with a useful but simple way of using these features, especially the event system and DMA.

David

It is possible today to extend GPIO, ADC and add a lot of peripherals to the Arduino board using i2c devices... and the cost is very low.

I think the success of arduino boards and clones is their simplicity. Making a LED blink is just a few lines of code, instant success is guaranteed.

Noobs don't want to (and maybe cannot) deal with difficult setup procedures, setting registers and so on. They need a "just do what I want" environment, which is what the current IDE is.

The only limits I've run into so far are: a) RAM, b) FLASH c) SPEED

Having more MIPS/RAM/FLASH at hand is nice, maybe for running FFT or doing some simple form of image acquisition. But not at cost of simplicity, if it ain't broken don't fix it.

RAM would seem to be the big issue for most Arduino users. The C/arduino environment sort of encourages un-careful use of RAM because using flash for constants make the program much more complicated.

I'm curious as to what sort of sketch caused you to run into speed problems? Short of floating point, Arduino is pretty zippy...

I think the success of arduino boards and clones is their simplicity. Making a LED blink is just a few lines of code, instant success is guaranteed.

Noobs don't want to (and maybe cannot) deal with difficult setup procedures, setting registers and so on. They need a "just do what I want" environment, which is what the current IDE is.

The only limits I've run into so far are: a) RAM, b) FLASH c) SPEED

Having more MIPS/RAM/FLASH at hand is nice, maybe for running FFT or doing some simple form of image acquisition. But not at cost of simplicity, if it ain't broken don't fix it.

Yes, I totally agree. The plan would be to increase capacity: greater clock speed, more flash, ram, eeprom, more ports, and more serial, I2C, SPI, while retaining the essential simplicity that is the forte of the Arduino platform.

I do not think this prevents adding some more features -- whether these would be integrated or be added as library/extensions needs to be decided. My hope is that they can be integrated if a simple and clear model/paradigm can be found.

Optimistically, David

I'm curious as to what sort of sketch caused you to run into speed problems? Short of floating point, Arduino is pretty zippy...

a) There's a floating point routine for HSV color space in my rgb matrix project. Need to convert it to integer math. b) I built a device that polls 2 quadrature encoders with an ISR and that maxed out at 500Hz sampling frequency. There is too much code in the ISR, so some more MHz would have been nice. I could have used pin change interrupts, but that would have forced me to do signal conditioning (threshold, noise reduction...) with some more hardware. Now it's all done in software inside the ISR. That way these parameters can be changed by users and saved to eeprom.