Steckbrief
|
Kurzbeschreibung
Die PIC12F6xx-Familie ist die Lösung für kleine preiswerte Schaltungen, bei denen man mit wenigen I/O-Pins auskommt.
Der 12F6xx ist in seinen inneren Qualitäten dem drei mal so teuren 16F84 in jeder Beziehung überlegen. Einzig die Anzahl der I/O-Pins ist aufgrund des 8-Pin-Gehäuses kleiner. Dafür besitzt die 12F6xx-Familie einen 2. Timer, einen Komparator und der 12F675 sogar einen 10-Bit-ADC.
Wem der 12F629/675 zu wenig I/O-Pins bietet, der sollte sich die PIC16F630/676 anschauen, das sind die gleichen Chips mit 6 zusätzlichen I/O-Pins.
Mein Programm PBrenner unterstützt die 12F629/675 ab der Version 2.3 für die Brenner1, 2, 3 und 5 über die ICSP -Schnittstelle. Der Brenner1 besitzt sogar den passenden 8-Pin-Sockel. Brenner5 ab Rev. 7 brennt die 8-Pin-PICs im 18-poligen Sockel.
Für den älter Brenner5
bis Rev. 5 ist eine
Modifikation
möglich (4 Drähte auf der Leiterseite des Brenners), um die
PIC12F6xx
in seiner 18-poligen Fassung zu brennen. Die lässt sich
sinngemäß
auch auf den Brenner3
anwenden.
Besonderheiten für das Brennen
In jeden PIC12F629/675 werden im Herstellerwerk zwei Kalibrierwerte eingebrannt: der Bandgap-Wert und der Oszillator-Kalibrier-Wert (OSCCAL). Der Bandgap-Wert steht in den beiden höchstwertigen Bits des Config-Registers, der OSCCAL-Wert ist dagegen ein RETLW-Befehl, der auf der Speicherzelle 0x3FF des Programmspeichers abgelegt ist.
Wird der PIC gelöscht
oder neu gebrannt, so sind unbedingt diese beiden Werte vorher
auszulesen,
und danach wieder in den PIC zu brennen. Meine Software PBrenner
ab V2.3 erledigt dies automatisch. Eine Nebenerscheinung davon ist,
dass
die Reaktionen des Programms bei Mausklicks um 1..3 Sekunden
verzögert
erfolgen, wenn ein PIC12F6xx am Brenner hängt.
Im Programm sollte man die
Adresse 0x3FF prinzipiell nicht verwenden, da sie für den
OSCCAL-Wert
reserviert ist. Mein Brennprogramm überschreibt diese
Speicherzelle
gnadenlos und ohne Rückfrage mit dem OSCCAL-Wert.
Wenn trotz aller Vorsicht
der OSCCAL-Wert verloren gehen sollte, habe
ich hier ein Verfahren beschrieben, um ihn wieder zu ermitteln.
Besonderheiten für Entwickeln von Programmen
Bitte die Analogfalle beachten. Ansonsten gehen weder Input-Pins noch Interrupts über GP2 noch interne pull-up-Widerstände.
Das Pin GPIO3 kann nicht als Ausgang (sondern nur als digitaler Eingang oder als Reset/MCLR) eingestellt werden.
Der interne
4-MHz-Oszillator
kann in seiner Frequenz präzise eingestellt werden. Dazu
dient
ein vom Hersteller auf 0x3FF abgelegter Kalibrierwert, der in das
Register
OSCCAL wie folgt eingetragen wird:
; internen Taktgenerator kalibrieren
bsf STATUS, RP0 ; Bank 1 call 0x3FF movwf OSCCAL bcf STATUS, RP0 ; Bank 0 |
Gehäuse
Den 12F6xx gibt es in drei Gehäuseausführungen: PDIP (/P), SOIC (/SN) und MLF-S (/MF). Der Gehäusetyp ist in der kompletten Typenbezeichnung enthalten.
P (PDIP) ist in diesem Fall eigentlich das SP-Gehäuse. Das ist ein normales 8-polige DIL-Gehäuse für die Montage auf gebohrten Leiterplatten oder in DIL-Fassungen.
SN (SOIC) ist ein 8-poliges SMD-Gehäuse zur Oberflächenmontage. Der Schaltkreis ist ohne Pins 4 mm breit. Mit Pins sind es 6 mm.
MF
(MLF-S)
ist ein 8-poliges besonders flaches SMD-Gehäuse mit unter das
Gehäuse
gebogenen Lötflächen. Der Schaltkreis ist 5 mm x 6 mm
groß
und nur 1 mm dick.