8-Bit
Datenbreite
(PIC12Fxxx
/PIC16Fxxx)
14-Bit-Kern-Typen-Historie
Übersichtsgrafik
zurück
zur
PIC-Flash-Controller Gesamtübersicht
Wenn man die
14-Bit-Kern-PICs
in Gruppen einteilen will, dann orientiert man sich dabei am
Besten an
der Anzahl der Pins der DIL-Gehäuse. Dabei ergeben sich dann
drei
Gruppen, deren Mitglieder direkt verwandt sind:
Am Anfang war
der
PIC16F84 ..............
Natürlich gab
es schon vorher PICs, aber deren Programmspeicher ließ sich
nur
ein Mal beschreiben und nicht wieder (oder nur mit UV-Licht)
löschen (OTP). Für den experimentierfreudigen Bastler
war das
alles andere als ideal. Erst PICs mit Flash-Prorammspeicher
machten es
den Bastlern einfach.
Wenn man sich
dann
die zeitliche Entwicklung seit dem Erscheinen des PIC16F84
ansieht,
dann erkennt man vor allem das Bestreben der Entwickler, den
Energieverbrauch der PICs zu optimieren. aber es wird auch stets
versucht, dass "Brennen" der PICs zu beschleunigen sowie mehr
Hardware
in die Chips zu integrieren.
1.
Generation
(1998..2000)
Mit dem PIC16F84 (18 Pins) kam der erste PIC mit
Flash-Speicher auf den Markt, den man praktisch unbegrenzt oft
programmieren konnte. Ein Programm musste also nicht schon beim
ersten
Mal perfekt funktionieren, man konnte Fehler nach und nach finden
und
den PIC mit immer neuen verbesserten Programmen beschreiben.
Allerdings
war der 18-beinige PIC16F84 sehr spartanisch ausgestattet.
Außer Flash, RAM, EEPROM und drei Timern hatte er nicht viel
zu
bieten.
Es folgte die PIC16F87x-Familie mit 28 und 40 Pins. Die hatten
nicht nur
mehr Pins, sondern auch eine Reihe zusätzlicher
Interface-Hardware. Außerdem integrierte man eine
Typenkennung,
die von Programmiergeräten ausgelesen werden konnte und
erhöhte den maximalen Arbeitstakt auf 20 MHz. (der PIC16F84
hatte
nur 10 MHz).
Der mit dem
16F87x
gesetzte Standard wurde auf den 16F84 übertragen und das
Ergebnis
war der PIC16F84A. Das
ist ein
16F84 mit einer auslesbaren Typenkennung und einer maximalen
Taktfrequenz von 20 MHz.
Als
preisgünstigeren Alternative zu den PIC16F87x produzierte man
PIC16F7x, die nicht
über einen
EEPROM verfügten.
1.5 Generation
Die 16F87x
wurden
überarbeitet, und das Ergebnis waren die PIC16F87xA. Aus Sicht des
Anwenders
ist der einzige größere Unterschied zum Vorgänger
die
Integration von Comparatoren. Das Hauptziel war aber wohl die
Beschleunigung des Brennprozesses. Für Industriekunden mit
laufender Serienproduktion ist das ein bedeutender Parameter,
für
den Bastler interessieren ein paar Sekunden Zeitgewinn beim
Basteln
kaum.
2.
Generation (INTOSC)
Alle bisherigen
Flash-PICs benötigen einen externen Oszillator oder Resonator
zur
Takterzeugung. Im RC-Mode reicht zwar ein Widerstand und ein
Kondensator, aber an Genauigkeit oder Stabilität des Taktes
durfte
man dann keine hohen Ansprüche stellen. Mit den nächsten
PICs
führte man interne Oszillatoren ein. Das vereinfacht zum
einen die
Schaltung, ermöglicht es aber auch, zwei zusätzliche
Pins
für I/O-Funktionen zu benutzen.
Der Vorreiter war hier der PIC16F62x
(18 Pins) der eigentlich
den
16F84A überflüssig machte, da er ihn mehr als ersetzen
konnte. Der Chip wurde später zum 16F62xA überarbeitet.
Das
einzige, was den 16F62x im Vergleich zu den großen 16F87x,
fehlte
war ein ADC.
Gleichzeitig
erschien die PIC1xF6xx-Familie
(12F629/675,
16F630/676)
auf dem Markt. Die gibt es als PIC12F6xx mit 8 Pins sowie als PIC16F6xx mit
6
zusätzlichen I/O-Pins (also 14
Pins). Es gab sie von Anfang an mit internem Oszillator
und es
gab auch sofort Versionen mit ADC. Die kleine Gehäusebauform
führte zu geringen Kosten und reichte für viele einfache
Anwendungen aus. Während der interne Oszillator des 16F62x
noch
einen Frequenzfehler von einigen Prozent aufweisen konnte, konnte
der
Oszillator des1xF6xx per Software justiert werden. Den
nötigen
Korrekturwert brannte der Hersteller in den Programmspeicher. Das
war
etwas umständlich (der Kalibrierwert konnte durch Brennfehler
verloren gehen) garantierte aber Frequenzfehler von unter 1
Prozent.
3.
Generation (nanoWatt 2003..2010)
Die nachfolgende
Generation zeichnet sie durch einen weiter verbesserten internen
Oszillator aus. Dieser konnte zwar immer noch per Software fein
abgestimmt werden, allerdings war das kaum nötig, da er schon
während der Herstellung auf einen Fehler von unter 1 %
justiert
wurde. Außerdem war nun nicht mehr nur eine oder zwei
Frequenzen verfügbar, sondern es konnte aus einer ganzen
Reihe von
Frequenzen ausgewählt, und diese im Betrieb umgeschaltet
werden.
Das Ziel war ein PIC mit minimiertem Stromverbrauch.
Für praktisch alle bisherigen PICs wurden Nachfolger mit
dieser
nanoWatt-Technik hergestellt.
° |
12F629/675 | ==> |
12F635/683 | ||
° | 16F630/676 | ==> | 16F636/684/688 | ||
° | 16F84A | ==> | 16F87/88 | ==> | 16F818/819 |
° | 16F7x | ==> | 16F7x7 | ||
° | 16F87xA | ==> | 16F88X |
Obendrein wurden
aus den 14-Pin Typen 16F6xx neue 20-Pin Typen
entwickelt, indem man noch einmal 6 zusätzliche I/O-Pins
hinzufügte.
Spezielle Typen zur Ansteuerung von LCDs wurden mit 28, 40 und
erstmals
auch mit 64 Pins herausgebracht.
4.
Generation (enhanced 2009 ....)
Was immer man
bisher auch an den PICs verändert hatte, so war doch der
eigentliche CPU-Kern nicht angetastet worden. Das hatte es
für die
Entwickler sehr einfach gemacht, ein Programm von einem PIC auf
einen
anderen zu portieren. Die alten 14-Bit-Kerne hatten aber auch
einige
Schwachpunkte, insbesondere wenn man sie nicht in Assembler
programmieren wollte. Deshalb überarbeitete man den Kern,
spendierte ihm eine 16-bittige indirekte Adressierung, die
Möglichkeit einen zusammenhängenden linear
adressierbaren
Speicher abzubilden sowie einige zusätzliche Befehle, die
eine
Programmierung in C deutlich vereinfachten. Dabei blieb der Kern
aber
abwärtskompatibel zu den herkömmlichen PICs. Alter Code
lässt sich problemlos auf den Enhanced-PIC portieren. Der
umgekehrte Weg ist nicht uneingeschränkt möglich, aber
warum
auch. Schließlich wurden praktisch für aller
herkömmlichen Familien nun Nachfolger mit Enhanced-Kern
produziert.
Man erkennt sie an der 4-stelligen Subtypennummer.
° | 16F88x | ==> |
16F151x |
° | 16F9xx | ==> |
16F19xx |
° | 16F7x7 | ==> |
16F178x |
° | 16F818/819 | ==> |
16F?? |
° | 16F62xA |
==> |
16F1826/1827/1847 |
Quelle: Datenblätter der Firma microchip