EmbeddedRelated.com
Forums

Next logical step after 8bit uCs?

Started by Michael Noone December 6, 2004
Michael Noone wrote:
> Hi - so I've gotten to the point where I feel fairly competent with Atmel > AVRs (8 bit microcontrollers) - but I'd like to find something with a bit > more power. Specifically, I really need a chip that is capable of doing > more sophisticated math, ie 16 or 32 bit calculations, multiplication, > division, powers, etc. I know some of this can kind of be done on AVRs, but > it can't be done well, nor at the speed that I really need. So would > anybody have any suggestions as to a logical progression past AVRs would be > for me? Perhaps a more advanced microcontroller or microprocessor? Thanks! > > -Michael Noone
When ATMega's get tight, I move into AT91 ARM's. There are good GNU toolkits for both, and the AT91 can run in 16-bit instruction mode (called Thumb) if storage space is tight. -- Tauno Voipio tauno voipio (at) iki fi
In a nutshell: 32-bit internal architecture, 16-bit buses. The MC68000
and MC68010 were also 16/32 bit chips, for example.

It so happens that ARM instruction set has an optional extension,
called Thumb mode, which compresses the 32-bit instruction set into a
16-bit word (at the expense of a smaller range of source and
destination operands, mainly).

If you get started on the LPC21xx and find the performance inadequate,
you can use the exact same code [at least, the math portions of it] on
a meatier fully 32-bit ARM variant. It's an excellent learning platform
if nothing else.

Michael Noone wrote:

> Hi - so I've gotten to the point where I feel fairly competent with Atmel > AVRs (8 bit microcontrollers) - but I'd like to find something with a bit > more power. Specifically, I really need a chip that is capable of doing > more sophisticated math, ie 16 or 32 bit calculations, multiplication, > division, powers, etc. I know some of this can kind of be done on AVRs, but > it can't be done well, nor at the speed that I really need. So would > anybody have any suggestions as to a logical progression past AVRs would be > for me? Perhaps a more advanced microcontroller or microprocessor? Thanks! >
I'd go for a REALLY low cost option- and old PC. You've done the little micro bit. 16 bitters aren't a lot different. Look at the opposite end of embedded design- using a complex board, lots of memory, operating systems etc. And you can get started for 30 Euros for a secondhand PC if you haven't got one already. Start with the obvious- DOS, Borland C++ etc- and work up to Ecos, embedded Linux or whatever. You can use the parallel port for IO to start with, then if it's an old ISA machine design yourself some specialist thingies to make it do something interesting. Paul Burke
In article <Xns95B77802AA764mnooneuiucedu127001@63.240.76.16>, Michael
Noone <mnoone.uiuc.edu@127.0.0.1> writes
>Hi - so I've gotten to the point where I feel fairly competent with Atmel >AVRs (8 bit microcontrollers) - but I'd like to find something with a bit >more power. Specifically, I really need a chip that is capable of doing >more sophisticated math, ie 16 or 32 bit calculations, multiplication, >division, powers, etc. I know some of this can kind of be done on AVRs, but >it can't be done well, nor at the speed that I really need. So would >anybody have any suggestions as to a logical progression past AVRs would be >for me? Perhaps a more advanced microcontroller or microprocessor? Thanks! > >-Michael Noone
You should also try the "universal" 8 bit processors the 8051 family and probably the PIC16 as well. Then move on to the 32 ARM. The point of embedded, unlike desktop stuff, is you usually can't just add more power or memory. If the Microwave cooker needs to be produced at 99 USD (to sell for 250 USD) and the other components come to 98 USD you get 1 USD for the micro. That's how it works in embedded. the micro is part of something else that dictates many of the parameters. Other times it is power consumption, size of package, peripherals required. In any event the 8051 and PIC are the most common 8 bit families and both are quite different to the AVR even when using C. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ \/\/\/\/\ Chris Hills Staffs England /\/\/\/\/\ /\/\/ chris@phaedsys.org www.phaedsys.org \/\/ \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Paul Burke <paul@scazon.com> wrote in
news:31lacpF3bvvrhU1@individual.net: 

> Michael Noone wrote: > >> Hi - so I've gotten to the point where I feel fairly competent with >> Atmel AVRs (8 bit microcontrollers) - but I'd like to find something >> with a bit more power. Specifically, I really need a chip that is >> capable of doing more sophisticated math, ie 16 or 32 bit >> calculations, multiplication, division, powers, etc. I know some of >> this can kind of be done on AVRs, but it can't be done well, nor at >> the speed that I really need. So would anybody have any suggestions >> as to a logical progression past AVRs would be for me? Perhaps a >> more advanced microcontroller or microprocessor? Thanks! >> > > I'd go for a REALLY low cost option- and old PC. You've done the > little micro bit. 16 bitters aren't a lot different. Look at the > opposite end of embedded design- using a complex board, lots of > memory, operating systems etc. And you can get started for 30 Euros > for a secondhand PC if you haven't got one already. Start with the > obvious- DOS, Borland C++ etc- and work up to Ecos, embedded Linux or > whatever. You can use the parallel port for IO to start with, then if > it's an old ISA machine design yourself some specialist thingies to > make it do something interesting. > > Paul Burke >
This is an option I've thought about - but for now I'd really like to stick with physically smaller solutions, as most of what I work on is very small, and something the size of a full computer just isn't an option... -Michael
Tauno Voipio <tauno.voipio@iki.fi.NOSPAM.invalid> wrote in
news:ED3td.351$Eb.330@read3.inet.fi: 

