PIC-Prozessoren - Einleitung


zurück zu PIC-Prozessoren , Elektronik , Homepage

Was ist denn überhaupt ein PIC
Warum sollte man PIC-Processoren benutzen?
Was sind besondere Stärken der PIC-Prozessoren?
Was sind Schwächen der PIC-Prozessoren?
Welcher PIC-Prozessor ist der richtige?
Was braucht ein PIC zum arbeiten an Peripherie?
Wo gibt es PIC-Prozessoren und Keramikresonatoren?
Sind PIC-Prozessoren empfindliche Bauelemente?
Wie schreibt man Programme für PICs?
Was leistet die kostenlose Entwicklungsumgebung MPLAB?
Gibt es Programmiersprachen für PICs?
Wie kommen denn nun die fertigen Programme in den PIC?
Welche Probleme kann man mit einem PIC lösen?

 

weiter:  Ja. Ich will mein Glück mit PICs versuchen!

zurück


Was ist denn überhaupt ein PIC?

Ein PIC ist ein Vertreter der Ein-Chip-Mikrocontroller. Während sich ein kompletter "Rechner" mit "normalem" Mikroprozessor immer aus mehreren Chips (IC) zusammensetzt, hat man bei den Ein-Chip-Mikrocontrollern alles in einen Chip integriert. Darunter leidet natürlich die Gesamtleistung des Systems, aber die Ein-Chip-Mikrocontroller sollen keine Wetterprognosen machen, und sie sind auch nicht für den Aufbau von Personalcomputern gedacht. Ein-Chip-Mikrocontroller werden benutzt, um kleine Steuerungsprobleme zu lösen, die mit analogen oder diskreten digitalen Schaltungen einen hohen Aufwand erfordern würden.

Um die herkömmliche Konkurrenz (analog oder diskret aufgebaut) aus dem Rennen zu werfen, müssen sie klein, billig und einfach zu handhaben sein. Damit sind sie auch eine interessante Alternative für den Elektronikbastler. Der muss weniger Aufwand in den Entwurf und den Bau von Stromkreisen stecken. Der eingesparte Grips wird in die Entwicklung eines Steuerprogramms gesteckt.

nach oben

Warum sollte man ausgerechnet PIC-Prozessoren benutzen?

Es gibt keinen speziellen Grund PIC-Prozessoren (also Mikrocontroller der Firma Microchip) zu bevorzugen. Sicherlich eignen sich auch andere Ein-Chip-Mikroprocontrollerfamilien zum Lösen vieler Probleme der Hobbyelektroniker. Jeder sollte sich aber für eine einzige Prozessorfamilie entscheiden und mit dieser dann alle anstehenden Probleme lösen. Es ist uneffektiv, von Projekt zu Projekt auf ein anderes Pferd zu setzen, nur weil der andere Chip in diesem Fall einen kleinen Vorteil bietet. Der Arbeitsaufwand, um sich in ein neues Prozessordesign und eine andere Entwicklungsumgebung einzuarbeiten, steht normalerweise in keinem Verhältnis zum zu erwartenden Nutzen.
Ich kam durch Zufall zu PICs, nutze ihre Stärken und lebe mit ihren Schwächen, ohne mich nun noch groß um andere Prozessoren zu kümmern.
nach oben

Was sind besondere Stärken der PIC-Prozessoren?

Fangen wir mal beim lieben Geld an. Was braucht man zum Einstieg in die Welt der Ein-Chip-Microcontroller?

1 - Eine Software-Entwicklungsumgebung, zum Erstellen der Programme (mit Assembler oder C-Compiler).
2 - Ein Programmiergerät, um die geschriebenen Programme in den Prozessor zu übertragen.
3 - Die Microcontroller selbst.
4 - Unterstützung im WWW.

Beim PIC-Hersteller Microchip gibt es die Entwicklungsumgebung (MPLAB) inclusive Assembler kostenlos zum Download. (Für die leistungsstärkeren PIC-Familien gibt es dort sogar C-Compiler. )
Bauanleitungen für preiswerte Programmiergeräte (5,- ..20,- €) sind inklusive Software im WWW kostenlos verfügbar. Z.B. auf meiner Homepage .
Die für Hobbybastler geeignetsten PIC-Prozessoren kosten pro Stück 2,-€  bis 10,-€.
Wer mal in eine WWW-Suchmaschine PIC eintippt, wird schnell fündig. PICs sind sehr verbreitet, was sie nicht zuletzt ihrem früheren Einsatz auf Sat-Decoder-Piraten-Karten zu verdanken haben.
Man investiert also weit unter 50,-€ für den Einstieg, und auch die Folgekosten halten sich in Grenzen.

