ŠKOLA PIC II 2021 – Kapitola 1

Assembler je programovací jazyk, kde adresy registrů, proměnných nebo konstant nahrazujeme symboly, které jsou pro člověka přívětivější a lépe si je pamatuje podle nějaké mnemotechniky.

Tahák Assembler.pdf

Základní pojmy

Mikroprocesor (CPU,MCU) – mikrokontroler – (Central Processing Unit). Rozdělení mikroprocesorů na 8 bitové, 16 bitové, 32 bitové a 64 bitové. Rozdělení podle architektury: Von Neumann, Harvard RISC (reduced instruction set computer; počítač s redukovanou instrukční sadou) .

Hardvarská architektura:

– oddělená paměť programu a paměť dat

Mikroprocesor PIC16F15324 (rodina PIC16F15344)

Výrobce:                   Microchip (USA)
Typ:                           8 bitový mikrokontrolér
Program memory: 7k (max 28k v rodině)
EEPROM:                  256 bytes
SRAM:                       512 bytes (max 2048 v rodině)
I/O ports:                  12 (max 44 pin v rodině)
A/D převodník:       11 ch., 10 bit (max 43chv rodině)

Komparátory:         2
Časovače:                 1 8bit, 2 16bit
EUSART:                   2x
I2C, SPI:                    1*1 (2*2 v rodině)
ECCP/CCP:                2/2
LCD:                          ne
Kapacitní snímač: ne

Hlavní rozdíly mezi PIC16F15324 , PIC16F887a PIC16F1937:

