PIC mikrovezérlők Mersich András mersich@mit.bme.hu Ajánlott irodalom: www.microchip.com http://www.mit.bme.hu/oktatas/targyak/vimm4133/jegyzet/gkp12.pdf Kónya László: PIC mikrovezérlők alkalmazástechnikája
A PIC mikrovezérlő család
Architektúra alapok Harvard architektúra: program és adatmemória külön 12+ bites instruction és 8 bites data 12+ bit instr. single-word instr. RISC Ortogonális utasításkészlet: minden regiszterre ugyanaz végezhető 1 program utasítás = 2 utasítás ciklus (fetch+execute) = 4 órajel Pipeline: minden utasítás (kivéve ugrás) egy utasításciklus alatt
Memória szervezés Adat memória Program memória Csak egyetlen interrupt vektor (PIC18 alatt), az ISR-nek kell eldöntenie, mi okozta. Az IT flag akkor is beáll, ha az IT nincs engedélyezve!!!
Portok A WR-RD nem ugyanarra vonatkozik. Íráskor a PORT latchbe írunk, míg olvasáskor a láb állapotát olvassuk vissza. A kettő megegyezik, ha a port kimenet, egyébként nem biztos. A bitműveletek mind READ-MODIFY-WRITE jellegűek (BCF,BSF). Előbb olvassa mind a 8 bitet, aztán elvégzi az adott bit módosítását, majd a teljes 8 bitet visszaírja. Mellékhatás lehetséges, pl.: PORTB=11100000 TRISB =10100000 (be,ki,be,ki,ki,…) a bemeneti lábak állapota =1x0xxxxx BCF PORTB,7 utasítás hatása: read port=1100000 clr bit6 =1000000 write port=1000000 (bit5 nullázódott)
Baseline flash PIC Általános tulajdonságok: flash program memória baseline core: 33 db 12 bites utasítás, 2 rétegű HW stack low power (100nA) sleep current 25mA source/sink current I/O 8 bites timer (TMR0) watchdog timer (WDT) In Circuit Serial Programming (ICSP) Short Device Reset Timer, 1.125ms (DRT): csak PIC10F220/222, PIC12F510 és PIC16F506
Baseline flash PICs
Baseline Architecture
Unique baseline PIC applications „Electronic glue” Bug fixes and last-minute changes (signal inversion, timing delays, …) to avoid costly and time-consuming silicon redesign. Logic control Delays, smart gates, signal conditioning, simple state machines, encoders/decoders and peripheral logic functions Mechatronics Replace traditional mechanical functions: smart switches, mode selectors, remote I/Os, timers, LED flashers Waveform generation Intelligent disposable electronics Blood sugar / drug tester, package monitoring, property identification
Mid-range flash PIC Általános tulajdonságok: flash program memória mid-range core: 35 db 14 bites utasítás, 8 rétegű HW stack low power (100nA) sleep current 25mA source/sink current I/O 1 db 16 bites timer (TMR1) 2 db 8 bites timer (TMR0/2) watchdog timer (WDT) hardware interrupt In Circuit Serial Programming (ICSP)
Mid-range flash PICs ECCP: Enhanced Capture/Compare/PWM
PIC16F873 block diagram
PIC16F877 register file 8 bites data memory RAM Lényeges: Indirect addr. (INDF), FSR STATUS PCL, PCLATH PORTA, TRISA
Status register Address: 03h, 83h, 103h, 183h Nincs negative és overflow flag
Register bank select RAM törlése 20h-2Fh indirekt címzéssel:
PIC16F877 program memória 8 szintű HW stack Egyetlen interrupt vektor Program memória 2k-s page-ekben (11 bit)
Program memory paging Table read, computed goto: ha túllépünk 256-on, PCLATH-et növelni! CALL, GOTO: PCLATH! RETURN, RETFIE: teljes 13 bit stackről Page1-ben lévő subrutin hívása page0-ból:
Stack 8 szintű, 13 bites HW stack stack pointer nem írható és nem olvasható CALL és interrupt hatására PC PUSH RETURN, RETLW, RETFIE hatására PC POP cirkuláris buffer, NINCS stack overflow flag nincs általános PUSH, POP utasítás
Instruction format 7 bit file reg. addr.: regiszter bank mérete 128 byte pl.: INCF FSR,f pl.: BCF PORTB,7 Regiszternek direkt nem adható érték, csak W-n keresztül. pl.: MOVLW 0x13 11 bit goto: 2k program memory page
PIC18 Általános tulajdonságok: 10-16 MIPS, 128kbyte program memória, 18-100 pin 16 bites program utasítások self programming flash 2 szintű IT: high/low priority széles integrált periféria választék Integrated full-speed USB 2.0 pl. PIC18F4550 és PIC18F4450 3V general purpose portfolio PIC18FxxJ1x Integrated ethernet microcontroller pl. PIC18F97J60
Programozás In-circuit Serial Programming (ICSP): MPLAB ICD 2 In-circuit debugger/ programmer MPLAB REAL ICETM In-circuit emulation system MCLR=13V !!! Low voltage ICSP: RB3/PGM pin dedikált Free ICSP: ICProg MPLAB PM3 Device programmer
Microchip vagy Atmel? több regiszter bank nem kell bankolni csak 1 interrupt vektor minden interrupt-forrásnak saját vektor HW stack SW stack programozáskor MCLR = 13V simple ICSP alkalmazásra optimalizált széles paletta univerzális felépítás GCC nem támogatja Microchip C free, open source C compiler GCC, WinAVR olcsóbb OTP memória drágább iparban elterjedtebb iparban kevésbé alkalmazott
16-bites mikrokontrollerek (MCU) PIC24F: highly cost-effective PIC24H: highest performance Általános tulajdonságok: 16-bites módosított Harvard RISC architektúra tápfeszültség: 3-3.6V műveleti sebesség: 16 MIPS (PIC24F), 40 MIPS (PIC24H) flexibilis interrupt szerkezet, processzor exception és software trap kommunikációs modulok: SPI, I2C, UART, CAN timerek real time clock & calendar (RTCC) ADC JTAG, ICSP, in-circuit emulation CodeGuardTM RTOS: CMX-RTX: preemptive, multitasking OS CMX-Tiny+ CMX-Scheduler: free
PIC24H blokk diagram 16 bites adat 71 db 24 bites utasítás software stack 16x16 szorzás 16/16 és 32/16 osztás DMA flexibilis és determinisztikus IT (latency 5 ciklus) A+B=C egyetlen ciklusban
16-bit Digital Signal Controllers (DSC) dsPIC30: versatile, 5V, 30MIPS dsPIC33F: high performance, cost-effective, 3.3V, 40MIPS dsPICworksTM Data Analysis and DSP Software Digital Filter Design Tool Noise Suppression Library Acoustic Echo Cancellation Library TCP/IP Protocol Stack Soft Modem Libraries Encryption Libraries FAT16 File System Motor Control Application Software
dsPIC33F blokk diagram 16 bites adat 83 db 24 bites utasítás software stack 2 db 40 bites akkumulátor 16x16 szorzás 16/16 és 32/16 osztás single-cycle multiply and accumulate (MAC) flexibilis és determinisztikus IT (latency 5 ciklus) DMA
PIC33F DSP engine 17-bit x 17-bit multiplier barrel shifter 40-bit adder/subtracter 2 accumulators
Tipikus DSP feladatok FIR szűrő, konvolúció (súlyozott mozgó átlag): FFT:
CodeGuardTM Egy processzor erőforrásainak (memória, IT, perifériák) biztonságos megosztása különböző felhasználók között. IP: Intellectual Property ODM/OEM: Original Device/Equipment Manufacturer VAR: Value-Added Reseller