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!
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. 
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.
![]()  | 
          
             Flash !! 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.   
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.
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: 30.12.2018