nach oben


Was sind Schwächen der PIC-Prozessoren?

Aus meiner Sicht ist die Interruptverwaltung der einfachen PIC-Familien (PIC10F/PIC12F/PIC16F) eine Schwäche. Mit Z-80-Prozessoren aufgewachsen, bin ich es gewohnt, jeder Interruptquelle einen eigenen Interruptvektor zuzuordnen. Die PIC-Prozessoren unterstützen zwar viele Interruptquellen, haben aber nur einen Interruptvector. Das ist umständlich, wenn man in einem Programm mit mehreren Interruptquellen arbeitet. Die einzige Interruptbehandlungsroutine muss erst in Statusregistern nachschauen, welche Quelle den Interrupt ausgelöst hat, um dann die richtigen Programmschritte auszuführen.

Umfangreiche Berechnungen sind auch nicht gerade eine Lieblingsdisziplin der kleinen PICs. Sie rechnen nur mit 8-Bit-Zahlen, und beherrschen nur Addition und Subtraktion. Es lassen sich zwar mit Softwareroutinen auch große Fließkommaberechnungen anstellen, aber das ist umständlich, langsam und macht keinen Spaß. Außerdem verbraucht  z.B. eine 64-Bit Rechenroutine viele der knappen Register des PIC.

Um nicht ungerecht zu sein: es gibt PIC-Prozessoren der PIC18Fxxx-Serie, die nicht nur schneller getaktet werden können, sondern vor allem auch die Multiplikation in Hardware beherrschen. Auch die Interruptverwaltung ist bei den PIC18F... besser.

Auch die "großen" PIC24Fxxx, PIC24Hxxx, dsPIC30Fxxx und dsPIC33Fxxx spielen in einer ganz anderen Liga, sie sind aber noch nicht das typische Spielzeug der Hobbybastler. Diese Controller verarbeiten Daten in 16-Bit-Breite und die dsPICs haben eine zusätzliche Recheneinheit für digitale Signalverarbeitung.

nach oben


Welcher PIC-Prozessor ist der richtige?

Foto eines 16F84 und eines 16F876 Flash !! 
Für den Hobbyelektroniker kommen eigentlich nur PIC-Typen mit Flash-Speicher in Frage, man erkennt sie am "F" in der Mitte der Typenbezeichnung. Nur diese Typen sind flashbar, d.h. man kann sie nahezu beliebig oft umprogrammieren. Andere Typen (mit einem 'C' anstelle des 'F' in der Typenbezeichnung) sind nicht zu empfehlen, da sie entweder nur einmal programmiert werden können (OTP), oder umständlich wie EPROMS mit UV-Licht gelöscht werden. Die UV-löschbaren PICs sind obendrein recht teuer.
Ich beschäftige mich ausschließlich mit flashbaren PICs, also mit PICs der Serien PIC16F.../PIC12F.../PIC18F.../PIC10F.../PIC24.../dsPIC30F.../dsPIC33F...

Gehäuse
Die kleinsten PICs haben nur 6 Pins, die größten haben derer 100. Für Bastler eignen sich vor allem Typen im DIL-Gehäuse mit 8, 14, 18, 28 und 40 Pins. Mit ihnen lassen sich einfache Platinenlayouts realisieren.

Familien
Zwei PIC-Familien eignen sich besonders für Bastler. 

  • Die etwas älteren 14-Bit-Kern-PICs haben Bezeichnungen, die meist mit "PIC16F..." beginnen. Im Web findet man jede Menge fertiger Schaltungen mit diesen Typen, und der Buchhandel bietet auch geeignetete Literatur (wenn auch nicht auf dem aktuellen technischen Stand). Sie sollten vorzugsweise in Assembler programmiert werden, was an den Anfänger recht hohe Forderungen stellt.

  •  
  • Die moderneren 16-Bit-Kern-Typen heißen "PIC18F...". Sie sind rundweg besser ausgestattet und können problemlos in C programmiert werden, da sie viel Programmspeicher haben und ein C-Compiler für nichtkommerzielle Zwecke frei verfügbar ist. Es mangelt aber noch an fertigen Anwendungen im Web sowie an geeigneter Literatur. Sie sind auch etwas teurer.
