views:

845

answers:

13

Hi all.

I have been programming with 8bit PICs for quite some time but now need to move to something more powerful.

I would like a family of chips that:

  • I can get a good (free) IDE for
  • Solderable packages, QFN or similar (arm9 out)
  • Scales well -- some of my projects will require a small chip for PWM / switches etc, but I'd ultimately like to be able to program a colour TFT LCD touch screen with graphical widgets without having to learn a new platform again! (do large ARM7TDMI chips have enough horsepower for this?)

Any tips / advice greatly appreciated.

+3  A: 

We have good experiences of Atmel's devices such as the AVR. There's a free IDE called AVR Studio which is quite good.

Joonas Pulakka
8 bits really won't cut it anymore.
Mobs
"anymore" - means what? Of course it depends on what you're doing, but 8 bits is fine for many practical purposes, widely used everywhere today. Even 4 bits suffices sometimes. And if you really need more bits, there are 32-bit AVRs.
Joonas Pulakka
I would certainly not downvote this. The question required free IDE, solderable packages and good scaling among small and big projects. AVR covers all these. You can easily cover small and medium size projects. The AVR tiny is an excellent family for small projects - ARM definitely doesn't fit for such low-end applications. Another plus is the excellent community (http://www.avrfreaks.net/).
kgiannakakis
It is a nice and easy to work with mcu, and the tools are good as well. So for the really small applications and for the hobbyist... maybe (they are much nicer that MPS430 and PICS, anyway!)
Johan
+2  A: 

If you want to stay in 8-bit families, consider using AVR micros. The big benefit is the free and very good AVR-GCC compiler (WinAVR for Windows).

However you can also consider ARM architectures. Probably the ARM7TDMI chips are the best solution for someone coming from the 8-bit world. These chips are used in iPod and other mp3 players - they are definitely up to the task you are describing. They can even run a version of Linux (ucLinux).

Many manufacturers are putting out ARM7TDMI chips: ATMEL AT91 series, NPX (Philips) LPC series, STM STR series. The GCC compiler for ARM is very good. It can be integrated with Eclipse (see YAGARTO for example). Inexpensive tools and kits are available for debugging. Have a look at Olimex. It would take you some time to set up your tools (toolchain, IDE, JTAG debuggers). If you are willing to spend some money, there are many commercial solutions that will save you a lot of time and make your life easier.

I don't know if you are using C already, but if not, you absolutely need to learn it now. You can't make the leap without it.

kgiannakakis
+2  A: 

Actually, I think the AVR architecture is not that more powerful than PIC. We've used an ATMEGA128 for controlling an 240x80 monochrome touch display. It works, but it is not something I'd recommend to do. Move on to something bigger with more bits. :)

If you want a real GUI with widgets, I don't think that getting something like this working with 8-Bit is worth the effort. Besides this, I don't think that the average embedded programmer would be able to handle this task.

I think I'd go for a ready module with 64+MB of RAM and 32 Bit (or ARM Thumb2) to control colour TFTs. Probably most 32-Bit controllers don't come in solderable packages. Dunno if you can solder BGAs with hot air, though.

ziggystar
+8  A: 

There is a interesting new wave of mcu:s with ARM Cortex-M3,M1 and M0 cores hitting the market right now. (The Cortex mcu players right now seems to be ST, NXP and Atmel).

And the STM32, maybe a interesting choice to start with. To develop you can use the gnu toolchain, OpenOCD and a cheep jtag.

Actually it is very similar toolchain/workflow as the ARM7...

As a IDE, some use Eclipse.


A little extra note, my suggestions above is all based on Open Source tools so no vendor lock in.

You should be able to switch between M3, M1 and M0 mcu with the same toolchain, if your are careful about the differences between them. So to start with a M3 based mcu and learn the ARM Cortex core could be a good idea.

And even thou there are not that many M0 mcu:s out there today I think we will see quite a lot of them in the future.

But since the majority of the customers can be found in the high volume electronic industry, form factors that can be hand soldered is probably not going to be that common. That was actually one of the reasons why I started with a cheap header board.

And last since we are talking about a 32-bit mcu in the same price scale as the medium/large sized 8-bit mcu:s, you get a lot more power for the same money.

Johan
Wasn't aware of the cortex m0 family, it seems like it could be a nice low cost addition to the m3... but there aren't many available yet and they aren't so cheap. I'd be excited if this came in a really small package!
Mobs
NXP:s Cortex-M0: http://www.standardics.nxp.com/products/lpc1000/lpc11xx/
Johan
Mobs -- CM0 can be both cheap
Dan
+1 for the Cortex. I've been programming for Cortex-M3 for a few months now. I reckon they are easier to program than ARM7 and they have about the same grunt as a 486.
Adam Pierce
+1  A: 

I assume that you know of the Arduino range of products? http://arduino.cc

It's still 8 bits, but it has an IDE and you can buy/make "shields" to add further functionality e.g. Ethernet, LCDs, LEDs, Motor controllers, Audio, etc, etc

I've used the following "Color LCD & Joystick shield for Arduino"

http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=1&products_id=10

Color LCD & Joystick shield for Arduino