-kvalitní interní oscilátor 31kHz a 1-32MHz, 2-4 PLL
– paměť SRAM 512 bytes
-dva FSR registry
– 5 časovačů (TIMERS)
– 5 ECCP/CCP (PWM – Pulse Width Modulation)
– větší výběr anologových i digitálních periférií
– individuálně nastavitelné pull-ups odpory na vstupech
– lepší možnost nastevení přerušení (Interrupt-on-change with edge-select
– PPS – periferial Pin Select – sw nastavitelné vstupy a výstupy periférií

Základní dokument: Datasheet PIC16F15324/344

http://ww1.microchip.com/downloads/en/devicedoc/40001889a.pdf

  

Vývojové prostředí: MPLAB-X

Počítačový program pro tvorbu programů pro mikroprocesory. Jedná se o volný program firmy Microchip, ve kterém budeme pracovat. Aktuální verze je 2.05 ke stažení zde:

https://www.microchip.com/pagehandler/en-us/family/mplabx/

Podrobný popis MPLAB X je zde:

http://ww1.microchip.com/downloads/en/devicedoc/50002027d.pdf

 

 

PICKIT 3

je programátor a simulátor pro nahrávání a odlaďování programů přímo v mikroprocesoru.

Podrobnější popis je zde:

http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=PG164130

Program je soupis pokynů (instrukcí), jejichž vykonáním dosáhneme žádaného výsledku.

Mikroprocesor je zařízení, které program vykonává.

Mikroprocesor

Mikroprocesor pracuje ve strojovém kódu. Strojový kód je v podstatě hromada čísel, ve kterých se vyzná pouze mikroprocesor (je-li je program správně napsaný), ale člověk většinou ne. Pro příklad uvedeme část strojového kódu :

:020000040000FA
:020000000428D2
:08000800230000308C008D0183
:100010008F0190012100F9309B00B8309500FF302E
:100020008C0000308D0080308E008F010F309000EA
:100030007A309900200074309C00FF30AF00FF3010
:10004000B000FF30B100FF30B200FF30B300FF302E
:10005000B400FF30B500FF30B600A101A201A60137
:100060006430A4000A30A300A700911C3528911029
:10007000BC0110193C149018BC143C0C3C06BE008A
:100080003E18BC173D083C06BE003E1C4E283C08EE
:10009000BD00BC1F4D2825144E28A5146400461031
:1000A000C610A40B5B2846146430A400A30B5B2885
:1000B000C6140A30A300461C6228BB1F6228F30F37
:1000C0006228F40A251D6728BB13F301F401251EDD
:1000D0006A28BB17A51E6D28BB13251F7028BB17E8
:1000E000A51F7328BB130E10BB1B0E148D01073008
:1000F00020050B00822887288E28922896289A2887

Na první pohled je jasné, že člověk se v tom velice obtížně orientuje. Aby bylo programování pro člověka přívětivé a snadné, byl vytvořen jazyk symbolických adres – Assembler. Je to nejnižší programovací jazyk. Jedná se o soubor instrukcí daného procesoru, které se postupně zapisují do zdrojového souboru. Tyto instrukce mnemotechnicky vyjadřují jednotlivé povely pro procesor, jsou to zkratky anglických pojmů (např. instrukce BTFSS – Bit Test F, Skip if Set – testuj bit registru F, skoč pokud bit b je nastaven na log. 1 (H).

 
Zápis celé instrukce v assembleru vypadá takto:

Test_bitu2       BTFSS CISLO,2         ;Test_bitu2 je návěští, BTFSS instrukce, CISLO je registr, 2 je 2. bit registru CISLO (naše proměnná)

další příklad lze uvést jednu jednoduchou instrukci:
                         bsf Rele 1                  ;Tato instrukce zabezpečí sepnutí relé 1, které jsme si dopředu deklarovali na nějaký port (bit set file).


Chceme-li ale toto relé naopak vypnout, stačí instrukci změnit takto:
                        bcf Rele 1                  ;Tato instrukce znamená bit clear file (Clear=0 nebo vypnuto)

Zápisu programu v assembleru (Jazyk Symbolických Adres) se říká zdrojový kód – zdroják. Tento zdrojový kód se následně přeložíme překladačem (compilerem) do výše zmíněného strojového kódu, který se pak již programátorem nahraje do čipu pomocí programovacího konektoru (zpravidla). Pro přehlednost lze využít následujících ikon.

Překlad / Nahrání hex souboru do procesoru

Kompletní popis assembleru firmy Microchip je možno stáhnout :

http://ww1.microchip.com/downloads/en/DeviceDoc/33014J.pdf

  

Instalace vývojového prostředí MPLAB X a založení nového projektu.

Instalace vývojového prostředí MPLAB X se provede následovně:

na webové stránce Microchip (výrobce mikroprocesorů PIC a nejenom jich)
https://www.microchip.com/mplab/mplab-x-ide/0
nebo – ale bohužel stránky Microchip se často mění, takže se klidně stane, že za týden tam už není, co jste běžně před tím našli. Takže trpělivost a hledat.
https://www.microchip.com/pagehandler/en-us/family/mplabx/

si vybereme pro jaký systém chceme nainstalovat prostředí. K dispozici je Windows x86/x64, Linux 32-Bit a Linux 64-bit a MAC(10.X). Pro Windows je k dispozici nejnovější verze v 5.15 a rychle se to mění. Ze zkušenosti je lepší upgrade až po zralé úvaze, abychom se nemuseli vracet původní verzi, která nám fungovala bezvadně a nová se chová jinak než jsme byli zvyklí.
Po stažení tohoto souboru (367MB) do počítače provedeme jeho extrahování a následně spuštění instalace. Lze to provést najednou kliknutím na soubor MPLABX-v2.05-windows-installer.exe.
Za okamžik by se mělo objevit logo MPLABX a následně Setup tabulka. Kliknutím na Next > pokračujeme. Schválíme licenční podmínky zaškrtnutím „I accept the agreement“ a pokračujeme Next >. Instalační direktorář raději neměnte a stiskněte Next >. Tabulku Ready to install také odklepneme Next >. V případě, že máme nainstalovanou některou z nižších verzí MPLAX, musíme ji odinstalovat a to nejlépe před zahájením nové instalace.

Instalace chvíli trvá, ale neměl by to být žádný problém. Když dojede modrý proužek instalace na konec, vytvoří se odinstalační program. Jsme-li úspěšní až sem, uvidíme následující tabulku:

Potvrzením tlačítka „Finish“ se načtou stránky Microchip MPLAB X, kde je se v angličtině učební program „Learn More“. Kdo chce, může si to prostudovat, případně přehrát i video. Pro začátek to není nutné, ale lze se na tuto stránku kdykoliv vrátit.
Na ploše počítače by se měli objevit tři ikony:

MPLABX-V5.15 je ikona pro spuštění našeho vývojového prostředí,
MPLAB IPE je ikona pro spuštění programu pro nahrávání souboru HEX přímo do procesoru a
MPLAB driver switcher používat nebudeme, slouží k přepínání mezi dřívějšími verzemi MPLAB.

Spustíme-li ikonu MPLAB X – objeví se logo:

a následně celý program MPLABX-V5.15 rozdělený na více oken, která jdou ve Windows přetahováním myší upravovat, ale abych se přiznal tak se mi to nikdy pořádně nepodařilo uspořádat k obrazu svému a běda, pořídíte-li si monitor s jiným rozlišením, vše se vám na obrazovce rozhází. Takže lepší je zůstat konzervativní a změny provádět jen po zralé úvaze. Jako základní okna v prostředí budeme používat tato: „Projekty“, ve kterém se nám budou zobrazovat námi vytvořené projekty, největší okno „Asm Source“ je pro zobrazování a editaci textových souborů našich programů v assembleru. Později to může být i například v „C“ a podobně. V tomto okně budeme nejvíce pracovat.


Další okno je „Navigátor“ , kde si můžeme zobrazit přehled podprogramů a návěští a poklepnutím na název skočíme přímo na řádek v editoru asm. další je „Dasboard“, kde můžeme přímo spouštět externí pdf soubory, např., datasheet a vidíme zde základní vlastnosti a využití procesoru a lze zde jedním kliknutím nastavit vlastnosti projektu. Další důležité okno je „Output -..“, kde se zobrazují výsledky překladů, chybová hlášení atd. Je to hned druhé nejdůležitější okno. Prostředí je velmi různorodé, až bych řekl že zbytečně složité, ale cílem Microchip bylo sestavit jediné prostředí, kde lze dělat vše. Bohužel pro začátek je to složité, ale při instalaci pro začátek nemusíme vše instalovat. Tak pro nás zatím stačí instalovat procesory PIC 8bit, jazyk assembler, takže nemusíme instalovat konfigurátor, pluginy, procesory AWR, překladač pro 16 a 32 bitové procesory, jazyk C, To vše lze doinstalovat později. Takže pro začátek je v jednoduchosti síla. Není nutné hned zkoušet všechny možnosti co to umí, ale jen to co nezbytně potřebujeme k práci.

Založení nového projektu

   V záložce „File“ (Vlevo nahoře) vybereme „New Project…“ a klikneme. Objeví se tabulka „Choose Project“. Vybereme Microchip Embedded a potvrdíme „Next >”. V Následující tabulce „Select Device“ do řádku Device: napíšeme PIC16F1937 a potvrdíme „Next >”. V další tabulce „Select Header“ potvrdíme „None“ tlačítkem „Next >”. Následně vybereme „Select Tool“ kliknutím na „PICkit3“ a potvrdíme „Next >”. V tabulce „Select Compiler“ vybereme mpasm(v5.55)

a opět potvrdíme „Next >”. V další tabulce „Select Project Name and Folder“ vyplníme název našeho projektu. Nepoužívejte českou diakritiku v názvu ani v cestě. Vyhnete se tím problémům v budoucnosti. Cestu (Project Location:) potvrďte tu, která je doporučená. Potom budete mít projekty uloženy ve složce vaší dokumentace a práci budete mít jednodušší. V položce „Encoding:“ naopak vyberte stránku „windows-1250“, aby se poznámky v programu zobrazovaly správně česky. Kdo chce pracovat pouze v angličtině, klidně může.
Kliknutím na „Finish“ dokončíme založení projektu, který by se měl objevit v tabulce „Projekty“ (levá horní).
Tím máme založený „čistý“ nový projekt. Abychom mohli pracovat, pro začátek si „vypůjčíme“ již napsaný program v assembleru, a budeme ho později moci upravovat nebo měnit.
K tomu je ale nutné nakopírovat do adresáře „JMENO_PROJEKTU.X“ textový *.asm soubor.

V našem případě nakopírujeme Fott_302.asm.
V okně „Project“ klepneme pravým tlačítkem na „Source Files“ a vybereme „Add Existing Item…“
a vybereme již nakopírovaný soubor Fott_302.asm.

Tento soubor se nám objeví v okně „Project“ a když na něho dvakrát klikneme, tak se rozbalí i v okně assembleru.

Dostali jsme se úspěšně až sem, tak máme skoro vyhrané první kolo a můžeme začít s programováním. Nejprve je ale dobré, říct si některé zásady, které sice nejsou nezbytné, ale usnadní nám život v budoucnosti, hlavně při kopírování programů, nebo jejich částí a při vracení se do historie, abychom hned na první pohled pochopili, co jsme tím vlastně zamýšleli. Jelikož assembler umožňuje zápis ve více stylech, je dobré si zvolit pouze jeden a ten dodržovat. Také je dost tolerantní k psaní příkazů malými a velkými písmeny, ale naopak u názvů registrů striktně vyžaduje pouze velká písmena a u návěští je mu to jedno, ale nesmí se zaměnit, potom je v koncích.

Assembler umožňuje opravdu velké množství příkazů, které z počátku nebudeme potřebovat, ale v budoucnu nám mohou pomoci. Co je důležité s jakými soubory assembler pracuje a jak by měl vypadat zápis v jediném základním souboru s příponou asm. Do tohoto souboru můžeme importovat soubory (important Files) přilinkovávat hlavičkové soubory, knihovny a další. Nejdůležitější v této chvíli pro nás jsou soubory s příponou inc. V každém případě musíme použít #include “p16f15344.inc”, kde je deklarace všech registrů procesoru na srozumitelný jazyk. Například PORTA, který je na adrese H’000C’ má přiřazen název „PORTA“, takže si skutečně nemusíme pamatovat spoustu čísel a stačí nám pouze přilinkovat tento soubor.

Pro práci je také důležité, jak zápis programu v asm vypadá a jak je přehledný. Je to důležité hlavně když se k němu vracíme, abychom nemuseli bádat nad tím, jak jsme to vlastně tehdy mysleli. To nám ušetří nemálo času.
Přehledný zápis programu by měl obsahovat tyto části:

1. hlavičku, která by měla mít stále stejný obsah a získáme okamžitý přehled. Je to vlastně poznámka, která se neuplatní v překladu, to znamená, že každý řádek musí začínat středníkem a v editoru by měl být zobrazen zeleným písmem. Jednotlivé části lze pro přehlednost rozdělovat například linkou s rovnítkem (dvojitá čára), pomlčkou (jednoduchá čára, tečkou, hvězdičkou a podobně. Je to na vkusu každého ale vždy je nutný na začátku řádku středník, aby to byla poznámka.

2. zde je dobré zařadit hlášku: errorlevel -302 ; Zakázat hlaseni “Register. bank 0..”,
jinak nám překladač vysype spoustu modrých hlášek o možnosti špatného přepnutí paměťové banky a hodně nám to zkomplikuje při hledání opravdových chyb, které bychom náhodou měli v zápisu. Ty se po překladu objeví v okně Output a jsou také modré.

3. #include “p16f15376.inc” – je to soubor inc., který nám definuje typ procesoru a nastavení jeho konfigurace. Podrobně si toto probereme později, pro začátek stačí zkopírovat tuto část z jiného souboru.

4. na tomto místě je dobré mít deklarace proměnných a deklaraci portů (pinů)

5. zde už se umisťuje hlavní program


instrukce org 0x000 je adresa první instrukce, kde má program začátek a org 0x004 nám označí kam program skočí při přerušení.

6. Podprogramy

6. deklarace RAM a END který označuje konec programu.

Tím je v podstatě vyčerpán obsah základního programu v asm. Jen je nutno připomenout, že při zadávání parametrů projektu je třeba stanovit kódování. Po neblahých zkušenostech po importu i jen části zdrojového textu již používám jen UTF8 a zdroják píšu bez čárek a háčků. Jinak se odsuzujete k častým opravám a přepisováním prázdných čtverečků na platné znaky s háčky v poznámkách a to opravdu není programátorská práce. Pro popis s háčky a čárkami, který se dá využít jako dokumentace k projektu, je lepší z důvodu srozumitelnost a pozdější publikace psát třeba ve Wordu a v hlavičce souboru asm v kolonce Popis Word označit cestu k tomuto souboru. Ušetří se tím do budoucna mnoho času, až bude projektů více.

V editoru asm se píše zdrojový kód do sloupců oddělených tabulátorem.
V prvním sloupci je vždy návěstí (LAabels), v druhém začíná instrukce (Instructions nebo Macros), další jsou parametry (Operands)instrukce poslední sloupec je poznámka (Comments).

Jak budou sloupce nastaveny, záleží na každém, jak se mu to líbí, ale není to dobré měnit, jinak do budoucna dopadnete při kopírování obdobně jako při jiném kódování, tentokrát se vám však rozhází sloupce. Takže rada na konec, radši parametry tabulátorů editoru neupravovat, získá se tím větší přehlednost zápisu. Toť vše a už opravdu můžeme začít tu správnou programátorskou práci.

Vzorový program – SKOLA_PICII.asm ke kopii:

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.