Vorschläge
Um in der Typenvielfalt den Überblick nicht zu verlieren, sollte man sich zum Anfang auf einige wenige PIC-Typen beschränken. Im Folgenden stelle ich einige typische Universal-PICs vor, die auch den Vorteil haben, bei den Bastler-Online-Shops von Reichelt und Conrad (teurer) gelistet zu sein:
 
Gehäuse  \  Familie PIC16F... PIC18F...
8 Pins PIC12F675 -
18 Pins PIC16F628A
PIC16F819
PIC16F84 (veraltet)
PIC18F1320
28 Pins PIC16F886
PIC16F876A
PIC18F252
PIC18F2550 (USB)
40 Pins PIC16F887
PIC16F877A
PIC18F4550

Eine umfassendere Auflistung interessanter Typen befindet sich hier .

Im Web und in der Literatur stößt man immer wieder auf den PIC16F84. Das war der erste echte Flash-PIC, und er wurde deshalb mit Begeisterung aufgenommen. Heute ist er veraltet und wird bei den Händlern zu Apothekenpreisen angeboten. Wer mit PICs heute anfängt, sollte einen preiswerteren, leistungsstärkeren Nachfolgetyp wie den PIC16F628A verwenden. Viele PIC16F84-Anwendungen lassen sich mit geringem Aufwand an modernere PICs anpassen.

Nun noch mal einige PICs im Detail:
 

PIC 16F84 (A)
Der 16F84 ist mit 18-pins (DIL-Gehäuse) recht klein. Er verfügt über

Dieser Chip ist mit einer Taktfrequenz von bis zu 10 MHz verfügbar (als modernisierter PIC16F84A auch bis 20 MHz).

Der 16F84 eignet sich für alle einfachen Anwendungen, bei denen keine analogen Werte gemessen werden müssen. Er kann Impulse ausmessen und erzeugen, kleine Tastaturen abfragen, LCD-Displays ansteuern, und auch wenn er keine Hardware für die serielle Kommunikation besitzt, so kann man doch eine serielle Schnittstelle durch ein wenig Software realisieren. (siehe hier )
Der PIC18F84 war der erste PIC mit richtigem Flash-Programmspeicher, womit er der ideale Bastler-PIC wurde. Dementsprechend wuchs seine Polularität. Im Web finden sich viele Anwendungen für den 16F84, der aber nun im PIC16F628 und im PIC16F818/819 seine Meister und würdige Nachfolger gefunden hat. Die neueren Typen sind nicht nur leistungsstärker, sondern oft auch billiger. Wer eine Schaltung mit dem 16F84(A) einfach nachbauen will, ohne sich mit den Internas von Hard- und Software zu beschäftigen, der kann diesen Typ verwenden. Wer sich aber mit PICs intensiver beschäftigen möchte, sollte um diesen Großvater lieber einen Bogen machen.
 

PIC 16F87x (A) / PIC16F88x
Seit 2000 gibt es „größere“ flashbare PICs, die 16F87x-Familie. Mein Standardtyp ist der 16F876. Er verfügt über:

Dieser Chip ist mit einer Taktfrequenz von bis zu 20 MHz verfügbar.

Der 16F876 ist mit 28 Pins schon etwas größer als der 16F84. Sein großer Vorteil sind die analogen Eingänge zum Messen von Spannungen. Ansonsten hat er von allem etwas mehr als sein kleiner Bruder: mehr Ein/Ausgänge, mehr Timer mehr Speicher und mehr Geschwindigkeit.
Die integrierte serielle Schnittstelle vereinfacht die Realisierung einer RS-232-Verbindung z.B. zu einem PC (verlangt aber einen zusätzlichen invertierenden Treiberbaustein).

Der größere PIC16F877 hat einen zusätzlichen 8-Bit-Port, und ist mit seinen 40 Pins eigentlich schon etwas groß.

Als leicht verbesserte Versionen der PIC16F87x brachte Microchip die PIC16F87xA auf den Markt. Für den Anwender macht es kaum einen unterschied, ob er den 16F87x oder den 16F87xA verwendet.
Als nächste Version erschien die 16F88x-Familie, die als Ablösung der 16F87x(A) zu betrachten ist. Sie sind recht kompatiebel zu den Vorgängern, weisen aber eine Reihe kleiner Verbesserungen auf. Als Trumpf bringen sie einen nanoWatt-Oszillatorschaltung mit. Die ermögliche bei vielen Anwendungen den Verzicht auf externe Taktquellen und hilft Strom zu sparen.

