Looking deeper inside the PIC16F18855 datasheet [link] I found out a couple of interesting new things that deserve your attention:
- A new Constant Current Output Control for the I/O pins
- Memory models up to 32k words (equiv to 64K bytes of Flash) and 4K bytes of RAM!
- The list of Core Independent Peripherals is practically complete. Every CIP that has been introduced in the last 3 years is available on this family(!) quantities might vary with the model size and pin out obviously…
Constant Current Output Control
Frankly, the new Constant Current Output control feature is perhaps the most intriguing of the lot. In short, you get to decide what is the output current that I/O pins (participating) will produce among 4 possible values: 1 mA, 2 mA, 5 mA and 10 mA. You also get to decide if the feature applies to sourcing current (output logic 1) and/or synching current (output logic 0). Any I/O pin can be included in the scheme, regardless of its assignment to analog and digital or any number of peripheral functions.
While there is a single setting for all pins (selected) and the resolution is so coarse, I can see a huge number of possible applications to be explored for this new mechanism. Among them:
- General EMI reduction, this goes beyond the slew rate control (per pin) as it potentially limits the amount of noise on the supply lines.
- Component (BOM) reduction, as a large number of series limiting resistors could be spared. While the cost of an SMD resistor today is probably close to a milli-dollar, it is the pick and place time that can add up quickly…
- Driving 7-segment / LED displays, combining the constant current outputs with a pair of 100mA strength pins (yes, you get two of those too), without using any external components outside the LED themselves
- Linear ramp (capacitor charge time) applications, in combination with the comparators and the voltage reference (+DAC) available on board
- … your inputs here…
What I found amazing is that all of the above is available in addition to the PPS feature (the ability to connect any peripheral input/output to any digital I/O) and completely independently of the (very) wide analog multiplexers that make almost every pin of these devices an available ADC input (and/or Comparator input).
The feature is also power supply independent and will work equally nice in a very wide range from 1.8V to 5.5V although, as you would expect, with a proportionally wide linearity zone as the external load applied varies. To that end, I have been shown some preliminary data that looked excellent, but only with time a full set of characterisation data will be collected and eventually complete curves will be posted on the final datasheet (this process has typically required upwards of 9 to 12 months from release of the product, so don’t hold your breath!).
Frankly it was time for the PIC16 to graduate to the full addressing range of a typical 8-bit architecture. The PIC18 architecture still keeps the advantage with 128K byte models in production (for more than 10 years), but all applications are growing nowadays, especially when there is a communication protocol involved, and this expansion gives the latest PIC16 generation more room to breathe.
To me it is the 4K bytes of RAM though that represents the most interesting development. I am always short of RAM, weather it is to hold a VGA display buffer, a double buffer for a WAV player or program space for a BASIC interpreter…
Ok, those are NOT typical applications for an 8-bit microcontroller, but they were certainly more fun to develop because of the challenges they posed.
I am sure you will find true reasons to appreciate all the extra room…
P.S.: I will need to start preparing a second edition of the Rocket Science book now to include CCIO and ADC2…
Also see my previous post introducing the PIC16F188xx family [link]