Symbol www.digital-bahn.de Symbol
Shop Forum Datenschutzerklärung Suche Kontakt

Über PIC Prozessoren und deren Programmierung

PIC-Familien / OSCCAL / Programmiersockel / Programmier-Klammer / Mehr Infos

 

Die PIC Familien

In meinen Projekten werden verschiedene PICs verwendet, je nachdem, welche Funktionen benötigt werden. Einige PICs sind dabei zueinander Software-Kompatibel, andere nicht. Hier eine kleine Übersicht:
 
12F629 / 12F675 / 16F630 / 16F676: diese PICs sind zueinander kompatibel. Alle haben 1K ROM und im wesentlichen die selbe Peripherie auf dem Chip. Die 16Fxxx sind hier 14-polig, die 12Fxxx 8-polig. Dennoch kann man einen 12Fxxx durchaus auch anstelle eines 16Fxxx einbauen, die Lage der Versorgungsspannungs-PINs usw. ist identisch. Aber natürlich fehlen dann ein paar Ausgänge. In der Praxis heisst dies: Man kann eine Software für den 16Fxxx auch auf einen 12Fxxx brennen und umgekehrt. Man kann einen 12Fxxx (WeichZwei) auch auf eine 16Fxxx Platine löten (z.B. LED Dekoder). Man kann einen 12F675 anstelle eines 12F629 nehmen oder einen 16F675 anstelle eines 16F630. Anders herum geht dies nicht, denn der 12F675 / 16F676 hat einen zusätzlich AD-Wandler, der auf dem 12F629 / 16F630 fehlt.
 
12F683 / 16F684: Dies ist eine Familie mit jeweils 2k ROM. Die Pinbelegung ist kompatibel zur 12F629 / 12F675 / 16F630 / 16F676-Gruppe. Die Software allerdings ist es nicht, denn es gibt hier einige feine Unterschiede. Das heisst in der Praxis: ein 12F683 kann einen 12F629/675 ersetzen, wenn die Software entsprechend angepasst wird. Das gleiche gilt für 16F684 und 16F630/676. Auch hier läuft die 16F684 Software auf dem 12F683 und umgekehrt.
 
16F627 / 16F628: wird u.a. auf den S88-Modulen verwendet. Eine 16F627 Software kann auf dem 16F628 laufen, aber nicht anders herum, denn der 16F628 hat mehr Speicher. Es gibt jeweils noch einen 16F627A/16F628A, der aber Kompatibel ist.

zurück zum Anfang nach Oben

Das OSCCAL-Problem

Bei einigen PICs (12F629 / 12F675 / 16F630 / 16F676) gibt es eine Besonderheit, die unter Umständen zu Problemen führen kann: der OSCCAL.

Zweck von OSCCAL

Es handelt sich um einen OSCillator CALibration Wert. Da der PIC mit einem internen Oszillator betrieben werden kann (dies spart einen externen Quarz), wird dieser Wert bereits in der Chip-Fabrik an einer Speicherstelle programmiert. Dadurch können Toleranzen in der Taktfrequenz abgefangen werden.
Der 16F627 besitzt den OSCCAL übrigens nicht!

Warum wird der OSCCAL verwendet?

Die Verwendung des OSCCAL-Wertes wurde notwendig, damit alle Kombinationen von Dekoder und Zentrale zusammen laufen. Denn auch die Zentrale hat gewisse Toleranzen. Wenn nun eine langsame "Scharping"-Zentrale mit einem hektischen "Waalkes"-Dekoder zusammen funktionieren soll, so verstehen sich die beiden nicht mehr. Die Zentrale sendet einfach zu langsam.

Wie funktioniert das?

Der OSCCAL liegt in der letzten Speicherstelle des Programm-Speichers und wurde dort von der Chip-Fabrik einprogrammiert. Beim Start des PIC-Programmes wird dieser Wert dann ausgelesen.

Wie zeigt sich ein fehlender OSCCAL?

icprog3 (11K) Versucht man, den PIC zu programmieren und ist dessen OSCCAL bereits zerstört, so zeigt z.B. IC-Prog dieses Fenster. Allerdings erscheint dieses auch, wenn die Kommunikation zwischen Programmer und PIC nicht korrekt ist oder der Programmer gar nicht mit dem PC verbunden ist.
pbrenner_nooscal (45K) Bei PBrenner kann man in der Fusszeile erkennen, wenn es mit dem OSCCAL nicht mehr so ganz stimmt. PBrenner setzt dann den Wert auf 124 (dez), also genau "auf Mitte"
 
Im Normal-Fall wird hier übrigens der echte OSCCAL-Wert angezeigt. Sollte also einmal die Programmierung schieflaufen, schnell den OSCCAL-Wert notieren, bevor man auf etwas anderes klickt!

Wie kommt es zu Problemen?