Eine etwas abgespeckte Version der PIC16F87x-Familie ist die PIC16F7x-Familie. Ihr fehlt ein EEPROM , mit dem man Daten dauerhaft speichern kann. Außerdem haben sie sich als etwas problematisch beim Brennen des Flash-Speichers erwiesen. Ich empfehle lieber die richtigen PIC16F87x oder PIC16F88x zu verwenden.
 

PIC 16F62x
Seit 2001 gibt es die 16F62x-Familie (16F627 und 16F628). Diese PICs können die 16F84 verdrängen, denn sie haben die gleiche Größe (18-Pin-Gehäuse) bei einer deutlich verbesserten Ausstattung:

Dieser Chip ist mit einer Taktfrequenz von bis zu 20 MHz verfügbar.
Vor allem die 16-Bit Timer und die serielle Schnittstelle wurden am 16F84 immer vermisst. Bei Reichelt und Farnel kosten diese PICs sogar weniger als 5 €. Was will man mehr?
 

PIC 12F6xx
Seit 2002 gibt es die 12F6xx-Familie (12F629 und 12F675). Diese PICs sind spottbillig (2 ... 4 €) und haben nur 8 Pins. Sie eignen sich gut für kleine Steueraufgaben, der 12F675 besitzt sogar einen ADC:


PIC 16F630/676
Diese Typen sind eigentlich 12F629/675-Schaltkreise, die um 6 I/O-Pins erweitert wurden. Folglich stecken sie in einem 14-Pin-Gehäuse: PIC 18F4550

Das ist ein Vertreter der leistungsfähigeren 16-Bit-Kern-PICs. Diese kennen zusätzliche Befehle und eignen sich generell für eine Programmierung in der Sprache C, was den Entwurf von umfangreicher Software doch etwas einfacher macht.

Dieser Chip für eine Taktfrequenz von bis zu 48 MHz ausgelegt.



Es gibt auch Prozessoren der Serien PIC24, dsPIC33, dsPIC30Fxx oder PIC32, die aber für Bastelerzwecke meist überdimensioniert sind. Mit sinkenden Preisen, steigender Verfügbarkeit bei den Händlern und zunehmendem Unwillen sich mit Assembler zu quälen, werden aber vor allem die PIC18F-Typen zunehmend an Popularität gewinnen, und die PIC16F/PIC12F mittelfristig in die Ecke drängen.

 
Für Leute mit kleinen Fingern oder mit wenig Platz auf der Platine gibt es die PICs natürlich auch als SMD. Auf nebenstehendem Bild sind von oben nach unten zu sehen:
  • PIC12C509-04/SM (nicht flash-bar)
  • PIC16F84-10/P und .../SO
  • PIC16F876-20/SO
Der direkte Vergleich zwischen der DIL und der SMD-Bauform des 16F84 zeigt, dass der SMD-Typ nur die halbe Breite hat. Noch eindrucksvoller würde ein Vergleich zwischen den unterschiedlichen Gehäusebauformen des PIC16F876 ausfallen.

Die SMD-Typen haben allerdings zwei Nachteile

  • das Leiterplattenlayout ist schwieriger
  • das Brennen (laden des Programms in den PIC) geht nur über die ICSP -Schnittstelle, es gibt keine bezahlbaren Brenner (Programmiergeräte) mit SMD-Fassungen.
Für die ersten Schritte empfehle ich deshalb PICs im großen DIL-Gehäuse.
nach oben


Was braucht ein PIC zum arbeiten an Peripherie?

Eigentlich nur eine Betriebsspannung von ca. 5 V und einen Takt. Viele moderne PICs können den Takt auch intern erzeugen.

Die Betriebsspannung ist je nach Typ in Toleranzen variierbar. Der Bereich von 4 V bis 5,5 V ist unkritisch. Bei einigen Typen kann man die Spannung bis auf 2 V absenken, ohne den sicheren Arbeitsbereich zu verlassen.

