PIC2
Škola programování PIC 2
Nyní se podíváme na to, co je to vlastně procesor a co umí.
Předně bych chtěl uvést, že procesor není žádná zázračná součástka a že toho prakticky mnoho neumí. V podstatě umí jen přesun dat (například mezi pamětí a výstupy) a základní matematické operace. Ale má jednu velkou výhodu: Umí pracovat samostatně, nezávisle na okolí. A to už běžné číslicové obvody neumějí (vyjma časovačů). Co to znamená? Například to, že na jeden povel umí vykonat spoustu různých operací a na další jich vykoná jinou spoustu, což by se s běžnými klopnými obvody dělalo dost těžko.
Tak se na procesor podíváme trochu podrobněji.
Všechny procesory PIC jsou typu RISC, tedy procesory s omezenou instrukční sadou. To znamená, že je k dispozici pouze několik málo příkazů (35), jejichž zpracování trvá pouze jeden (maximálně dva) strojové takty a v paměti zabírají vždy po jednom slově.
Jeden strojový takt je rychlost, se kterou procesor zpracovává příkazy a odvíjí se od kmitočtu oscilátoru jeho vydělením 4. Je-li například použit krystal 4MHz, můžete si lehce spočíst, že jeden takt trvá 1us (jednu mikrosekundu). Během tohoto jednoho taktu procesor provede jednu instrukci a zároveň si připraví tu následující. Většina instrukcí proto trvá přesně jeden takt. Pouze instrukce, které naruší plynulý běh programu (skokové instrukce) trvají dva takty, protože procesor nevyužije připravenou instrukci a musí načítat další.
Rozložení vývodů procesoru a základní technická data
Vlastní rozložení vývodů na procesoru je patrné z tohoto obrázku:
A teď s popisem:
RA0 - RA4 - vývody portu A (5)
RB0 - RB7 - vývody portu A (8)
MCLR - reset, stačí připojit přímo na +Ucc (procesor se resetuje sám)
Vss - zem napájecího napětí
Vdd - plus napájecího napětí (2 - 6 V)
OSC1, OSC2 - vývody na připojení oscilátoru
Počet instrukcí | 35 |
Velikost programové paměti | 1024 slov |
Velikost datové paměti RAM | 68 bytů |
Velikost paměti EEPROM | 64 bytů |
Počet I/O vývodů | 13 |
Počet časovačů | 1 |
Velikost zásobníku | 8 úrovní |
Typy oscilátorů |
RC, XT, HS, LP |
Napájecí napětí | 2 až 6 V |
Odebíraný proud | < 1uA – 2V standby 15uA – 2V, 32 kHz < 2mA – 5V, 4 MHz |
Zatížitelnost portů | 20mA |
Další vybavení | Power-on Reset Power-up Timer Oscilator Start-up Timer Watchdog Timer Code-protection SLEEP mode |
Co obsahuje uvnitř
To je nejlépe vidět na obrázku jeho blokového zapojení. Není na první pohled moc přehledné a tak nejdůležitější části raději popíšu:
ALU
[Aritmeticko Logická Jednotka]
Je to hlavní část každého procesoru. Zde se vykonávají všechny příkazy a matematické operace.
W reg
Další neméně důležitou částí procesoru je registr W. Je to taková malá mezipaměť, přes kterou se provádí většina operací. Například, nemůžeme z paměti přesunout nějakou hodnotu přímo na výstupy. Nejprve si ji uložíme do tohoto registru a až dalším příkazem ji přesuneme dál (na výstupní registr).
Program Memory
Jak už název napovídá, je to paměť ve které je uložen vlastní program. U tohoto procesoru, jakož i u ostatních které mají v názvu písmeno "F", je typu FLASH. To znamená, že je možné do ní program nahrát a vždy ho jedním povelem smazat a nahrát jiný. U levnějších procesorů je tato paměť typu EPROM, takže ji lze smazat pouze UV zářením, nebo u verzí bez mazacího okénka Rentgenovým zářením.
Tato paměť má kapacitu 1024 slov (1 slovo = 14 bitů) a jeden příkaz v ní uložený zabírá pouze jedno slovo.
RAM
Druhou pamětí v procesoru je paměť RAM se 68 byty. Ta je rozdělena do dvou tzv. BANK (jakoby na dvě paměti) a celkem obsahuje 68 registrů (bajtů). Z toho v první bance (adresy 00h - 4Fh) je prvních 12 registrů systémových (do adresy 0Bh) a zbytek jsou uživatelské registry. V druhé bance (adresy 80h - CFh) je opět na začátku 12 registrů systémových (do 8Bh)a zbytek uživatelských. Ovšem tyto uživatelské registry již nejsou fyzické. Je to jen kopie registrů z první banky.
Takže ze začátku paměti jsou vždy uloženy různá nastavení a informace o běhu procesoru a zbytek paměti je plně k dispozici programátorovi na odkládání různých mezivýsledků. Registrům a rozdělení paměti se ještě budeme podrobně věnovat později.
EEPROM
Je to poslední větší paměť v procesoru (64 bytů). Komunikace s ní není tak jednoduchá jako s předchozí pamětí a při zápisu je relativně pomalá (desítky ms). Zato si svůj obsah uchová i po odpojení napájecího napětí, proto se hlavně hodí k ukládání různých nastavení, hesel a podobně.
Výrobce udává její životnost minimálně 10.000.000 zápisů a svůj obsah si bez napájení uchová více než 40 let.
I/O Ports
Další částí procesoru jsou vstupně-výstupní porty. Tento procesor jich obsahuje celkem 13 a jelikož se pracuje s byty, má je rozděleny do dvou portů. Celý port B (RB0 - RB7) a zbytek port A (RA0 - RA4).
Každý z těchto vývodů se dá zvlášť nastavit buď jako vstupní, nebo výstupní a to i kdykoliv při běhu procesoru.
TMR
Tento procesor také obsahuje jeden 8 bitový čítač / časovač.
A další obvody, ty ale pro nás v tuto chvíli nejsou podstatné.