Beim Brennen des PIC wird der Programmspeicher mit dem eigentlichen Programm geladen. Und genau hier sieht man schon die Gefahr: dort liegt ja schon der OSCCAL rum. Um diesen nicht zu überschreiben, wird dieser von einer guten PC-Programmier-Software zuerst gelesen und dadurch gerettet. Eine schlechte PC-Programmier-Software überschreibt diese Speicherstelle einfach und der OSCCAL ist futsch.
Aber auch mit der guten PC-Programmier-Software kann es vorkommen, das der OSCCAL verloren geht. Wird der Programmier-Vorgang z.B. gestört, so ist evtl. der Speicher schon gelöscht, aber der OSCCAL-Wert noch nicht wieder zurück-programmiert worden. In diesem Fall: OSCCAL schnell notieren und später wieder einprogrammieren.
PBrenner zeigt übrigens bei jedem Programmier-Vorgang den OSCCAL (den PBrenner ja gerade gelesen und somit gerettet hat) in der Fusszeile an.

OSCCAL ist weg - und nun?

Je nach PC-Programmier-Software gibt es meist irgendwo ein Fenster, in dem man einen OSCCAL eintragen kann. Hier einfach mal z.B. die Dezimal-Werte 64, 128, 196 nacheinander Programmieren. Wenn der Dekoder dann auf die Digital-Befehle gehorcht, ist der Fall gerettet.
pbrenner_editoscal Hier das Edit-Fenster für den OSCCAL bei PBrenner: Schaltet man auf den Punkt "von Schieberegler" um, kann der Wert verändert werden. Die Anzeige erfolgt hier in dezimal (also von 0 bis 255). Hier rate ich jetzt zu Funktions-Tests mit den Dezimal-Werten 64, 128 und 196. Für den nächsten PIC unbedingt wieder auf "nicht verändern" schalten!, sonst wird hier der korrekte OSCCAL gleich wieder mit Schieberegler-Wert überschrieben!

zurück zum Anfang nach Oben

Die kommerzielle Klammer

Es gibt die Möglichkeit, PICs auf Platinen ohne Programmierstecker über eine Programmier-Klammer zu kontaktieren. Voraussetzung hierfür sind allerdings gute Lötstellen ohne grösse Lötzinn-Kleckse am PIC.
Leider ist eine solche Klammer nicht billig und zudem auch nicht sehr lange haltbar, da die Kontakte unter jedem Klammern etwas leiden. Mit der Klammer kann man mal ein paar eingelötete PICs umprogrammieren, jedoch stellt diese auch gewisse Ansprüche an die Lötung. Zu grosse Zinn-Kleckse an den Pins können die Kontakte der Klammer verbiegen und so nach einigen "Klammerungen" zum Problem werden. Evtl. macht es da Sinn, kurz mit Entlötlitze die "Zinnvorkommen" zu minimieren.
 
Anzahl Füssefür diese PICBezug z.B.Hersteller Nummer
8-poligz.B. 12F629/675 SN-Type
Gehäusebreite 3.9mm
Bürklin 30 F 3620 Pomona 5250
16-poligz.B. 12F630/676 SL-Type
Gehäusebreite 3.9mm
Bürklin 30 F 3624 Pomona 5252

 
Die kommerzielle Klammer am Programmer Die kommerzielle Klammer am WeichEi

zurück zum Anfang nach Oben

Programmiersockel für SMD-PICs

Da ich immer wieder danach gefragt werde, habe ich hier einmal einige Programmier-Sockel aufgeführt, mit denen die verschiedenen PICs adaptiert werden können. Diese Testsockel sind leider nicht ganz billig. Allerdings benötigt man diese für die meisten meiner Dekoder nicht, da die PICs ja auf der Platine über den 5-poligen Programmierstecker programmiert werden können. Nur wer eine grosse Anzahl von PICs uneingelötet programmieren möchte, muss auf solche Sockel zurückgreifen.
 
Anzahl Füssefür diese PICBezug z.B.Hersteller Nummer
8-poligz.B. 12F629/675 SN-Type
Gehäusebreite 3.9mm
Farnell 9897615 Wells-CTI 652B008221x-002
Farnell 9897500
Bürklin 15 B 5420
3M-Textool 208-7391
14-polig
(auch für 8-polige PICs nutzbar)
z.B. 16F630/676 SL-Type
Gehäusebreite 3.9mm
kein Anbieter bekannt Wells-CTI 652B016221x-002
Bürklin 15 B 54223M-Textool 214-7390
18-poligz.B. 16F627 SO-Type
Gehäusebreite 7.5mm
Bürklin 15 B 54283M-Textool 218-7223

zurück zum Anfang nach Oben

Mehr Infos ?

Wer sich weiter über die PIC-Controller informieren möchte, kann dies auf der Homepage von Microchip tun. Hier kann auch die Entwicklungsumgebung MPLAB kostenlos heruntergeladen werden.
 
Link zum Hersteller Microchip:arrow www.microchip.com
 
Eine gute Seite für den Einstieg in die PIC-Welt (deutsch):arrow www.sprut.de

zurück zum Anfang nach Oben