Die Stromaufnahme des Prozessorkerns ist vom Takt abhängig, überschreitet aber beim maximalen Takt nie 15 mA. Dazu kommt noch der Strom, den der PIC aufwenden muss, um über digitale Ausgänge andere Bauteile anzusteuern. Wenn man z.B. mit dem PIC 8-Leuchtdioden ansteuert, werden dafür natürlich auch einige 10 mA zusätzlich benötigt. Die Ausgangspins eines PIC können übrigens bis zu 20 mA liefern, weswegen zusätzliche Treiber oft nicht nötig sind.

Nebenstehendes Bild zeigt eine typische Grundbeschaltung für einen PIC16F84. Die mit 'Port A' und 'Port B' beschrifteten Boxen sind lediglich Steckverbinder zu den zu steuernden oder zu überwachenden Schaltungen. Der 5V-Steckverbinder liefert die Betriebsspannung, und der blaue 'CST...' ist ein Keramischer Schwinger, der den Takt für den PIC bereitstellt. Eigentlich ganz einfach.

Grundbeschaltung eines PIC16F84
Foto aller drei Taktquellen Als Taktquellen haben sich keramische Schwinger mit integrierten Kondensatoren (Keramikresonator) bestens bewährt. Die kosten nur 1,- €, sind kleiner als ein Quarz und werden ohne zusätzliche Bauelemente einfach an den PIC angeschlossen. Ihr Frequenzfehler liegt bei 0,5 %. 

Wer es penibel genau mag, der nimmt einen Quarzoszillator oder einen Quarz. Der Quarz benötigt aber noch zusätzlich 2 Kondensatoren und evtl. einen Widerstand. Keramikresonatoren für mehr als 12 MHz sind schwer zu finden. Wer die 20 MHz der schnellen PICs nutzen will, wird  deshalb eher Quarze und Quarzoszillatoren verwenden.

Das nebenstehende Bild zeigt von links nach rechts:

  • Quarzoszillator
  • Quarz (HC18-Gehäuse)
  • Keramikresonator (blaues CST-Gehäuse) (Schwinger mit integrierten Kondensatoren)
Wer gern mit SMD-Bauteilen arbeitet, findet auch Quarze und Schwinger im Kleinformat. Im nebenstehenden Bild sieht man zwischen den beiden Normalbauformen (links: Keramikresonator, rechts: Quarz) von oben nach unten:
  • SMD-Quarz
  • Keramikresonator
  • Keramikresonator
nach oben


Wo gibt es PIC-Prozessoren und Keramikresonatoren ?

PICs sind recht populär. So kann man PICs z.B. bei Conrad bestellen. Dort gibt es auch Keramikschwinger bis 10 MHz.

Andere Anbieter sind   z.B. Farnell, Memec oder Elpro .

Wer eine schnelle Lieferung zu recht günstigen Preisen möchte, sollte bevorzugt bei Reichelt bestellen.

