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!
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.
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.
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.
![]() |
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
Familien
|
| 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
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:
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:
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:
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.
![]() |
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:
Die SMD-Typen haben allerdings zwei Nachteile
|
| 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. |
![]() |
![]() |
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:
|
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.
| 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. |
![]() |
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.
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.
Am interessantesten sind C-Compiler:
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.
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.
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.
weiter: Ja. Ich will mein Glück mit PICs versuchen!
Autor: sprut
erstellt: 2000
letzte Änderung: 01.03.2011