PIC mikrovezérlők

Download Report

Transcript PIC mikrovezérlők

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
sublw X
btfss status,c
goto true
movlw X
subwf RAM,w
btfss status,c
goto true
movlw X
subwf RAM,w
btfsc status,c
goto true
movf RAM,w
sublw X
btfsc status,c
goto true
*** Ugrik ha nem igaz ***
RAM > X
RAM < X
RAM >= X
RAM <= X
movf RAM,w
sublw X
btfsc status,c
goto false
movlw X
subwf RAM,w
btfsc status,c
goto false
movlw X
subwf RAM,w
btfss status,c
goto false
movf RAM,w
sublw X
btfss status,c
goto false
Értékek összehasonlítása
ram - ram
*** Ugrik, ha igaz ***
RAM0 > RAM1
RAM0 < RAM1
RAM0 >= RAM1 RAM0<= RAM1
movf RAM0,w
subwf RAM1,w
btfss status,c
goto true
movf RAM1,w
subwf RAM0,w
btfss status,c
goto true
movf RAM1,w
subwf RAM0,w
btfsc status,c
goto true
movf RAM0,w
subwf RAM1,w
btfsc status,c
goto true
*** Ugrik, ha hamis ***
RAM0 > RAM1
RAM0 < RAM1
RAM0 >= RAM1 RAM0<= RAM1
movf RAM0,w
subwf RAM1,w
btfsc status,c
goto false
movf RAM1,w
subwf RAM0,w
btfsc status,c
goto false
movf RAM1,w
subwf RAM0,w
btfss status,c
goto false
movf RAM0,w
subwf RAM1,w
btfss status,c
goto false