PIC mikrovezérlők
Több mint 800 különbőző típus
8 bites magok Baseline Midrange Enhanced-midrange High-end
Baseline 33 utasítás 1mips/4mhz (max 20MHz) 12 bites utasításszélesség , 8 bites adatbusz 16-128 byte ram 256 word - 3kWord flash 2 mély hw-es stack (nem elérhető sw-oldalról) Kis lábszám (6-8-(40)) Nincs megszakítás Kevés periféria Harvard-architektúra
Midrange (nem a kiterjesztett) 35 utasítás 1mips/4mhz (max 20Mhz) 14 bites utasításszélesség 8 mély hw-stack (nem elérhető sw-esen) Max 384byte „ram” ~1-7kword flash 64-256 byte eeprom Sok, változatos periféria Megszakítások 8-40 láb Némelyik képes a saját programmemóriáját írni
Perifériák I/O portok Időzítők/számlálók USART, SPI, I2C, I2S, PMP CCP, PWM, Input Capture, Output Compare ADC, DAC, komparátor Lcd vezérlő (magát az lcd szegmenseit) EEPROM USB, Ethernet Kapacitív gombok (RF, CRC, DMA, RTC)
Hogyan válasszunk PIC-et? Microchip Advanced Part Selector (MAPS) Online verzió: gyorsabb, mindig "friss”, nehezebb benne komplexebb filtereket összeállítani Offline: lassú (nagyon), szól ha elavult az adatbázisa, könnyebb „komplex” keresés (nemcsak mikrovezérlőket tudunk benne keresni) demo
Fejlesztőkörnyezet MPLAB, MPLABX (java alapú), PIKLAB(linux alatt) Programozók: ICD2,3 PICKIT2,3 ami nekünk fontos
Miért assembly? Ki tudjuk használni a processzor teljes erejét Nem nehéz (vs avr) MPLAB ban beépített asm fordító, minden ic hez definíciók
Miért C? Gyorsabb kódolás, rengeteg kész programrészlet Hátrányok: Nemigazán optimalizál itt ott a fordító Vagy ismerni kell a fordítót (erről később) 10-16F Hitech C, CSS 18F CSS, C18
MPLAB demo
Ismerkedés Baseline típusokkal A 10F222 kontrollert fogjuk használni 512 word flash (0,75kB) 23 byte ram 6 lábú tokozás 3 IO, 1 input only 8 bites AD konverter, belső 0,6V stabil referenciával 8 MHz belső rc oszcillátor (bizonyos keretek között állítható) -> 2 mips -> 500nS / utasítás 8 bites időzítő/számláló modul 25mA sink/source / portláb
„Programozható kapu”
Adatlap a „biblia”! Nagyon jól dokumentálnak mindent Csak az adott kontroller adatlapjából simán programozható minden periféria, de ha nem lenne elég van a családhoz egy adatlap, illetve egyes perifériákhoz is külön 15-50 oldalas ERRATA!
Értékek összehasonlítása ram - konstans *** Ugrik ha igaz *** RAM > X RAM < X RAM >= X RAM <= X movf RAM,w movlw X movlw X movf RAM,w sublw X subwf RAM,w subwf RAM,w sublw X btfss status,c btfss status,c btfsc status,c btfsc status,c goto true goto true goto true goto true *** Ugrik ha nem igaz *** btfsc status,c btfsc status,c btfss status,c btfss status,c goto false goto false goto false goto false
Értékek összehasonlítása ram - ram *** Ugrik, ha igaz *** RAM0 > RAM1 RAM0 < RAM1 RAM0 >= RAM1 RAM0<= RAM1 movf RAM0,w movf RAM1,w movf RAM1,w movf RAM0,w subwf RAM1,w subwf RAM0,w subwf RAM0,w subwf RAM1,w btfss status,c btfss status,c btfsc status,c btfsc status,c goto true goto true goto true goto true *** Ugrik, ha hamis *** btfsc status,c btfsc status,c btfss status,c btfss status,c goto false goto false goto false goto false