> Michael Noone wrote: >> Hi - so I've gotten to the point where I feel fairly competent with >> Atmel AVRs (8 bit microcontrollers) - but I'd like to find something >> with a bit more power. Specifically, I really need a chip that is >> capable of doing more sophisticated math, ie 16 or 32 bit >> calculations, multiplication, division, powers, etc. I know some of >> this can kind of be done on AVRs, but it can't be done well, nor at >> the speed that I really need. So would anybody have any suggestions >> as to a logical progression past AVRs would be for me? Perhaps a >> more advanced microcontroller or microprocessor? Thanks! >> >> -Michael Noone > > When ATMega's get tight, I move into AT91 ARM's. There are good GNU > toolkits for both, and the AT91 can run in 16-bit instruction mode > (called Thumb) if storage space is tight. >
So - what kind of costs would I be looking at for getting into ARMs? How are they programmed? One of the things that attracted me to AVRs was how inexpensive they are - all I had to do was buy/make an AVRISP and I was good to go. Being a struggling college student cheap is mighty appealing! -Michael
bungalow_steve@yahoo.com wrote in news:1102359918.878997.29990
@f14g2000cwb.googlegroups.com:

> > Michael Noone wrote: >> Hi - so I've gotten to the point where I feel fairly competent with > Atmel >> AVRs (8 bit microcontrollers) - but I'd like to find something with a > bit >> more power. Specifically, I really need a chip that is capable of > doing >> more sophisticated math, ie 16 or 32 bit calculations, > multiplication, >> division, powers, etc. I know some of this can kind of be done on > AVRs, but >> it can't be done well, nor at the speed that I really need. So would >> anybody have any suggestions as to a logical progression past AVRs > would be >> for me? Perhaps a more advanced microcontroller or microprocessor? > Thanks! >> >> -Michael Noone > > Microchip dsPic, a 16 bit digital signal controller, has a nice mix of > DSP and microcontroller features, it has single cycle multiplication
as
> well as a divide instruction so its more then capable to handle > sophisticated math. Its the smallest fastest chip out there (6mm
square
> in one package). > > ARM is another option, 32 bits, but has multiple cycle multiplies and > no divide instruction, I would consider it a "weak" DSP processor, > maybe its good enough for you. >
So is it still possible to go about dividing when there is no divide instruction? I mean I can certainly see a way to hardcode it, but I would imagine that to be very processor intensive, especially since I'd be dealing with 32bit numbers. So - is there any "trick" to doing this, or do you really just have to hardcode it? Thanks! -Michael
Guy Macon <_see.web.page_@_www.guymacon.com_> wrote in news:10r988kn05pck22
@corp.supernews.com:

> > 4-bit uCs, of course. As your embedded systems engineering skills > improve, you learn how to do more and more with less and less. > > I hope this helps. :) > >
Hmmmm - I think I'll take a pass on that for now. We had to do some 4 bit uP work in a class last year, and that was more than enough of 4b for me! -Michael
Vadim Borshchev <vadim.borshchev@127.0.0.1> wrote in
news:opsils3vbly1ubid@news: 

> On Mon, 06 Dec 2004 20:06:50 GMT, Michael Noone > <mnoone.uiuc.edu@127.0.0.1> wrote: > >> So I took a look at the Philips LPC21xx chips, and there's one thing >> I don't understand about them: They say they're 16/32 bit. I haven't >> encountered anything like this before - what exactly is meant by >> that? > > ARM core can run in two modes: ARM (32-bit commands) and Thumb (16-bit > commands). Thumb code takes less space, while ARM code executes > faster. Conditional execution of commands is not possible in Thumb > mode (obviously apart from branches), also commands always modify > flags. > > You can switch between modes easily and have both ARM and Thumb code > in the same binary module -- Thumb to save space, ARM for fast > routines. > > The registers are 32-bit in both modes. > > Have a look at http://www.arm.com/documentation/ There is also > news:comp.sys.arm newsgroup. > > > Vadim
So am I right in thinking that there are some Thumb chips that can only run in thumb mode, while there are other full ARM chips that can run in both thumb and ARM modes? Thanks! -Michael Noone
On 2004-12-07, Michael Noone <mnoone.uiuc.edu@127.0.0.1> wrote:

>> ARM is another option, 32 bits, but has multiple cycle multiplies and >> no divide instruction,
Not have a divide isntruction is fairly common for DSPs, isn't it? They're generally optimized around multiply-add sequences.
>> I would consider it a "weak" DSP processor, maybe its good >> enough for you. > > So is it still possible to go about dividing when there is no > divide instruction?
Of course.
> I mean I can certainly see a way to hardcode it, but I would > imagine that to be very processor intensive, especially since > I'd be dealing with 32bit numbers. So - is there any "trick" > to doing this,
The trick is to avoid doing division.
> or do you really just have to hardcode it?
Not sure what you mean by "hardcode it". -- Grant Edwards grante Yow! Here I am at the flea at market but nobody is buying visi.com my urine sample bottles...