Bigwave
Moving away from 8bit
Mobs
They are based on Atmel AVR ATMega chips and the customer target is people that don't know what a mcu is (twit.tv/floss61 Massimo Banz). But it is all Open Source anyway :)
Johan
A: 

The Propeller micros look like they might be a good one to try. The have a different approach than other small CPUs (they all have multiple cores running simultaneously), and depending on your application they could be just the ticket. There's also a good amount of code available, and it looks like their toolchain is available for free download.

The high degree of parallelism might be a little hard to work with the first time you try it, but after you've got it into your head, it's very nice (I've never worked with Propellers, but I've worked with small arrays of INMOS Transputers before, which also produces a highly parallel environment.)

Michael Kohne
+2  A: 

If you already know the 8bit PICs, then moving to their 16 or 32 bit PICs would let you use all the same IDE/compiler/programmer/debugger that you're used to using.

Microchip offers chips with specific support for LCDs, motor control (PWM), and (of course) switches. Check out the Explorer 16 board.

ArielP
compiler is different. 8-bit PIC is not gcc based afaik, 16 and 32-bit lines are. Though it doesn't matter much in practice.Recycling programmer and debugger HW is a minor benefit too. But of course that only makes sense if you like the device.
Marco van de Voort
While it is true 8 bit PIC's didn't use gcc, the rest do. And so do many of the alternatives. So regardless of choice, your next compiler may well be based on gcc anyway.
gbarry
+7  A: 

Consider ARM Cortex M3 based devices. That would have the advantage of not locking you into a single vendor since the Cortex M3 core is licensed to many vendors, and ARM is the most ubiquitous embedded architecture on the planet. The Cortex-M3 supersedes the ARM7 architecture, and is a considerable improvement.

Parts range from low-end parts from the likes of Luminary intended to be used in applications traditionally occupied by 8bit with a more powerful 32bit core, to more expensive devices with large on-chip Flash/SRAM and numerous peripheral devices such as USB, Ethernet, CAN, LCD drivers, external memory controllers etc.

There are literally hundreds of parts to choose, from many vendors, all with the same architecture and supporting the same tool-chains, including GNU/GCC. Parts with sufficient memory, or external memory interfaces can even boot Linux if you feel the need (uCLinux - app note), and any number of RTOS kernels, free and commercial are available.

Clifford
Since they don't have a MMU, that would be uClinux...
Johan
Good point; added note an link.
Clifford
+1  A: 

the TI MSP430 has a number of advantages:

  • can be programmed with mspgcc in codeblocks,
  • 16 bits,
  • scales well with small and big chips,
  • comes in solderable package.
Adrien Plisson
A: 

I moved to 16-bit microchip dspic (I use dpic 33Fja64mc510 and mc804 as well as pic18F67j60 for a few smaller ethernet enabled devices)

advantage:

  • many ranges available from the same vendor, usable with same toolchain. (mplab/c30). combinable development boards and support offerings, all under the same roof. Since uc programming is only a sidebusiness for me (5-10% of the time), this is important to me.
  • lots of periphery (2 uarts, 2 spi/i2c PMP, 6/8 timers etc).
  • I had a need for quadrature encoder hardware.
  • one chip solution for the most. No ram/flash etc needed. Crystal, uart + power and go. good for BOM.
  • relatively high pincount devices available.

disadvantage

  • despite being on the roadmap for last summer originally, still no 16-bit chip with embedded ethernet.
  • the high pincount MC Parts are not updated with some of the other recent goodies (RTC, peripheral pinselect). Which afaik also was originally on the roadmap.

Somehow either crisis or PIC32 led to delays on the 16-bit lines.

Marco van de Voort
A: 

I know you've said AVR isn't powerful enough, but based on your requirements (driving a touchscreen and having graphical widgets), it actually is: http://rossum.posterous.com/avr-homebrew-device-with-iphone-aspirations

Of course, even that guy suggests getting an Arm Cortex-M3, so perhaps something like this would be more what you're looking for: http://www.sparkfun.com/commerce/product_info.php?products_id=8559

pib
A: 

Depending on your requirements you could look at the .Net Micro Framework and a device such as one of the boards from DeviceSoutions.net (there are several others but this is the only brand I have used.)

This platform is good for simple interactive displays but currently does not work as a real-time OS. (I have only used .Net Micro Framework 2.0 and 3.0 newer versions and hardware maybe different.)

My favorite parts of this micro controller setup was the ability to use C# and .Net to develop embedded projects. As for a free IDE... this works great with Visual Studio Express.

(and no, I don't work for either Microsoft or DeviceSolutions.Net ... I just a fan of the platform)

Matthew Whited
A: 

I was in a similar situation (except I don’t have a free compiler requirement).

I’m an R&D consultant for medical device industry. I have been using 8-bit PICs for a long time. However, some of my projects grew large and more complex, and I needed a more powerful uC or a small single-board computer. I have moved to LPC2000 family (ARM7) with IAR compiler, and built my first instrument based on LPC2368.

The smallest controller in the LPC2000 family is 48-pin, and it requires a modest amount of external circuitry. So, for miniature projects I will keep using PICs.

  • Nick
Nick Alexeev