


![]() |
C-Mark - Handbuch |
Autor: Manfred Ehrenberg
Copyright © MCT Paul & Scherer Mikrocomputertechnik GmbH. Alle Rechte vorbehalten.
Dieses Handbuch, wie auch das beschriebene Produkt, wurde sorgfältig erstellt und geprüft. Trotzdem können Fehler und Irrtümer nicht ausgeschlossen werden. MCT übernimmt keinerlei Verantwortung für die uneingeschränkte Richtigkeit und Anwendbarkeit des Handbuchs oder des beschriebenen Produkts und für die aus eventuell vorhandenen Fehlern resultierenden Schäden.
Änderungen ohne vorherige Ankündigung vorbehalten.
![]()
1 Allgemein
Die C-Mark ist ein Einplatinencomputer von der Grösse eines normalen Fünfmarkstücks. Ihre runde Bauform soll einen leichteren Einbau in das Zielgerät ermöglichen, ganz nach dem Motto "was rund ist kann nicht anecken". Kernstück des Einplatinencomputers ist der RISC-Prozessor PIC16C84 von Microchip mit integriertem EEPROM-Programmspeicher.
Im Folgenden finden Sie die wichtigsten Daten des PIC16C84:
- 1K x 14Bit EEPROM-Programmspeicher
- 64 x 8Bit EEPROM-Datenspeicher
- 36 x 8Bit SRAM-Datenspeicher
- 15 x 8Bit Register
- 8 x 13Bit Stack
- 13 Ein- bzw. Ausgabeleitungen
- Interruptfähiger 8Bit Timer mit 8Bit Vorteiler
- Watchdog
- PowerOn-Reset
- Sleep-Modus
- EEPROM-Lese- und Schreibschutz
Die Ausgabeports können einen Strom von bis zu 20mA (gegen Masse max. 25mA) treiben. So ist es problemlos möglich, LEDs direkt an die Ports zu schalten. Weitere technische Details finden Sie im Datenblatt zum PIC16C84.
![]()
1.1 Versionen
Die C-Mark gibt es mit zwei verschiedenen Takt-Frequenzen. Standardmässig liefern wir die C-Mark mit einem 4MHz-Quarz. Für Anwendungen mit höherem Bedarf an Rechenleistung bieten wir eine Version mit 10MHz-Quarz an. Da eine Instruktion des PICs stets 4 Takte benötigt, ergeben sich für die Ausführungszeit 1us bzw. 400ns für die optionale 10MHz-Ausführung.
![]()
1.2 Anwendungen für die C-Mark
Sowohl der geringe Platzbedarf als auch der grosse Versorgungsspannungsbereich machen diesen Einplatinencomputer gerade für batteriebetriebene Anwendungen interessant. Zudem verfügt der PIC über ein sehr gutes Powermanagement und lässt sich im Sleep-Modus auf ca. 1uA herunterdrosseln.
Der Programmspeicher von 1024 x 14Bit verkraftet auch die von
Microchip angebotenen umfangreichen C-Programme für mathematische Operationen. Anspruchsvolle Steuerungsaufgaben lassen sich somit sehr schnell und einfach realisieren. Einfache Schaltungen können in SMT direkt auf der C-Mark auf dem Padrasterfeld realisiert werden. Insbesondere serielle Bausteine in SMT besitzen hohe Funktionalität bei geringer Pinanzahl und Platzverbrauch.
![]()
1.3 Lieferumfang des Entwicklungspakets
- Fertigbaugruppe C-Mark
- Programmieradapter
- RS232-Kabel für PC
- Handbuch zum PCM-C-Compiler
- PCM-C-Compiler, Beispiele und Downloadprogramm
- Steckernetzteil 12V
![]()
1.4 Inbetriebnahme
Als erstes sollte der Programmieradapter mittels RS232-Kabel mit dem PC verbunden werden. Stecken Sie die C-Mark auf den Programmieradapter in den dafür vorgesehenen Sockel. Pin 1 sowie die Kontur der richtig gesteckten C-Mark sind auf dem Programmieradapter gekennzeichnet. Jetzt nur noch das Steckernetzteil an den Programmieradapter anschliessen und der PIC ist zum Programmieren vorbereitet.
Es ist darauf zu achten, dass der Jumper mit der Beschriftung "Programming" gesteckt ist. Ferner sollte die Power-LED LED1 leuchten. Ggf. muss am Steckernetzteil die Polarität umgeschaltet werden.
![]()
2 Baugruppen
2.1 Speicher
Programmzähler und Stackpointer haben je eine Breite von 13Bit, wobei der Stackpointer im Programm weder direkt les- noch beschreibbar ist. Aus der Breite des Programmzählers ergibt sich ein maximaler Adressraum für den Programmspeicher von 8 k x 14Bit, wobei der PIC16C84 1 k x 14Bit zur Verfügung stellt. Der Programmspeicher des PIC wird daher acht mal im Adressraum gespiegelt. Sehen Sie dazu auch die folgende Tabelle:
Adressraum Funktion 0x0000
0x0004
0x0005... 0x3fff
0x0400... 0x1fffReset Vektor
Interrupt Vektor
Programmspeicher
nicht benutztAnalog dazu gibt es einen Speicherbereich für die Register und das SRAM des PIC16C84, der über zwei Seiten angesprochen wird:
Adressraum Funktion Page 0 Funktion Page 1 0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0a
0x0b
0x0c... 0x2f
0x30... 0x7fIndirekt. Addr.
RTCC
PCL
STATUS
FSR
PORTA
PORTB
ungenutzt
EEDATA
EEADR
PCLATH
INTCON
User SRAM
ungenutztIndirekt. Addr.
OPTION
PCL
STATUS
FSR
TRISA
TRISB
ungenutzt
EECON1
EECON2
PCLATH
INTCON
User SRAM
ungenutztDa die Auswahl der entsprechenden Seite in die Adresse mit einfliesst, ergibt sich z.B. für das Register TRISA eine Adresse von 0x85 ( 0x05 plus das achte Bit für Seite 1 gleich 0x85). Bei gleichen Namen enthalten die Seiten auch den gleichen Inhalt. So ist ein Zugriff auf das SRAM an Adresse 0x0c (Seite 0) identisch mit einem Zugriff auf die Adresse 0x8c (Seite 1).
Das EEPROM (64 x 8Bit) für Daten wird nicht direkt über Adressen angesprochen, sondern über vier Register (EEDATA, EEADR, EECON1, EECON2). Deswegen finden Sie auch keine Memory-Map zu diesem Bereich.
Die Tabelle zu den Registern ist nur der Vollständigkeit halber hier abgedruckt. Detaillierte Informationen finden Sie im Datenblatt zum PIC16C84.
In der Regel wird es jedoch nicht notwendig sein, direkt auf Speicherstellen mittels der Adresse zuzugreifen, da der im Entwicklungspaket mitgeliefert C-Compiler entsprechende Zugriffsfunktionen bzw. Makros zur Verfügung stellt, um an Register heranzukommen.
Zum Beispiel Lesen und Schreiben des EEPROMs:
wert = READ_EEPROM(adresse);
WRITE_EEPROM(adresse, wert);
übersetzt der C-Compiler in ca. 20 Anweisungen.
![]()
2.2 Interrupteingänge
Der Eingang RAO/INT löst bei Low-Pegel einen Interrupt aus. Dieser Eingang ist zustandsgesteuert und eignet sich daher besonders für Spannungsüberwachung oder für die Überwachung anderer langsamer Pegeländerungen. Wie jeder Port kann auch dieser umprogrammiert werden. Interrupt auf Flanken löst nur der Port B<4...7> aus, sofern er nicht ebenfalls umprogrammiert wurde. Die Polarität der auslösenden Flanke ist programmierbar mit EXT_INT_EDGE(H_TO_L oder L_TO_H) auf negativ oder positiv.
Beachten Sie bitte, dass der PIC die Möglichkeit bietet, über einen Softwarebefehl interne Pull-Ups an einen Eingang zu schalten. So ist es nicht weiter notwendig, externe Widerstände an Eingänge zu schalten.
![]()
2.3 Echtzeit-Zähler und Zeitgeber
Zur Zählung externer Impulse bzw. mittels programmierbarer Teilerstufen zur Erfassung eines bestimmten Zählwertes dient der Eingang mit der Bezeichnung RTCC. Eine Impulsweite von minimal 10ns ist dabei notwendig. Ein symmetrischer Takt von 50MHz ist die theoretische obere Grenze, die noch erfasst werden kann.
Wurde der grösstmögliche Vorteiler von 256 gesetzt, kommt auch die interne Logik nach, den geteilten Zählwert abzulegen. Gehen Sie aber bitte von realistischen Verhältnissen beim Controllereinsatz aus. Eine endliche Flankensteilheit der Signale drückt weiter die obere Grenzfrequenz für die Taktzählung. Wurde auch ein niedriger Vorteiler gewählt, steigt die Zähllogik auf dem Chip aus. Wählen Sie also immer den grösstmöglichen Vorteiler.
Unabhängig davon sollten Sie Ihre Schaltung ausmessen. Es ist vergleichsweise einfacher, schon bei Beginn einen Teilerschaltkreis in der Anwendung zu plazieren, wenn Echtzeitprobleme zu erwarten sind. Auch reagiert das Programm vier Instruktionszyklen später auf einen Interrupt durch Zählerüberlauf. Lesen Sie dazu das Kapitel Programmierung.
![]()
2.4 Steckverbinder der C-Mark
Pinbelegung von ST1:
Pin Signal Signal Pin 1
3
5
7
9
11
13
15RA2
RA3
RA4/RTCC
VPP/MCLR
RB0/INT
RB1
RB2
GNDVCC
RA1
RA0
RB7
RB6
RB5
RB4
RB32
4
6
8
10
12
14
16
VPP/MCLR Reset- und Programmiersteuereingang VCC +5V ±5% RAO..4 Port A, RTCC ist Echtzeit-Zähler und -Zeitgeber RBO..7 Port B, RB0/INT als zustandsauslösender Interrupt programmierbar, RB[4 ... 7] als flankenauslösende Interrupteingänge programmierbar GND Referenz, Digitalmasse ![]()
2.5 Steckverbinder des Programmieradapters
Steckverbinder ST1 und ST4
Steckverbinder ST1 ist das Gegenstück zum ST1 der C-Mark mit gleicher Pinbelegung. Steckverbinder ST4 ist zum Steckverbinder ST1 der C-Mark identisch. Folgende Pins werden vom Programmieradapter benutzt:
Pin Signal PIC 2
8
7
10
15VCC
RB7
VPP/MCLR
RB6
GND14
13
4
12
5
VCC +5V ±5% intern erzeugt aus der Spannung vom Steckernetzteil RB7 serielle Daten (SDA) VPP/MCLR +13V ±1V Programmierspannung/Reset RB6 serieller Datentakt (SCL) GND Referenz, Digitalmasse Der Steckverbinder ist einmal als Buchse (ST1) zum direkten Stecken der C-Mark und andererseits als Steckerleiste (ST4) zum Verbinden über z.B. ein Flachbandkabel vorhanden. Damit soll die Möglichkeit gegeben werden, eine C-Mark in der Anwendung ohne mechanische Demontage zu programmieren.
Desweiteren lassen sich auch PIC16C84-Schaltkreise über diese Schnittstelle programmieren, sofern die oben genannten 5 Leitungen pinrichtig an den PIC angeschlossen werden. Eine weitere Beschaltung des PIC, wie z.B. mit Quarz, Kondensatoren und Widerständen, ist für die Programmierung nicht notwendig.
Steckverbinder ST2
Pinbelegung von ST2 (SUBMIN-D 9pol.):
Pin Signal Signal Pin 1
3
5
7
9CD
TxD
GND
RTS*
RIRxD
DTR*
DSR
CTS
2
4
6
8
nc
CD Carrier Detect, Eingang TxD Transmit Data, Ausgang GND Referenz, Digitalmasse RTS Request to Send, Ausgang (nicht benutzt) RI Ring Indikator, Eingang RxD Receive Data, Eingang DTR Data Terminal Ready, Ausgang (nicht benutzt) DSR Data Set Ready, Eingang CTS Clear To Send, Eingang Steckverbinder ST3
Steckverbinder ST3 (Klinkenbuchse für Steckernetzteil):
Pin Name 1
2
3Mantel
Innenleiter
Kontakt
Mantel bildet Referenz zur Spannung auf dem Innenleiter Innenleiter Versorgungsspannung, 15V ... 28V zulässig Kontakt mechan. durch Klinke betätigter Schaltkontakt (nicht benutzt) Eine Verpolung von Mantel und Innenleiter ist unkritisch wegen der vorhandenen Schutzdiode. Bei richtiger Polung leuchtet die Power-On-LED LED1 (unmittelbar neben der Klinkenbuchse).
Steckverbinder des Testadapters (optional)
Die Steckverbinder von ST1 und ST2 sind Gegenstücke zum ST1 der C-Mark. Die Pinbelegung entnehmen Sie bitte der Beschreibung zum Steckverbinder der C-Mark. Alle Pins der C-Mark sind auf dem Lochrasterfeld zugängig. Innerhalb des Testadapters sind die identischen Steckverbinder ST1 und ST2 pinrichtig verbunden, so dass es gleichgültig ist, wo die C-Mark plaziert wird.
Am anderen Steckverbinder können die Signale der C-Mark abgegriffen, einer Logikanalyse unterworfen oder der Anwendung mittels beigefügtem Flachbandkabel (optional) eingespeist werden. Über ST3 kann bei Bedarf die Versorgungsspannung eingespeist werden. Hier muss der Anwender selbst genügend Sorgfalt tragen, dass seine Anwendung nicht mit seiner Versuchsschaltung oder der Stromversorgung auf dem Testadapter kollidiert.
Für den Versuchsaufbau wird extra (optional) das Netzteil angeboten. Zum Anschluss dieses Netzteils an die Testplatine wird ein 4pol. Floppysteckverbinder verwendet. Die Belegung entspricht im wesentlichen der Stromversorgung eines Floppylaufwerks. Nach Entfernen der Kabel an Pin3 und 4 kann z.B. die Floppy-Stromversorgung eines normalen PC-Netzteils verwendet werden.
Pin Signal 1
2
3
4VCC
GND
PWRFAIL*
PWROFF*
VCC 5V ±5% GND Referenz PWRFAIL Spannungsüberwachung (nicht benutzt) PWROFF Reserviert für Erweiterungen (nicht benutzt) ![]()
2.6 Stromversorgung
Die Stromversorgung erfolgt über das Steckernetzteil 12V/1A (18VA). Die Leerlaufspannung von ca. 20V genügt, um alle benötigten Spannungen zu erzeugen. Ein garantierter minimaler Strom von 300mA bietet auch für kleinere Versuchsschaltungen z.B. direkt auf dem Padraster der Rückseite der C-Mark genügend Leistungsreserven.
Programmieradapter
Der Strombedarf des Programmieradapters allein ist sehr gering, so dass das Steckernetzteil nahezu im Leerlauf betrieben wird. Die Spannung wird innerhalb des Programmieradapters auf die Programmierspannung (VPP) von +13V ±1V und auf die Versorgungsspannung (VCC) von +5V ±5% mittels Längsregler heruntergeregelt. Es ist nicht vorgesehen, für weitere Funktionen ausser der Programmierung der C-Mark und einer ggf. auf der C-Mark befindlichen kleinen Schaltung, Spannung nach aussen bereitzustellen.
Wird ein eigenes Netzteil für den Programmieradapter benutzt, darf die Versorgungsspannung nicht kleiner als 15V werden und 28V nicht überschreiten. Höhere Spannungen zerstören Bauelemente auf dem Programmieradapter, wogegen zu geringe Spannungen die Programmierung der C-Mark verhindern.
Testadapter (optional)
Je nach Versuchsschaltung können hier erhebliche Ströme aus dem Steckernetzteil gezogen werden. Auch hier ist eine Längsregelung vorhanden, die stabilisierte +5V erzeugt. Damit die Spannung noch regelbar bleibt, müssen stets mehr als 6V anliegen. Empfehlenswert ist die Messung der stabilisierten Spannung von +5V direkt auf dem Testadapter. Wird eine eigene stabilisierte Stromversorgung benutzt, sollte der Strombedarf grob ermittelt werden. Eine entsprechende Strombegrenzung sollte dann eingestellt werden, sofern vorhanden.
![]()
3 Programmierung
Den Befehlsumfang und die Beschreibung der Instruktionen für die C-Mark entnehmen Sie bitte dem gesondert hinzugefügten Programmierhandbuch PCB and PCM REFERENCE MANUAL des Compilerherstellers Custom Computer Services (CCS).
Nachfolgend wird daher nicht der gesamte Befehlsumfang erläutert, sondern nur eine kleine Einführung gemacht.
![]()
3.1 Ein- und Ausgänge
Das direkte Schalten der Ausgänge in Abhängigkeit von Zuständen im Programm ist sicher eine sehr häufige Funktion. Sieht man doch auch daran die richtige Abarbeitung des Programms. Für den Testbetrieb sollte daher ein noch freier Ausgang stets dafür benutzt werden, einen Signalwechsel pro Programmblock durchzuführen. Bleibt die Programmabarbeitung in einer Endlosschleife oder wegen fehlender Eingangssignale hängen, so ist dieses mit sehr einfachen Mitteln (Oszilloskop oder Logikprüfstift) feststellbar.
#include <16c84.h> /* Definitionen zum PIC16C84 */ #include "c_mark.h" /* Definition des Steckverbinders */ #use standard_io /* I/O-Funktion definieren */ /* Dieses Beispiel bezeichnet immer den gleichen Pin: */ output_low(PIN_B7); /* PIC-Pinbezeichnung */ output_low(PIN_13); /* PIC-Pinnummer */ output_high(RB7); /* Portname */ output_low(s8); /* Steckverbinder-Nr. */Benutzen Sie c_mark.h nicht, so dürfen Sie nur die im obigen Beispiel verwendete PIC-Pinbezeichnung verwenden.
Die Pragma-Anweisung standard_io steht für eine sichere Definition der I/O-Richtung, indem die Signalrichtung bei jedem input oder output-Befehl neu gesetzt wird. Das Schalten eines Ausgangs benötigt damit 4 Instruktionen (also 16 Prozessortakte), wie auch das Einlesen. Wurde zuvor die Pragma-Anweisung fast_io festgelegt, entfällt das Setzen des Richtungsregisters, wodurch ein Signalwechsel eine Instruktion für die Ausgabe als auch für das Einlesen benötigt. Mit der Pragma-Anweisung fixed_io ist es auch möglich, einen Ausgange wieder zurückzulesen, ohne dabei wie bei standard_io die Richtung als Eingang zu schalten.
![]()
3.2 Direktes Lesen
Mit input(pin) ist das Lesen jederzeit programmseitig möglich. Dabei sind die Angaben für das direkte Schreiben der Ausgänge sinngemäss anzuwenden. Diese Art des Lesens an den Eingängen ist für den Anwender meist nur für zeitunkritische Vorgänge - abgesehen vom Pollingverfahren - interessant und wird daher nicht näher erläutert.
Das Erfassen von Signaländerungen am Eingang mit Unterdrückung von Störsignalen, Entprellung und anderen realen Störfaktoreliminationen sollen hier genannt werden. Bitte beachten Sie, dass bereits Eingangssignale von einer Breite ab 20ns erfasst werden (ggf. Störsignale).
Eine Programmroutine zur Störunterdrückung ist nicht gross, besteht sie doch im einfachsten Fall nur aus einem erneuten Nachfragen am Eingang, ob der Wert noch ansteht. Wurde die Eingangsänderung per Interrupt ausgelöst, ist damit die Interrupt-Serviceroutine fertig oder aber bei Bestätigung erfolgt die Abarbeitung. Hier ist die Sorgfalt des Programmierers gefordert, die wichtigen Eingänge mit #int_* zu erfassen und bei der Interruptabarbeitung mit disable_interrupts() zu sperren und anschliessend mit enable_interrupts() wieder freizugeben.
Die Reaktionszeit auf Interrupts beträgt 12 Prozessortakte. Ist diese Reaktionszeit auf dem wichtigsten Eingang zu langsam, muss eine Pollingabfrage erfolgen, die aber auch mit 8 Prozessortakten unwesentlich schneller ist, zugleich aber den energiesparenden Sleep-Zustand verbietet. Anstatt des bekannten HALT-Befehls ist die Anweisung sleep() verwendbar, diese benötigt aber für das Aufwecken 1024 Prozessortakte! Ein Gesamtstromverbrauch unter 1uA ist dafür die Belohnung.
![]()
3.3 Fertige I/O-Routinen
Zwei wichtige Preprozessoranweisungen: RS232-Interface und Zeitgeber sind mit der Anweisung #use rs232() und #use delay_*() vorprogrammiert. Damit sind derart wichtige Routinen wie getc(), putc(), gets(), puts(), getch(), putchar(), getchar() und printf() möglich. Mit diesen Routinen ist es der C-Mark möglich, in Datenaustausch mit seiner Umgebung zu treten. Die konzeptionelle Lösungserarbeitung muss vorrangig erfolgen, bevor eine Struktur mit der C-Mark aufgebaut wird. Die Baudrate muss vom Anwender sinnvoll gewählt werden, da auch bei unsinnigen Werten keine Meldung "Baud rate out of range" erfolgt.
Auch sollte vorher geklärt sein, ob eine Leitung zusätzlich als Anklopfleitung verwendet wird (mit #int_ext()) oder erst bei gefülltem Datenbereich im EEPROM mittels #int_eeprom() auf die Nachrichten reagiert wird. Die Verwendung der Identifikation, mit #id() programmierbar, bietet sich an, die angesprochene C-Mark zu kennzeichnen.
![]()
4 Download
4.1 Programmieradapter
Der Programmieradapter wird mit dem PC über COM1- bzw. COM2 verbunden. Sehen Sie dazu die Hinweise zur Inbetriebnahme.
Der Programmieradapter ist nur für die Programmierung der C-Mark entwickelt worden. Befindet sich auf dem Padraster der C-Mark eine von Ihnen entworfene Anwenderschaltung oder die C-Mark befindet sich bereits in Ihrer Anwendung fest verdrahtet und soll mittels Kabel vom Programmieradapter aus programmiert werden, sind folgende Punkte zu beachten:
Die Spannungsversorgung ist nur für die Programmierung ausgelegt plus einer kleinen Leistungsreserve.
Ports die per Programm in den hochohmigen Zustand gesetzt wurden, nehmen diesen ggf. nicht ein, weil die Hardware des Programmieradapters die Pegel beeinflusst.
Ausgänge des Programmieradapters können mit der über Kabel angeschlossenen Anwendung kollidieren.
Die Versorgungsspannung am Programmieradapter kann mit einer ggf. vorhandenen Versorgungsspannung in der Anwendung kollidieren.
Eine kapazitive Last am Eingang VPP/MCLR führt zu ungenügender Flankensteilheit der Programmierspannung, was wiederum zur relativen Programmverschiebung im Programmspeicher führt, d.h. die ersten Daten stehen nicht ab Adresse 0 im Speicher sondern erst ab einer höheren. Das Programm wird zwar durch Verify als richtig erkannt, beginnt aber an der falschen Adresse und läuft deshalb nicht.
Signaleinstreuungen durch die Anwendung während der Programmierung können zu Programmfehlern führen bzw. die Programmierung verhindern.
Damit der Programmieradapter auch als Testadapter verwendet werden kann, befindet sich ein Jumper auf dem Programmieradapter. Für die Programmierung muss er geschlossen sein. Bei geöffnetem Jumper läuft das Programm an. Somit ist ohne Umstecken der C-Mark direkt auf dem Programmieradapter sowohl ein einfacher Test als auch die Umprogrammierung möglich. Aus oben genannten Gründen sollte der endgültige Test in der Anwenderschaltung generell ohne Adapter erfolgen. Der Steckverbinder ST4 ist identisch dem Steckverbinder ST1 der C-Mark und kann bei Bedarf zum Signalabgriff benutzt werden.
![]()
4.2 Downloadprogramm PP.EXE
Beschreibung
Mit PP können der Programmspeicher, die Id-Register und das Config-Register diverser PIC Bausteine programmiert und gelesen werden. Der Programmieradapter wird dazu am PC an eine serielle Schnittstelle angeschlossen. PP gibt es für Linux und DOS.
Aufruf
kann interaktiv bedient werden (Aufruf pp), oder einen Befehl auf der Kommandozeile ausführen (Aufruf pp <cmd>). Wenn der Befehl Leerzeichen enthält, muss er in Anführungszeichen gesetzt werden. Ausserdem kann ein Befehl aus mehreren durch ';' getrennten Befehlen bestehen. Befehle können auch in eine Datei (Script) geschrieben, und die Eingabe auf diese Datei umgelenkt werden (Aufruf pp < <file>).
Beim Programmstart sucht PP nach der Init-Datei '.pprc' zuerst im aktuellen Verzeichnis, dann in HOME und zuletzt nach /etc/pprc (unter DOS sucht PP nach 'pp.rc' in PATH) und führt - falls vorhanden - als erstes dieses Script aus.
Wird PP im interaktiven Modus gestartet, sucht PP ausserdem im aktuellen Verzeichnis nach der History-Datei 'pp.history' ('pp.his' unter DOS).
Mit pp -? werden die Version, Aufrufoptionen und weitere Informationen zu PP angezeigt.
COM-Schnittstelle wählen
Standardmässig benutzt PP COM1. Andere Schnittstellen können mit '-idev:#' als erstem Argument beim Aufruf eingestellt werden (z.B. 'pp -idev:3' für COM3). Alternativ zu '-i' kann die Umgebungsvariable 'OPT_PIC' gesetzt werden (mit 'set OPT_PIC=dev:3' benutzt PP standardmässig COM3).
Befehle
Mit 'pp help' (im interaktiven Modus mit 'help' oder 'F1') wird eine Liste der möglichen Befehle und deren Beschreibung angezeigt. Es gibt noch weitere Befehle, die alle mit '.' anfangen. Diese werden nur mit 'help .' angezeigt.
Mit '.flags <xx>' kann das Verhalten von PP beeinflusst werden. '<xx>' ist ein hexadezimaler Wert und hat folgende Bedeutung:
Bit0 Möglichst viel Information ausgeben. Bit1 Noch mehr Information ausgeben (zum debuggen von Scripts). Bit2 Wenn der eingegebene Befehl nicht gefunden wird, wird der erste Befehl, dessen Anfang mit der Eingabe übereinstimmt ausgeführt. Bit3 Wenn der eingegebene Befehl nicht gefunden wird, wird die Eingabe an die Shell weitergegeben. Bit4 Abbruch bei Fehler. Bit5 Wartet bei Programmende auf Bestätigung, wenn ein Fehler aufgetreten ist. Bit6 Schreibt bei Programmende die Eingabezeilen (History) nach 'pp.history' ('pp.his' unter DOS). Bit7 Zeigt den aktuellen Pfad vor dem Prompt an. Mit '.translate string=new' können die meisten der von PP benutzten strings geändert werden. Dazu gehören z.B. das Prompt, Befehlsnamen und Beschreibungen, Name der History-Datei usw. ('pp.translate' gibt eine Liste der änderbaren strings aus).
Beispiele
(1) pp .version gibt Version aus (2) pp "Program x.bin" programmiert x.bin in den Programmspeicher (3) pp "Dump x.dmp" schreibt den Inhalt des Programmspeichers nach x.dmp (4) pp Erase löscht gesamten PIC (5) pp "config 3ff1" schreibt 3ff1h nach Config (6) pp "id 3 3ff0" schreibt 3ff0h nach Id3 (7) pp "Program x.bin;config 3ff1" führt (2) und (5) aus (8) pp ".flags 35;P x.bin;c 3ff1" setzt flags auf 35h und führt (7) aus Tips
Wenn ein Programmier- oder Verify-Fehler auftritt, könnte es daran liegen, dass der PIC Code-protected ist. Dieser Zustand lässt sich nur mit "Erase" aufheben.
Wenn ein Programm ergolgreich programmiert ist, aber nicht läuft, ist eventuell das Config-Register nicht richtig gesetzt (z.B. könnte unabsichtlich der Watchdog enabled sein). Der richtige Wert für das Config-Register hängt auch von der Hardware ab (3ff1h bei der C-Mark).
![]()
5 C-Compiler
Der mitgelieferte C-Compiler ist ein Produkt der Firma CCS (Custom Computer Services). Informationen und Bedienungsdetails entnehmen Sie bitte dem Handbuch.
Bitte beachten Sie, dass das Downloadprogramm PIC.EXE Binärfiles zum Programmieren der C-Mark benötigt. Stellen Sie daher im C-Compiler unter Menüpunkt OPTIONS das Ausgabeformat als .BIN ein. Die richtige Dateilänge der Binärdatei ist immer 2048 Byte. Der Menüpunkt PROGRAMMING ist von CCS für ein externes Downloadprogramm vorgesehen. Die Kommandozeile für diesen Aufruf können Sie in dem Menüpunkt OPTIONS/Program Cmds einstellen. Wichtig dabei ist, dass Sie den gesamten Pfad des Donwloadprogramms hier eingeben.
z.B. C:\picc\pp ".flags 35;P %H;c 3ff1"
Der Bezeichner %H ist dabei ein Platzhalter für das erzeugte Binär-File vom PCM-Compiler.
![]()
6 Literatur
Für den PIC-Anwender steht eine ganze Serie an Fachliteratur sowohl zur Hardware als auch zur Programmierung bereit. Hier einige genannt:
C.-F. Urban: Mikrocontroller mit RISC-Struktur. Die PIC16Cx-Familie, 1994, 95 Seiten
Bestellbezeichnung: elek-1835
Preis: 20,-DM
Dieses recht dünne Bändchen aus der elector-compact-Reihe bietet einen gut strukturierten Überblick über die Hardware (Funktionsblöcke, Bus-Strukturen), die Befehlsreferenz und die elektrischen Eigenschaften der PIC16xx.C.-F. Urban: PIC Anwendungssammlung, 1995, 111 Seiten
Bestellbezeichnung: elek-1946
Preis: 34,80 DM
Diese Schaltungssammlung einschliesslich abgedruckter Platinenlayout ermöglicht den direkten Nachbau aller Schaltungen. Enthalten ist auch die Schaltung eines PIC-Programmers. Zur Programmierung der PIC16xx ist aber die o.g. Literatur empfehlenswert. Daher wirkt dieses Buch wie ein "Ergänzungsband" zu dem o.g. Buch des selben Autors.Michael Thieser: PIC Controller, 1995, 157 Seiten mit Diskette
Bestellbezeichnung: Franz-5214
Preis: 59,-DM
Anhand zahlreicher Beispielapplikationen werden die Bausteine PIC16C5x, PIC16C71 und PIC16C84 beschrieben. Desweiteren bietet der Autor eine Experimentierplatine an (nicht im Buch enthalten). Auf der mitgelieferten Diskette befinden sich zwei PIC-Assembler und die Beispielprogramme des Autors.K. Zahnert/C. Kühnel: BASIC Stamp, 1995, 254 Seiten mit Diskette
Bestellbezeichnung: Franz-5311
Preis: 59,-DM
Für den Anwender, der die BASIC-Briefmarke1 sein eigen nennt, ist dieses Buch sehr zu empfehlen, enthält es doch mehr als 20 Applikationen zur BASIC-Briefmarke1, einen Downloader, eine Entwicklungsumgebung mit Screen-Editor und den Programmen zu den beschriebenen Anwendungen.Scott Edwards/C. Kühnel: Das Parallax Assembler Arbeitsbuch zu den Mikrocontrollern PIC16Cxx, 1995, 108 Seiten mit Diskette
Bestellbezeichnung: emed-3102
Preis: 68,-DM
Eine Sammlung fertig einsetzbarer Assembler Routinen, übersetzt (und angepasst) aus dem Buch "The PIC-Source-Book" (unter den PIC-Usern der USA sehr bekannt). Auf der Diskette befindet sich neben den Assembler Sourcen der Parallax-Assembler und -Simulator. In der ELRAD 3/95 als besonders wertvoll für den Anwender der BASIC-Stamp hervorgehoben, der neben dem PBASIC für die BASIC-Stamp auch in (Parallax-) Assembler programmieren möchte. Desweiteren ist es für die Assembler-Programmierung insgesamt mit der Bezeichnung "Kochbuch" als Grundlagenwerk bzw. Kultbuch der PIC-Programmierer hervorgehoben worden.
www.mct.de: Produkte: Einplatinencomputer: C-Mark