[fpc-devel] Circular references and forward declarations

Marco van de Voort marcov at stack.nl
Wed Jan 6 14:50:39 CET 2010

In our previous episode, Wimpie Nortje said:
> Marco van de Voort wrote:
> > Yes, but from what I remember it was canceled because the amount of
> > periphery on the chip is poor. I also looked at ARM, but while there is more
> > choice there, it is fragmented over multiple vendors, with multiple
> > toolchains (if a free one exists at all)
> >   
> What was canceled? The AVR devices is certainly not and neither are the 
> GCC toolchains (one for 8b and one for 32b).

Our investigation into AVR.

> > PIC32 is only interesting because it is slightly faster and has more mem.
> > But that would be more a future proofing thing, since we don't really lack
> > it atm. 
> I don't want to start a AVR/PIC fight because it always ends up in a 
> religous war and this is the wrong list anyway. However, some of my 
> reasons for moving from PIC to AVR are:

I've found that most of those sentiments are based on old arguments that
don't go nowadays. Such discussions could be kept on track ( and
interesting) if you simply name numbers.

> - AVR is faster,

microchip 16-bit maxes at 40 or 50MIPS. Our is 40MIPS.
32-bit goes higher, 80MIPS or so.

We keep "speed" mostly in reserve for unexpected problems we have to
improvise on . Most of the normal functionality ( a shift register, encoder
based) is done by hardware on the chip with no blocking or polling own code,
leaving the CPU power (and a lot of normal goodies like pins with special
purposes and timers) free for improvising in case of trouble.

> - has usually more memory, which programs faster

Only if you need it. I typically use 1 - 1.5 kb of the PIC that has 8kb (and
there are 16kb editions). PIC32 parts go up to 128kb (ram) iirc.

All 16-bit and 32-bit mem is dual ported for DMA purposes.

> - has higher code density,

No idea. Don't care. The flash of the standard part is 128kb, and I use
typically 7k, and haven't been above 11k. We have more flash because the
motorcontrol parts are more expensive, and the more expensive parts have
more flash. (typical region Eur5/chip)

> - has cheaper tools (programmers etc)

Microchip programmers start from Eur 20. (note that this particular bit has
changed significantly in the last 2 years)

> - has free toolchains for all devices

Afaik all 16-bit devices are supported by the free toolchains, but have
optimization disabled. 

> The down side is that Microchip has never to my knowledge obsoleted a 
> device, whereas Atmel quite often do obsolete parts which then requires 
> recompiling the program for the replacement part.

Another important reason was the existance of high pin count (100,144)
devices, since we have a lot of binary I/O.

More information about the fpc-devel mailing list