didier:
I want to try something similar but flat without any banking.
Why not use a modern PIC that has a flat memory space? You’re all ready familiar with PICs and apparently have the tools to program them so that would seem like a logical decision.
Keep in mind that an Arduino is not a microcontroller. It’s a development platform based around an AVR. If you are used to dealing with microcontrollers at the IC level you may find the Arduino to be less flexible and a lot more expensive than you are used to.
didier:
I want to try something similar but flat without any banking.
Why not use a modern PIC that has a flat memory space? You’re all ready familiar with PICs and apparently have the tools to program them so that would seem like a logical decision.
Keep in mind that an Arduino is not a microcontroller. It’s a development platform based around an AVR. If you are used to dealing with microcontrollers at the IC level you may find the Arduino to be less flexible and a lot more expensive than you are used to.
-Bill
For hobby/student use, PIC is to microcontrollers what Yugo is to automobiles. At least IMO.
The upside to banking is the PICs can access their RAM in a single instruction cycle where the AVR takes 2. For RAM intensive applications, that can make a noticable performance difference although I wouldn’t be using 8-bit controllers from either manufacturer for memory intensive applications.
If you have the means to program PIC18’s, you might as well take a look at them. They still have memory banks but they also have an “access bank” which keeps your SFRs and the first half of RAM bank 0 accessable regardless of what bank you have selected. Indirect addressing using the file select registers makes the entire memory space linear and it has automatic increment and decrement functionality which would be good for emulating EEPROMS.
I still think the 16-bit PICs are a huge improvement over the 8-bit line.
I dislike the 8 bit PICs a lot. Love the 16 bit ones (24 series and dsPIC). They’re great, very flexible with their peripheral pin select and IRQ tables. The stack is pretty much unlimited, you make it as tall as you want. They have a flat address space and a wide hardware divider and multiplier. I’ve tried using others, but every time it’s, “well, it doesn’t have this or it doesn’t have that.” Though, the one thing I would like in a PIC that’s available with other MCUs is a 12bit AD converter. That’s the only negative I can say about them.
CraigHB:
I dislike the 8 bit PICs a lot. Love the 16 bit ones (24 series and dsPIC). They’re great, very flexible with their peripheral pin select and IRQ tables. The stack is pretty much unlimited, you make it as tall as you want. They have a flat address space and a wide hardware divider and multiplier. I’ve tried using others, but every time it’s, “well, it doesn’t have this or it doesn’t have that.” Though, the one thing I would like in a PIC that’s available with other MCUs is a 12bit AD converter. That’s the only negative I can say about them.
Agree completely. However, the prices of ARM7 (like the LPC21xx) and ARM Cortex M0/M3 (like the LPC1768) are so low, and there are so many vendors of ARMs, and such a huge community, that to me it makes no sense (to me) to use proprietary chips like PIC 16/32 or AVR32. There’s also the run-time choice of 16 or 32 bit instructions (size vs. speed) in these ARMs. And free GCC or free size-limited (OK for many student/hobby apps) professional quality IDE/compilers from IAR and Keil. And things like mbed ($0 compiler), kind of like Arduino on steroids.
That isn’t necessarily a good thing. Since ARM is only a core, all the peripheral features of the controller are unique to the particular manufacturer and there is a good chance it won’t be compatible with another manufacturer. If you change brands you will have to respin your board and change your software.
That isn’t necessarily a good thing. Since ARM is only a core, all the peripheral features of the controller are unique to the particular manufacturer and there is a good chance it won’t be compatible with another manufacturer. If you change brands you will have to respin your board and change your software.
-Bill
What multiple vendors gives you is options and competition - which may not matter to a student or hobbyist but to a commercial user it can be the difference between success or failure of a product. Today, you can get ARM Cortex MCU's at less than PIC16 prices with far higher performance and and vastly superior peripheral sets.
rmteo1:
What multiple vendors gives you is options and competition - which may not matter to a student or hobbyist but to a commercial user it can be the difference between success or failure of a product.
I agree completely but that wasn't the point I was making. Having options also keeps the price of PICs and AVRs down as well.
Today, you can get ARM Cortex MCU’s at less than PIC16 prices with far higher performance and and vastly superior peripheral sets.
If only the real world applications required the fastest MCUs with the most peripherals all the time. ARM isn't the be-all end-all solution to the embedded world. High-end ARMs still don't offer determinism although the M0 core has the ability but with the footnote that the memory access has to be deterministic too. The LPC1102 is about as basic as an ARM controller comes and with the exception of its unnecessarily powerful core in a 16-pin BGA package, it has similar peripheral functionality to the better PIC16F range of devices. Through Digikey it's about $2.38@1000 where PICs can be had in single quantities at that price.
ARM has its place in the higher end of the embedded world. They have been making inroads into the areas dominated by the 8/16 bit world but they aren’t competitive in many simpler designs which are owned by PICs, AVRs, and even 8051s.
phalanx:
…Having options also keeps the price of PICs and AVRs down as well.
-Bill
The blue arrowed 32K Flash device (CoreMark of 43+, a PIC18 is <1.5) in the table is $0.85 in quantity (the red arrowed 128K device $1.40). All devices also have single-cycle multiplication and hardware division, an RTCC with backup registers and separate power domain, DMA controller, temp sensor, 2 watchdog timers (independent and window), CRC calculation unit, 96-bit unique ID, etc. What can you get in a PIC for the same price? Even if I did not need all of its features, the smaller device will do anything a PIC16/18/24 can and probably some PIC32's applications as well. Big advantage from a developer's viewpoint is that only a single tool chain is needed and any routines developed can be used in the smallest to the largest applications.
Which part is the blue arrowed one? That is a lot of punch for the money but the package is still fairly large compared compared to what’s available and the 16-pin M0s from NXP are pretty expensive.
Package size is a function of number of pins. A 7x7mm. LQFP-48 is still pretty small compared to equivalent PIC16 packages. Also, an NXP LPC1111FHN33/102,5 (Cortex-M0) in a 7x7mm. 32-pin HVQFN33 package is priced a $0.65 in quantity.
I’m not trying to win an argument here or wanting to convert anyone to my choice of MCU - there is absolutely nothing to be gained from that. However, I am always looking for more efficient and/or less expensive means to accomplish these goals. If anyone can show me alternatives (using hard data) I am more than willing to consider them - if I had maintained a closed attitude, I would still be using PICs.
Getting back to the topic on hand, when you are up to higher end of PICs (those in the $4-6 range in quantity), here is an example of what’s available from the competition (up to 1MB FLASH, 128K RAM, 100-LQFP to 256-BGA packages - note the highlighted peripheral blocks).