|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Microchip PIC MicrocontrollerMit Hilfe des Adapters UNIPIC unterstützt hed.chip auch eine große Zahl von PIC Microcontrollern. hed.chip erfüllt alle Anforderungen, die Microchip für einen „production quality programmer“ spezifiziert hat. Für die verschiedenen Bauformen DIP8, DIP18, DIP28 und DIP40 hat der Adapter die jeweils passenden Testsockel bzw. einen Präzisionssockel für die Bauform DIP8. Der Adapter wird in zwei Versionen angeboten: 1. UNIPIC18: bestückt mit Präzisionssockel DIP8 und Testsockel DIP18. Sockel DIP28 und DIP40 können gegebenenfalls selbst nachträglich bestückt werden. 2. UNIPIC: komplett bestückt mit Präzisionssockel DIP8 und drei Testsockeln DIP18, DIP28 und DIP40. PIC Microcontroller verfügen über EPROM- oder FLASH-Programmspeicher. Die Wortbreite des Speichers beträgt je nach Typ 12, 14 oder 16 Bits. Zusätzlich zu dem normalen Programmspeicher haben diese Bausteine 16 Bits Speicher für eine User-ID und ein Speicherwort zur Konfiguration des Prozessors (Microchip: „configuration word“). Die 16 Bits der User-ID verteilen sich auf 4 Speicherworte. Beim Auslesen werden User-ID und configuration word mit ausgelesen. Die Zieldatei ist daher immer 10 Byte größer als der Programmspeicher des Bausteins. User-IDPIC Microcontroller haben eine 16 Bit User-ID. Diese User-ID wird in einem besonderen Adressbereich in 4 Speicherstellen, die jeweils mit 4 Bit der User-ID programmiert werden können, abgelegt. hed.chip kann eine User-ID aus der Quelldatei in die dafür vorgesehenen Speicherstellen programmieren. Die User-ID wird in der Quelldatei hinter den Daten für den Programmspeicher erwartet. Dabei spielt die genaue Position keine Rolle. Wenn die Quelldatei mindestens 10 Bytes größer ist als der Programmspeicher des Bausteins, werden die letzten 10 Bytes der Quelldatei in die User-ID und das configuration word programmiert. Beispiel für PIC16C84: Der Baustein hat 1024 Worte Programmspeicher. Das entspricht einer Größe der Quelldatei von 2048 Byte. Die nun folgenden 4 Wörter ( = 8 Bytes) werden als User-ID interpretiert. Von jedem Wort werden die unteren 4 Bits als User-ID in den Baustein programmiert. Um Fehlermeldungen beim Verify zu vermeiden, müssen die oberen 12 Bits des Worts 0 sein. Eine Quelldatei mit User-ID und configuration word hat beim PIC16C84 also eine Größe von 2058 Bytes. Configuration WordPIC Microcontroller haben in einem besonderen Adressbereich eine Speicherstelle, mit deren Hilfe der Microcontroller konfiguriert werden kann. Die Bits des configuration word stellen den Taktgenerator auf bestimmte Taktquellen ein und beeinflussen das Verhalten des Timers und des Watchdog. Mit weiteren Bits kann der Prozessor gegen Auslesen des Programmspeichers geschützt werden. Nach dem Löschen des Bausteins sind alle Bits des configuration word auf 1 gesetzt. Bei der Programmierung können Bausteinoptionen angegeben werden, um eines oder mehrere Bits des configuration word auf 0 zu programmieren. Die folgende Tabelle gibt eine Übersicht über die Optionen und die zugehörigen Kommandozeilenparameter, die zur Programmierung angegeben werden können. Die graphische Benutzeroberfläche HC95 bietet bei der Programmierung die für den gewählten Baustein verfügbaren Bausteinoptionen zur Auswahl an. Es können beliebige Kombinationen der Optionen ausgewählt werden.
Das configuration word kann auch aus der Quelldatei heraus programmiert werden. Dazu muß das configuration word in der Quelldatei unmittelbar hinter der User-ID liegen. Alternativ können didiese Informationen auch an den von Microchip vorgesehen stellen liegen. Sie: Kaptel „Entwicklungssystem MLABS“. Beim Auslesen werden User-ID und configuration word im Anschluß an den Inhalt des Programmspeichers in der Zieldatei abgelegt. Man kann also Bausteine inklusive User-ID und configuration word kopieren. Der genaue Aufbau des configuration word ist bei fast allen Typen unterschiedlich. Das gilt auch, wenn diese Typen über die gleichen Optionen verfügen. Leseschutz bei UV-löschbaren PIC MicrocontrollernMicrochip empfiehlt, daß Microcontroller im Keramik-Gehäuse mit Fenster nicht gegen Auslesen geschützt werden. Das heißt, die Bausteinoptionen /s32 und /s64 sollten bei der Programmierung dieser Typen nicht angegeben werden. Wir haben die Erfahrung gemacht, daß auch intensive UV-Bestrahlung diese Bausteine nicht mehr vollständig löschen kann, wenn die configuration bits CP0 (/s32) und/oder CP1 (/s64) programmiert wurden. Der Leseschutz kann auch durch Programmierung mit einem entsprechende Wert für das configuration word in der Quelldatei aktiviert werden. Dabei wird aber eine Fehlermeldung erzeugt, daß der Baustein nicht programmierbar sei. Die Aktivierung des Leseschutzes kann auch unbeabsichtigt passieren, wenn der Baustein mit einer Datei programmiert wird, die nicht für diesen Typ geeignet ist. Daten EEPROMEinige Typen, z.B. PIC16F84, verfügen über EEPROM Datenspeicher. Dieser Speicher erscheint in der Bausteinliste je nach Größe als PICDATA64, PICDATA128, bzw. PICDATA256. Um also die 128 Bytes EEPROM Datenspeicher eines PIC16F873 zu programmieren, wählen Sie aus der Bausteinliste den Baustein PICDATA128 aus. In der Kommandozeile verwenden Sie das Baustein-Mnemonik /gpicdata128. Der EEPROM Datenspeicher hat eine Wortbreite von 8 Bits. Trotzdem werden die Daten wortweise (16 Bits) aus der Quelldatei gelesen. Von jedem 16 Bit Wort werden nur die unteren 8 Bits verwendet. Der Datenspeicher muss vor der Programmierung des Programmspeichers programmiert werden. Folgende Reihenfolge ist einzuhalten:
Entwicklungssystem MLABShed.chip unterstützt das Entwicklungssystem MLABS von Microchip. Damit ist insbesondere gemeint, dass User-ID und Configuration-Word aus den mit MLABS erstellten Dateien an die richtigen Stellen im PIC Microcontroller programmiert werden. Damit das funktioniert, werden die Dateiformate von dem Programm HEXBIN.EXE konvertiert. Der Aufruf von HEXBIN.EXE erfolgt automatisch. HEXBIN.EXE konvertiert die Formate MLABS-14Bit und MLABS-12Bit in das HEDCHIP-Format. Dateiformate:
Empfohlene Arbeitsweise:Geben Sie in MLABS alle Configurations-Optionen mit Ausnahme des Leseschutzes an. Wenn Sie mit UV-Löschbaren Controller, die eine Oscillator-Calibration brauchen, arbeiten, können Sie dafür einen geeigneten Wert in die Quelldatei schreiben. Der Oscillator-Calibration wert wird nur dann programmiert, wenn der Microcontroller an dieser Stelle noch keinen programmierten Wert enthält. Mit der so entstandenen Quelldatei können Sie Bausteine programmieren. Während der Entwicklung und wenn Sie UV-Löschbare Controller verwenden, sollten Sie keinen Leseschutz benutzen. Für die Serienfertigung können Sie in HC95 die Bausteinoptionen CP bzw. CP0 + CP1 zusätzlich aktivieren. Optionen, die durch entsprechende Daten in der Quelldatei programmiert werden und in HC95 ausgewählte Optionen addieren sich.
Übersicht über die unterstützten PIC Microcontroller TypenDie folgende Tabelle listet die unterstützten Microcontroller auf und nennt das bei der Programmierung anzugebende Bausteinmnemonic. Typen, die sich für das Programmiergerät nicht unterscheiden, wurden zu einem Typ zusammengefaßt. Deshalb wird z.B. der Baustein PIC16C71 durch Angabe des BausteinMnemonics /gpic16c61 programmiert. In der Datenbank von HC95 sind alle Typen aufgeführt und es wird automatisch mit dem richtigen Bausteinmnemonic programmiert. Der Adapter UNIPIC hat für jeden Microcontroller den jeweils passenden Sockel. Der Baustein muß in den der Bauform entsprechenden Sockel eingesetzt werden. Beispiel: Ein Baustein PIC16C84 in DIP18 darf nur in den Testsockel DIP18 eingesetzt werden. PIC Microcontroller können vom Programmiergerät nicht erkannt werden. Es ist sehr wichtig, daß der richtige Baustein ausgewählt wird. Das gilt insbesondere für Typen mit und ohne ´A´ als letzten Buchstaben in der Typbezeichnung. Beispiel: PIC16C62 und PIC16C62A sind nicht identisch.
PIC16CR83/84, PIC16F83/84Die Bausteine PIC16CR83 und PIC16CR84 verfügen EPROM-Programmspeicher, die Bausteine PIC16F83, PIC16F84(A) verfügen über FLASH-Programmspeicher. Zusätzlich zum Programmspeicher haben diese Bausteine 64 Bytes EEPROM-Datenspeicher. Zur Programmierung des Datenspeichers wird das Bausteinmnemonic /gpicdata64 benutzt. Die Daten, die in das Daten EEPROM programmiert werden sollen, müssen in einer separaten Datei beginnend bei Adresse 0 vorliegen. In der Quelldatei müssen die Daten wortweise vorliegen. Bei der Programmierung wird von jedem Wort das Low-Byte in den Baustein programmiert. Beispiel: Bei einem PIC16F84 soll sowohl der Daten- wie der Programmspeicher programmiert werden. Der Programmspeicher soll gegen Auslesen geschützt werden: hedchip /gpicdata64 /p /e /v datafile.hex ; löscht, programmiert und verifiziert EEPROM-Datenspeicher. hedchip /gpic16f84 /p /v /e /32 codefile.hex ; löscht, programmiert, verfiziert und schützt FLASH-Programmspeicher.
Die Bausteine PIC16CR83 und PIC16CR84 haben eine Bausteinoption, mit der sich der EEPROM-Datenspeicher gegen Auslesen schützen lässt. Die Benutzeroberfläche bietet dazu die Bausteinoption DP an. In der Kommandozeile wird zur Programmierung dieser Option der Parameter /s64 verwendet. Die Bausteinoption CP (entspricht Kommandozeilenparameter /s32) schützt den Programmspeicher gegen Auslesen. PIC12C5XX, RC-Oszillator KalibrierungBei diesen Bausteinen dient die letzte Speicherstelle des EPROM Programmspeichers der Kalibrierung des RC-Oszillators. Microchip sieht vor, daß diese Speicherstelle mit einem MOVLW-Befehl zum Laden eines Kalibrierungswerts programmiert wird. Bei neuen Bausteinen ist diese Speicherstelle bereits entsprechend programmiert. Der Wert 0c80h entspricht dem Assembler Befehl MOVLW 080h. Dieser Befehl wird nach einem Reset als erster Befehl ausgeführt und der program counter springt danach auf 0000h um. In der hed.chip Software ist diese Besonderheit berücksichtigt. Trotzdem müssen noch einige Details beachtet werden: 1. Bei UV-löschbaren Bausteinen wird diese Speicherstelle ebenfalls gelöscht und muß anschließend mit einem sinnvollen Wert, z.B. 0c80h = MOVLW 080h, programmiert werden. Falls gewünscht kann der Oszillator auch mit einem anderen Wert kalibriert werden. 2. Wenn in der Quelldatei ein Wert für die Kalibrierung des Oszillators enthalten ist, dann wird dieser Wert nur dann programmiert, wenn der Baustein an dieser Stelle vorher keinen Wert enthält. Sie können also in jedem Fall einen Wert in der Quelldatei vorsehen. Wenn Sie einen Microcontroller programmieren, der bereits ab Werk kalibriert ist, dann wird der von Ihnen vorgesehene Wert ignoriert. 3. Wenn Sie einen Vergleich mit einer Datei ausführen, dann wird auch der Wert für die Kalibrierung verglichen. Wenn die Datei an dieser Stelle einen anderen Wert enthält, wird ein Verify-Fehler ausgegeben. Dies gilt nur für den Fall eines expliziten Vergleichs mit einer Datei. Im Falle der Programmierung mit anschließendem, automatischen Verify, wird kein Verify-Fehler erzeugt. 4. Der Befehl MOVLW XX lädt den entsprechende Wert (z.B. 080h) in das W-Register. Es bleibt dem Programm des Controllers überlassen, diese Wert in das OSCCAL-Register, Adresse 05ch zu schreiben. PIC12C67X, RC-Oszillator KalibrierungBei diesen Bausteinen dient die letzte Speicherstelle des EPROM Programmspeichers der Kalibrierung des Oszillators für den Mode INTRC (Baustein Option FOSC1 oder FOSC0+FOSC1). Das Prinzip ist das Gleiche wie für die Bausteine PIC12C5XX. Statt des Befehls MOVLW wird diese Speicherstelle jedoch mit dem Befehl RETLW programmiert.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||