Auch bei Keramikresonatoren über 10 MHz sollte man mal bei Reichelt oder RS und nicht bei Conrad nachschauen. Wer nur 4-MHz- oder 8-MHz-Keramikresonatoren braucht, findet diese im Conrad-Katalog bei den Quarzoszillatoren und bei den Keramikresonatoren unter der Bezeichnung "Schwinger mit integrierten Kondensatoren". (Conrad Bestellnummern: 4MHz: 50 31 69-xx; 8MHz: 50 39 67-xx

Bei Pollin gibt es für ein Butterbrot 20-MHz-Quarzoszillatoren. Die sind besonders deswegen interessant, da 20 MHz-Keramikresonatoren kaum erhältlich sind.

nach oben


Sind PIC-Prozessoren empfindliche Bauelemente?

Ich habe bisher nur zwei Mal einen PIC zerstört, und ich kenne jemanden der an einem PIC eine Ausgangsleitung getötet hat. Kurz und gut, die Dinger sind sehr robust.  Trotzdem sollte man natürlich die üblichen Regeln für den Umgang mit Halbleitern beachten. Denn garantiert wird nur die Funktion  im zuglassenen Arbeitsbereich und bei korrekter Handhabung.

Viele Leute glauben immer noch, dass man MOS-Schaltkreise (wie z.B. PICs) schon durch bloßes Berühren der Pins zerstören kann. Theoretisch stimmt das zwar, doch kommt es in der Bastlerpraxis kaum vor. Alle Pins sind durch Schutzdioden gegen Überspannung (also auch statische Ladungen) geschützt. Ich persönlich behandle inzwischen PICs nicht anders als nicht-MOS-Schaltkreise, und ich hatte trotzdem noch nie Probleme durch elektrostatische Ladungen.

Da man einen PIC, bis alles funktioniert, häufig aus seiner Fassung nimmt und wieder hineinsteckt, besteht die größte Gefahr für den PIC darin, dass man seine Pins verbiegt und danach wieder ausrichten muss. Das geht höchsten 3 mal gut, danach bricht der Pin einfach ab . Deshalb benutze ich stets ein IC-Ausziehwerkzeug (Bild rechts), um ihn aus der Fassung zu entfernen, auch wenn das etwas dekadent anmuten mag.

Ebenfalls durch das häufige Ein- und Ausstecken und die damit verbundene Routine besteht ständig die Gefahr, den Schaltkreis versehentlich falsch herum in den Sockel zu stecken. Das quittiert der PIC dann mit starker Erwärmung die innerhalb einiger Sekunden zum Tode führt. (Auf diese Art und Weise habe ich zwei PICs verloren.) Ich kennzeichne deshalb auf den Leiterplatten die Position von Pin 1 zusätzlich mit einer auffälligen, schwarzen Markierung. Auch markiere ich gern Pin1 der PICs mit einem Tropfen Tip-Ex auf dem Chip, auch wenn das unprofessionell aussieht.

Manuel Krüger gab mir den Tip, in der Entwicklungsphase, wenn ein PIC oft gebrannt wird, den PIC nicht einzeln zu benutzen, sondern ihn in einen Präzisionssockel zu stecken, und dieses Doppelpack dann wechselseitig in den Brenner bzw. in die Testschaltung zu stecken. Falls dann was verbiegt, ist nur der Sockel Schrott.

IC-Ausziehwerkzeug MC-03

Nachtrag:
Ich habe versehentlich einen dritten PIC getötet. Durch einen Fehler in der Programmiergerätesoftware  habe ich ihn wiederholt mit einer Programmierspannung von über 25V "versorgt". Maximal zulässig waren nur 13,5V. Ich nehme ihm nicht übel, dass er das nicht vertragen hat.

Nachtrag 2:
Nach weit über 10 Jahren habe ich nun das erste Mal einen PIC in meiner Sammlung, der Fehler im Flash-Speicher aufweist. Einige wenige Bits des Programmspeichers lassen sich nicht brennen. Da der Chip eigentlich nagelneu ist, ist es wohl ein Fertigungsfehler, der bei der Endkontrolle durchgeschlüpft ist. In diesem Zusammenhang will ich noch mal darauf hinweisen, dass bei mir noch kein einziger PIC - egal wie oft ich ihn programmiert habe - Ermüdungserscheinungen in den Speicherzellen gezeigt hatte.

nach oben


Wie schreibt man Programme für PICs?

Man schreibt ein Assembler- oder C-Programm mit einem Text-Editor, und lässt das dann vom Assembler oder Compiler in ein HEX-File umwandeln. Das HEX-File wird dann durch ein Programmiergerät in den PIC "gebrannt". Das Schreiben, Assemblieren, Compilieren (und wenn man einen Microchip-Programmiergerät besitzt auch das Brennen) erfolgt unter Windows mit einem kostenlosen Softwarepaket, das sich "integrierte Entwicklungsumgebung MPLAB" nennt.

Für die keinen PICs (PIC10F / PIC12F / PIC16F) empfehle ich das Programmieren in Assembler.
Bei den größeren PICs (PIC18F / PIC24F / PIC24H / dsPIC30F / dsPIC33) empfehle ich das Programmieren in C.

nach oben

Was leistet die kostenlose Entwicklungsumgebung MPLAB?

Mit ihr kann man Programme im Assemblercode entwickeln. Da der Befehlssatz des PIC nicht mal 40 Befehle umfasst, ist das auch gar nicht so schwer.
Ich arbeite überwiegend mit Assembler. Compiler für höhere Programmiersprachen (von denen aber einige nicht kostenlos sind) lassen sich im MPLAB problemlos einbinden.

Das Resultat ist dann ein *.HEX-File, das den fertigen Code enthält. Besitzer eines von Microchip vertriebenen Programmiergeräts (PICstart, PICkit2, ICD2) können dieses aus der Entwicklungsumgebung MPLAB heraus direkt ansteuern und das *.HEX-File in den PIC übertragen.

Besitzer anderer Programmiergeräte 'brennen' das HEX-File mit der zum Programmiergerät gehörenden Software in den PIC.

Eine mit MPLAB vergleichbare kostenlose Entwicklungsumgebung für Microcontroller ist mir ansonstern nur noch für Atmel-Controler bekannt.

nach oben


Gibt es "richtige" Programmiersprachen für PICs?

Ja gibt es, und die lassen sich meist als Plug-In in MPLAB integrieren.

Am interessantesten sind C-Compiler:

Eine interessante Alternative für Bastler ohne Programmiererfahrung scheint Parsic zu sein. Das ist ein grafisches Tool, mit dem man sich sein PIC-Programm sozusagen zusammenklicken kann. Für einfache Programme kann das interessant sein. Das kostenlose Demo kann leider nicht speichern, und die Vollversion kostet leider 100 €. Zum Ausprobieren zu teuer, für professionellen Einsatz zu beschränkt, es sei denn man importiert Programmteile aus anderen Entwicklungsumgebungen. Der Ansatz ist aber lobenswert.

Unter dem Namen JAL gibt es eine Art 'Hochsprache' für PICs die etwas an Pascal erinnert.

Von Microchip selbst gibt es 'Maestro', mit dem sich Programme aus 'Bausteinen' zusammenbasteln lassen.

Ich  programmiere PICs fast ausschließlich in Assembler und nur wenig in C. Stellt mir bitte keine Fragen bei Problemen mit anderen Programmiersprachen.

Alle höheren Programmiersprachen ist ein Problem gemeinsam: im Vergleich mit Assembler produzieren sie einen extrem uneffizienten Code. Schon kurze Pascal-Programme füllen den kleinen Programmspeicher eines PIC16Fxxx. Deshalb ist der Einsatz von Hochsprachen meiner Meinung nach nur bei PIC18Fxxx und größeren PICs angebracht.
Von den Problemen der Hardware-Initialisierung kann man sich mit Hochspachen auch nicht restlos freikaufen, aber in C programmiert man viel schneller als in Assembler.  

nach oben


Wie kommen denn nun die fertigen Programme in den PIC?

Das machen Programmiergeräte, sogenannte "Brenner" . Das sind kleine Kästen, die an die serielle Schnittstelle, die USB-Schnittstelle oder den Druckerport des PC angeschlossen werden. Der Brenner hat eine Schaltkreisfassung, in die der PIC gesteckt wird. Diese Geräte gibt es als Fertiggeräte, man kann sie aber auch selbst bauen.

Wer ca. 230,- € zu viel hat kann bei Conrad den "PICstart Plus" von Microchip kaufen (bei Reichelt ca. 260,-€ ). Dieses industrielle Gerät wird auch direkt von der Entwicklungsumgebung MPLAB unterstützt. Der PICStart kann alle am Markt verfügbaren PIC-Typen "brennen", nimmt sich dafür aber sehr viel Zeit.

Für ca. 50,- € gibt es von Microchip das PICkit1. Das ist eine kombinierte Brenn- und Experimentier-Platine für 8- und 14-beinige Flash-PICs.

Für ca. 125,- € gibt es einen 16F84-Programmiergerät bei ELV. Als Bausatz kostet es nur 80,- €. Ich hatte so ein Gerät noch nicht in den Händen, aber die Beschränkung auf den kleinen PIC ist ein großer Nachteil.

Wer lieber nur 15,- € ausgeben möchte, für den gibt es Bauanleitungen für einfache „Brenner“ die am Parallelport angeschlossen werden . Das teuerste an diesen Geräten ist die Schaltkreisfassung  (man sollte sich einen 0-Kraft-Sockel gönnen), und das Steckernetzteil. Ich habe verschiedene Windowsprogramm geschrieben, die diese Brenner komfortabel ansteuert, und alle PIC10Fxxx-, PIC16Fxxx-, PIC18Fxxxx und dsPIC30Fxxxx-Typen brennen können.

Wer nur mal schnell einen PIC brennen will, ohne großen Aufwand zu treiben kann zum Brenner0 oder dem "Quick and Diry-Brenner" greifen. Sowas ist in einer halben Stunde zusammengelötet und sollte mit der Tait-DPS-Software (DOS) oder meinem alten Windowsprogramm PBrenner zu betreiben sein. Wer mehr als einen PIC brennen will, sollte aber von dieser Primitivlösung lieber Abstand nehmen. Außerdem streiken diese Einfachbrenner oft an modernen PCs. Wer noch einen 400MHz-PII im Keller findet, kann sein Glück versuchen.

Wer es abenteuerlich mag, für den gibt es Bauanleitungen und Software für minimalistische 16F84-Brenner, die am seriellen Port angeschlossen werden und kein Netzteil benötigen. Auch die beschränken sich oft auf die 16F84-Familie, und gelten nicht als sehr zuverlässig.

Lange Zeit favorisierte ich den Brenner5 und den Brenner3. Das sind preiswerter Druckerportbrenner und brennen mit der richtigen Steuersoftware nahezu alle PICs. Die Steuersoftware ist in Delphi geschrieben und läuft unter Windows95/98/NT/2k/XP. Die Nutzung an Notebooks ist etwas Glückssache.

Meine neuen Lieblinge sind der Brenner8 und der Brenner9 der gerade in der Erprobung ist. Sie werden an den USB-Port angeschlossen, und eignet sich dadurch für viele neuere PCs, die keinen Druckerport mehr besitzen.

Sehr gut gefallen mir die neuen minimalistuischen Brenner BFMP PICkit-2  und PICkit-3 von Microchip mit USB-Anschluss. Da ist man mit (deutlich) unter 50 Euro dabei, und kann die Brenner direkt aus der MPLAB-Entwicklungsumgebung heraus ansteuern. Das PICkit-3 eignet sich sogar als Debugger.

nach oben


Welche Probleme kann man mit einem PIC lösen?

Große und auch ganz kleine.
Viele Bastler glauben, einen Prozessor zu benutzen, wäre wie mit Kanonen auf Spatzen zuschießen. Dem ist aber nicht ganz so.

Beispiel für ein kleines Problem
Auf einer Modelleisenbahnanlage sollen die 8 Laternen einer Straßenbeleuchtung vorbildgerecht eingeschaltet werden. Dazu müssen sie beim Einschalten unabhängig voneinander unregelmäßig flackern, bis sie schließlich alle gleichmäßig und hell leuchten.
In konventioneller Bauweise ist der Aufwand erheblich. Benutzt man aber einen PIC, so verbindet man einfach 8-Pins mit den Lampen (falls die Leistung der Lampen zu hoch ist benötigt man noch jeweils einen Treibertransistor), schließt einen Keramikschwinger an und lädt den PIC mit einem Programm, das das gewünschte Einschaltverhalten simuliert.

Beispiel für ein mittleres Problem
Ein selbstgebautes elektronisches Gerät soll über eine serielle Schnittstelle vom PC aus gesteuert werden.
Man baut in das Gerät einen PIC ein, der die serielle Schnittstelle enthält und mit seinen digitalen/analogen Leitungen mit den Steuerfunktionen des Geräts verbunden ist. Der PIC kommuniziert mit dem PC und steuert dementsprechend das Gerät.

Beispiel für ein originelles Problem
Man hätte gern wieder eine Armbanduhr mit integriertem wissenschaftlichen Taschenrechner.
Seit 1985 gibt es keine Armbanduhr mit echtem wissenschaftlichem Taschenrechner mehr, sondern nur noch Rechenkrüppel für die 4 Grundrechenarten. Ein echter Nerd baut sich sowas selbst. (www.calcwatch.com)

Beispiel für ein großes Problem
Ein ferngesteuertes Modellflugzeug soll mit einem Autopiloten versehen werden, der zusätzlich zur Funkfernsteuerung das Flugverhalten nach Sensordaten stabilisiert.
Ein PIC wird in die Leitungen zwischen Fernsteuerempfänger und Rudermaschinen des Flugzeugs geschaltet. Über weitere Anschlüsse wird er mit Sensoren für den Luftdruck, die Geschwindigkeit und die Beschleunigungskräfte versehen. Er misst die Länge der vom Boden gesendeten Fernsteuerimpulse und verändert sie nach ausgefeilten Regelgesetzen in Abhängigkeit von den Sensordaten. Die veränderten Impulse steuern die Rudermaschinen des Flugzeugs und damit das Flugzeug selbst.

All diese Beispiele sind keine Ausgeburt der Phantasie, sondern real existierende Anwendungen für PICs.

nach oben

weiter:  Ja. Ich will mein Glück mit PICs versuchen!



zurück zu PIC-Prozessoren , Elektronik , Homepage

Autor: sprut
erstellt: 2000
letzte Änderung: 01.03.2011