170 likes | 325 Views
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
E N D
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
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
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ásaram - 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 *** 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 btfsc status,c btfsc status,c btfss status,c btfss status,c goto false goto false goto false goto false
Értékek összehasonlításaram - 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 *** 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 btfsc status,c btfsc status,c btfss status,c btfss status,c goto false goto false goto false goto false