PIC-Mikrocontroller Mikrocontroller in eigenen Hobbyprojekten nutzen - Mikrocontroller Definition und Historie - die PIC-Familie - Entwicklungssysteme - Programmierung - Softwareerstellung - Debugging Wulf Pompetzki OV Duisburg-Huckingen, L16 Mikrocontroller - Definition µcontroller, µc - Ein-Chip-Computersystem, das Prozessor, Speicher und Peripheriefunktionen auf einem Chip enthält. Anwendungen z.b. zur Steuerung von: - Waschmaschinen, - Radios, CD-Player - Spielzeuge, - Chip-Karten, - Fernbedienungen, Uhren, - Motorsteuerungen, Airbag-Systeme (Mittelklassewagen typ. ca. 30 Stück), - Computer Peripherie wie Tastatur (z.b. Intel 8048), Maus, Drucker etc., - Transceiver, elektronische Morsetasten, Automatiktuner. PIC-Controller 2 Seite 1
Mikrocontroller - Historie 1 Mikroprozessoren, µp ab 1971 (Intel 4004) gebaute ICs zum Aufbau von Mikrorechnern; Speicher und Peripherie müssen extern ergänzt werden, heute in Form von PCs weit verbreitet. Für kleine Gerätesteuerungen zu aufwändig und zu teuer. Amateurnutzung möglich, erfordert EPROM Programmierer Bsp.: mc EMUF - erschienen 1981, - Steuerrechner auf Europakarte, - CPU Rockwell R6504 - Preis ca. 100,- DM PIC-Controller 3 Mikrocontroller - Historie 2 Mikrocontroller ab Mitte der 70er-Jahre, meist als Weiterentwicklung eines µp, z.b. Rockwell R6502 zum R6511. Nutzung durch Amateure Zunächst nicht möglich, da Programmspeicher bei der Herstellung erzeugt wird - "maskenprogrammiert". Ab Mitte der 80er-Jahre dann aufwendige und teure Sonderlösungen wie integriertes EPROM oder "Piggyback". Erst Programmspeicher im EEPROM (erstmals 1993 im Microchip PIC16C84) oder später Flash erlauben einfache Programmierung. PIC-Controller 4 Seite 2
die PIC-Familie 1 "Urtyp" PIC1650 - Peripheral Interface Controller von General Instruments entwickelter 8-Bit Prozessor. Weiterentwicklung und Vermarktung durch Microchip Technology heute auch 16- (PIC24) und 32-Bit (PIC32) Versionen sowie spezielle dspic für die Signalverarbeitung. Besonderheiten der 8-Bit Versionen - getrennter Code- und Datenspeicher ("Harvard architecture"); - sehr kleiner Befehlsumfang (35 Befehle beim "Mid-Range Core"); - schnell (1 Befehlszyklus = 4 Takt-Zyklen = 200ns bei 20 MHz Takt); - nur 1 Akkumulator, aber: gesamtes RAM wie Register ansprechbar; - RAM und Peripherie in Banks organisiert; - Hardware Stack (8 Level); - Gehäuse 6 bis 64 Pins, vielfältige integrierte Peripherie (Timer, serielle Schnittstellen, A/D, D/A, PWM, I²C, SPI, CAN, USB, Ethernet); - XLP-Versionen für Low-Power (9 na Sleep, 30 µa/mhz). PIC-Controller 5 PIC 16F84A 18 Pins 13 I/O-Pins 1k Programm 68 Bytes RAM 64 EEPROM 13 I/O-Pins ICSP Befehl: movlw movwf 0x7C 0x05 0x307C 0x7C 0x001 0x000 movlw! 0x7C PIC-Controller 6 Seite 3
PIC 16F84A - Register Organisation - aufgeteilt auf 2 "Banks" - im unteren Bereich Ergebnis- und Steuerregister von Prozessor und Peripherie - im oberen Bereich RAM (in beiden Banks identisch) PIC-Controller 7 die PIC-Familie 4 PIC 16F84A - Gehäuse Beschaltung OSC1/CLKIN Taktgenerator - Quarz oder RC-Osz. / Eingang ext. Takt OSC2/CLKOUT Taktgenerator - Quarz-Osz. / Takt ext. Ausgabe MCLR Reset Eingang / Programmierspannung (RB6 / RB7 beim Programmieren Takt- bzw. Dateneingang) RA4/T0CKI Bi-directional I/O-Port / externer Eingang Timer Takt RB0/INT Bi-directional I/O-Port / externer Interrupt-Eingang RA0-3 Bi-directional I/O-Port RB1-7 Bi-directional I/O-Port V SS Masse V DD Versorgung 2,0 bis 5,5 Volt PIC-Controller 8 Seite 4
Entwicklungssysteme - Software 1 MPLAB IDE frei verfügbar, enthält: - Assembler, - Linker, - Simulator, - eingeschränkte C-Compiler, - Microchip Programmer und Debugger werden eingebunden. PIC-Controller 9 Entwicklungssysteme - Programmer 2 "Homebrew"-Programmer Diverse Schaltungen für serielle und parallele PC-Schnittstellen. Microchip PICStart Plus Programmer (ca. 180,- EUR, heute eher obsolet). PIC-Controller 10 Seite 5
Entwicklungssysteme - Debugger 3 Microchip USB-Programmer/Debugger - PICkit 2 Debug Express (35,- / 55,- EUR mit Demo-Board) - PICkit 3 Debug Express (43,- / 63,- EUR mit Demo-Board) - MPLAB ICD 3 (ca. 180,- EUR) PIC-Controller 11 Entwicklungssysteme - Demo Boards 4 Beispielprogramm auf MPLAB-ICD Demo Board Controller PIC16F877 RC-Oszillator (ca. 4 MHz) Beschaltung: 8 LEDs an RC0-7 1 Poti an RA0 1 Taster an RB0 Aufgabe: Poti-Stellung an LEDs anzeigen. PIC-Controller 12 Seite 6
Softwareerstellung 1 Hier in Assembler... Start org 0x000 ;Start am Reset Vector nop ;für Debugger bcf STATUS, RP0 ;Auswahl Bank0 clrf PORTC ;PORTC=B'00000000', LEDs aus movlw B'11000001' ;A/D Takt RCosc, A/D aktiv movwf ADCON0 bsf STATUS, RP0 ;Auswahl Bank1 movlw B'10000111' ;Timer0 Vorteiler 1:256 movwf OPTION_REG movwf TRISC ;PORTC alles Ausgänge movlw B'00001110' ;A/D linksbündig, 1 Kanal, movwf ADCON1 ;Versorgung als Referenz Main bcf STATUS, RP0 ;Auswahl Bank0 btfss INTCON,T0IF ;Warte auf Ablauf Timer0 goto Main bcf INTCON,T0IF PIC-Controller 13 bsf ADCON0,GO ;Starte A/D Wandler Softwareerstellung 2...oder in C möglich void main(void) { SysInit(); for (;;) { switch(nstate) { case ST_INIT: StateInitial(); break; case ST_VOLTMETER: StateVoltage(); break; case ST_TEMPERATURE: StateTemperature(); break; case ST_CLOCK: PIC-Controller 14 // System Initialization // Main Infinite loop // Depending on current state // Initialization State // Voltmeter Selection mode // Temperature Selection mode // Clock mode selection display StateClock(); break; } // Depending on current state (Main state machine) } // Main infinite loop } Seite 7
Debugging 1 In-Circuit Debugger - Fenster in den laufenden Controller erlaubt direkt in der Zielschaltung: - Programmierung - kontrollierter Betrieb in Echtzeit - Einblick in: -Register, - Speicher, - I/O-Anschlüsse - Manipulation des Programmablaufs a.) Platine mit Schnittstelle - Controller in der Zielschaltung b.) Platine ohne Schnittstelle - Controller auf Header-Board PIC-Controller 15 Debugging 2 Die IDE und der Hardware-Debugger unterstützen durch: - Programmierung und Fernsteuerung des Prozessors in der Zielschaltung - Start / Stopp / Einzelschrittbetrieb - Parallele Anzeige im Assembler - Echtzeit Anzeige/Änderung von Registern und Speicher PIC-Controller 16 Seite 8
Weiterführende Informationen www.microchip.com Datenbücher und -blätter, Entwicklungssysteme, englischsprachig. http://pic-projekte.de/wiki/ PIC-Projekte Wiki, gute Tutorials zu PIC und MPLAB IDE, deutschsprachig. www.sprut.de/electronic/pic/ Umfangreiche deutsche Infos zu PICs, Brenner, Projekte... www.suncol.de Lerneinheiten zum PIC 12F675, deutschsprachig. www.chemgapedia.de/vsengine/vlu/vsc/de/ch/11/cmt/vlus/pic_progr amm.vlu.html Tutorial zur PIC-Programmierung, gute Beschreibung der Befehle, deutschsprachig. PIC-Controller 17 Bezugsquellen www.reichelt.com Entwicklungssysteme, Controller PIC12/16/18/24/32/dsPIC (gute Auswahl). www.conrad.de Entwicklungssysteme, Controller PIC12/16/18/24 (Grundangebot). www.farnell.de bzw. www.hbe-berlin.de Entwicklungssysteme, Controller (sehr gute Auswahl), Verkauf an Privat nur über Fa. HBE. Preisbeispiele für einige 18-Pin Controller Reichelt Conrad Prg RAM EEP Timer Sonstiges 16F84A 4/20 2,20/3,15 6,73/8,64 1k 68 64 1 16F628A 1,75 1,98 2k 224 128 3 Osc/PWM 16F648A 2,30 2,98 4k 224 128 3 Osc/PWM 16F88 2,95 4,09 4k 368 256 3 Osc/PWM 16F1827 1,80-4k 368 256 5 Osc/PWM/ADC PIC-Controller 18 Seite 9