Firmvér pre mikrokontroléry PIC od začiatku. Návod na programovanie PIC regulátorov pre začiatočníkov Programovací program pre pic mikrokontroléry

V roku 2006 som mal túžbu zvládnuť assembler pre mikrokontroléry PIC. Rozhodnutie zvládnuť PIC nebolo náhodné. Na začiatok je k dispozícii iba 35 príkazov assembleru. Môžete si ich zapamätať za pár dní aplikovaním v praxi, pri písaní vlastného programu. Alebo sa to jednoducho naučte pomocou údajového listu na ktoromkoľvek z regulátorov PIC. Našťastie je časť dokumentácie dostupná v ruštine.

Prvým dizajnom sú samozrejme hodiny. A nie je to nič zložité (aspoň sa mi to tak na začiatku zdalo) a využitie pre hodiny či časovač sa dá ľahko nájsť doma aj v práci. Jedinou prekážkou, ktorej som musel čeliť, bol nedostatok jasných a konzistentne prezentovaných informácií o metódach priameho programovania.

Na internete je veľa stránok s témami mikrokontrolérov, no často sú tieto informácie usporiadané vo forme akejsi vinaigrette, ktorá je pri nulových skúsenostiach s programovaním čipov veľmi ťažko pochopiteľná.
Po spustení „prvého projektu na obvode mikrokontroléra“ – blikaním LED-ky – sa začalo horúčkovité hľadanie užitočných informácií. A celkom náhodou som pri prehľadávaní siete pri hľadaní informácií podľa ďalšej schémy z časopisu „Rádio“ (Denisovov merač frekvencie) narazil na webovú stránku Evgeniy Korabelnikov.

Nemôžem povedať, že tam moje hľadanie skončilo. Na niektoré prístupy som prišiel sám a môj vlastný kód je spravidla vždy lepší ako ten, ktorý vymyslel niekto iný.
Zatiaľ som však nenašiel konzistentnejšiu a metodickejšiu prezentáciu otázok o štruktúre mikrokontrolérov, možnosti protokolov na výmenu informácií PIC s externými zariadeniami (indikátory, snímače), prácu s pamäťovými čipmi a oveľa viac.

Evgeniy je Autor s veľkým A, dokázal zorganizovať a preložiť obrovské množstvo materiálu do bežne čitateľného textu, vďaka čomu je zrozumiteľný a dostupný aj pre tých, ktorí sa s programovaním ešte nestretli.

Ak potrebujete rýchly štart a programovanie v assembleri pre regulátory PIC, potom odporúčam webovú stránku Evgeniy Aleksandrovich.

Programovanie v assembleri pre

PIC mikrokontroléry

Návod na programovanie PIC regulátorov pre začiatočníkov

(príručka návrhu zariadenia mikroovládača)

Všeobecné poznámky k vstupnej stratégii.

„Samo-návod na obsluhu...“ je zostavený tak, že v prípade nejasností, ktoré vzniknú po prečítaní predchádzajúcich častí, sa v ďalších častiach postupne objasňujú prostredníctvom doplňujúcich informácií. V počiatočnej fáze „vstupu“ je hlavnou vecou pochopiť význam a všetko ostatné sa k nemu časom pridá.

Úvod
1. Pripravte si nástroje. Tvorba programátora a práca s ním.
2. Čo je mikrokontrolér a ako funguje.
3. Systém príkazov PIC16F84A.
4. Čo je to program a pravidlá jeho prípravy. Príklad vytvorenia programu pre samooscilačný multivibrátor. smernice. Schematický diagram multivibrátora
5. Integrované návrhové prostredie MPLAB IDE a práca v ňom.
6. Čo ďalej?
7. Príklad tvorby programu (začiatok).
8. Príklad vytvorenia programu (pokračovanie).
9. Práca na simulátore. Ladenie programu.
10. Ako sledovať vykonávanie programu
11. Prerušuje. Stoh. Príklad vývoja programu s prerušeniami.
12. Organizácia vypočítaného prechodu. Práca s dátovou pamäťou EEPROM.
13. Vlajky. Práca s vlajkami. Ako funguje digitálny porovnávač? Prevod a pôžička.
14. Príklad použitia príznaku C v trojbajtovej sčítačke. Cyklický posun. Operácia násobenia.
15. Úvod do princípu konštrukcie dynamického zobrazovacieho podprogramu. Nepriame adresovanie.
16. Konverzia binárnych čísel na BCD. Finálna tvorba textu podprogramu dynamického zobrazenia.
17. Princíp počítania. Práca s časovačom TMR0. Princíp inštalácie skupín počítacích príkazov do textu programu.
Záver

Nedávno som sa rozhodol postaviť zariadenie na mikrokontroléri PIC, ale z neznámych dôvodov mi zlyhal programátor Extra-PIC. S najväčšou pravdepodobnosťou vyhorel mikroobvod MAX232, toto sa už raz stalo. Bez rozmýšľania som na internete našiel jednoduchý obvod programátora navrhnutý pre IC-Prog a fungujúci cez COM prístav.
Doska musí byť pri tlači zrkadlená. V opačnom prípade budú musieť byť zásuvky spájkované zo strany koľaje.


Ďalej som vyvŕtal otvory a začal časti spájkovať. Najväčším problémom boli zenerove diódy. Začal som hľadať zenerove diódy na doske z CRT monitora. Na doske sú označené ako ZD (Zenerova dióda). Prirodzene, ich označenie je nejasné a vy neviete, kde a ako hľadať. Ak chcete zistiť, koľko voltov stojí zenerova dióda, môžete zostaviť jednoduchý obvod.


Voltmeter celkom presne ukáže, koľko voltov má zenerova dióda. Týmto jednoduchým spôsobom som našiel zenerove diódy s približnými nominálnymi hodnotami. Namiesto 5,6V som nainštaloval 6,2V, namiesto 12,6V som nainštaloval 2 zenerove diódy v sérii 6,2 + 6,2 = 12,4 V .


Tranzistor je možné nainštalovať KT315. Nainštaloval som si to sám S945. Diódy sú tiež ľubovoľné, všetky 3 kusy som odpájkoval. z diódového mostíka tej istej dosky z monitora. Hodnota kondenzátorov tiež nie je kritická, ale boli nastavené na ich nominálnu hodnotu.

Trochu o červených škvrnách na paneloch. Tieto nohy nie sú vôbec prispájkované k panelom. Kompletne hotové zariadenie vyzerá takto:


Rozhodol som sa nespájkovať všetky zásuvky, pretože... Len som to potreboval flashnúť PIC16F628A. Po spájkovaní je potrebné nakonfigurovať program. Budeme flashovať IC-Prog. Stiahnite si program, rozbaľte ho z archívu, Všetky súbory musia byť v jednom priečinku!

1) Ak používate Windows NT, 2000 alebo XP, kliknite pravým tlačidlom myši na súbor icprog.exe. " Vlastnosti karta " >>" Kompatibilita" >> Nastavte začiarkavacie políčko na " Spustite program v režime kompatibility pre:" >>
vyberte "Windows 2000".

2) Poďme spustiť program. Ak je už v ruštine, nič nepotrebujete, prejdite na krok 3 .

Ak je program v angličtine, kliknite na „ nastavenie" >> "možnosti karta " >>" Jazyk" >> nastaviť jazyk" ruský“ a kliknite na „OK“.
Súhlasím s tvrdením " Teraz musíte reštartovať IC-Prog" (kliknite" Dobre"). Programátorské prostredie sa reštartuje.

3) Teraz musíte nakonfigurovať programátor. Kliknite na " nastavenie" >> "Programátor". Skontrolujte nastavenia, vyberte port COM, ktorý používate, kliknite na tlačidlo " Dobre".


Pre veľmi rýchle počítače možno budete musieť zvýšiť nastavenie I/O Latency. Zvýšenie tohto parametra zvyšuje spoľahlivosť programovania, zvyšuje sa však aj čas strávený programovaním čipu.

4) Len pre používateľov Windows NT, 2000 alebo XP. Kliknite na " nastavenie" >> "možnosti" >> vyberte kartu " Sú bežné" >> začiarknite políčko " Zapnuté Ovládač NT/2000/XP" >> kliknite" Dobre" >> ak ovládač ešte nebol vo vašom systéme nainštalovaný, v zobrazenom okne " Potvrďte"Kliknite na "OK". Ovládač sa nainštaluje a programátor sa reštartuje.

5) Kliknite znova " nastavenie" >> "možnosti" >> vyberte kartu " I2C" >> začiarknite políčka: " Povoliť MCLR ako VCC"A" Povoliť záznam bloku". Kliknite na " Dobre".

6) "nastavenie" >> "možnosti" >> vyberte kartu " Programovanie" >> zrušte začiarknutie políčka: " Po naprogramovaní skontrolujte"a začiarknite políčko" Skontrolujte počas programovania". Kliknite na " Dobre".


Hotovo, teraz je program úplne pripravený na prácu s programátorom. Pripojíme nášho programátora k COM port, vyberte v programe náš mikrokontrolér, otvorte firmvér a naprogramujte ľubovoľné MK série PIC. Veľa šťastia všetkým pri práci s programátorom a ovládačmi!

Nedávno som sa rozhodol postaviť zariadenie na mikrokontroléri PIC, ale z neznámych dôvodov mi zlyhal programátor Extra-PIC. S najväčšou pravdepodobnosťou vyhorel mikroobvod MAX232, toto sa už raz stalo. Bez rozmýšľania som na internete našiel jednoduchý obvod programátora navrhnutý pre IC-Prog a fungujúci cez COM prístav.
Doska musí byť pri tlači zrkadlená. V opačnom prípade budú musieť byť zásuvky spájkované zo strany koľaje.


Ďalej som vyvŕtal otvory a začal časti spájkovať. Najväčším problémom boli zenerove diódy. Začal som hľadať zenerove diódy na doske z CRT monitora. Na doske sú označené ako ZD (Zenerova dióda). Prirodzene, ich označenie je nejasné a vy neviete, kde a ako hľadať. Ak chcete zistiť, koľko voltov stojí zenerova dióda, môžete zostaviť jednoduchý obvod.


Voltmeter celkom presne ukáže, koľko voltov má zenerova dióda. Týmto jednoduchým spôsobom som našiel zenerove diódy s približnými nominálnymi hodnotami. Namiesto 5,6V som nainštaloval 6,2V, namiesto 12,6V som nainštaloval 2 zenerove diódy v sérii 6,2 + 6,2 = 12,4 V .


Tranzistor je možné nainštalovať KT315. Nainštaloval som si to sám S945. Diódy sú tiež ľubovoľné, všetky 3 kusy som odpájkoval. z diódového mostíka tej istej dosky z monitora. Hodnota kondenzátorov tiež nie je kritická, ale boli nastavené na ich nominálnu hodnotu.

Trochu o červených škvrnách na paneloch. Tieto nohy nie sú vôbec prispájkované k panelom. Kompletne hotové zariadenie vyzerá takto:


Rozhodol som sa nespájkovať všetky zásuvky, pretože... Len som to potreboval flashnúť PIC16F628A. Po spájkovaní je potrebné nakonfigurovať program. Budeme flashovať IC-Prog. , rozbaliť z archívu, Všetky súbory musia byť v jednom priečinku!

1) Ak používate Windows NT, 2000 alebo XP, kliknite pravým tlačidlom myši na súbor icprog.exe. " Vlastnosti karta " >>" Kompatibilita" >> Nastavte začiarkavacie políčko na " Spustite program v režime kompatibility pre:" >>
vyberte "Windows 2000".

2) Poďme spustiť program. Ak je už v ruštine, nič nepotrebujete, prejdite na krok 3 .

Ak je program v angličtine, kliknite na „ nastavenie" >> "možnosti karta " >>" Jazyk" >> nastaviť jazyk" ruský“ a kliknite na „OK“.
Súhlasím s tvrdením " Teraz musíte reštartovať IC-Prog" (kliknite" Dobre"). Programátorské prostredie sa reštartuje.

3) Teraz musíte nakonfigurovať programátor. Kliknite na " nastavenie" >> "Programátor". Skontrolujte nastavenia, vyberte port COM, ktorý používate, kliknite na tlačidlo " Dobre".


Pre veľmi rýchle počítače možno budete musieť zvýšiť nastavenie I/O Latency. Zvýšenie tohto parametra zvyšuje spoľahlivosť programovania, zvyšuje sa však aj čas strávený programovaním čipu.

4) Len pre používateľov Windows NT, 2000 alebo XP. Kliknite na " nastavenie" >> "možnosti" >> vyberte kartu " Sú bežné" >> začiarknite políčko " Zapnuté Ovládač NT/2000/XP" >> kliknite" Dobre" >> ak ovládač ešte nebol vo vašom systéme nainštalovaný, v zobrazenom okne " Potvrďte"Kliknite na "OK". Ovládač sa nainštaluje a programátor sa reštartuje.

5) Kliknite znova " nastavenie" >> "možnosti" >> vyberte kartu " I2C" >> začiarknite políčka: " Povoliť MCLR ako VCC"A" Povoliť záznam bloku". Kliknite na " Dobre".

6) "nastavenie" >> "možnosti" >> vyberte kartu " Programovanie" >> zrušte začiarknutie políčka: " Po naprogramovaní skontrolujte"a začiarknite políčko" Skontrolujte počas programovania". Kliknite na " Dobre".


Hotovo, teraz je program úplne pripravený na prácu s programátorom. Pripojíme nášho programátora k COM port, vyberte v programe náš mikrokontrolér, otvorte firmvér a naprogramujte ľubovoľné MK série PIC. Veľa šťastia všetkým pri práci s programátorom a ovládačmi!

Diskutujte o článku PROGRAMOVANIE OBRAZOVÝCH OVLÁDAČOV

Časť 1 Obsah

Úvod

1. Príprava nástrojov

2. Čo je mikrokontrolér a ako funguje

3. Príkazový systém PIC16F84A

4. Čo je to program a pravidlá jeho prípravy. Príklad stvorenia

samooscilačné multivibračné programy. smernice.

5. Integrované dizajnové prostredie MPLAB IDE a práca v ňom

7. Príklad vytvorenia programu (začiatok)

8. Príklad vytvorenia programu (pokračovanie)

9. Práca na simulátore. Ladenie programu

10. Ako sledovať vykonávanie programu

jedenásť . Prerušenia. Stoh. Príklad vývoja programu s prerušeniami

12. Organizácia vypočítaného prechodu. Práca s dátovou pamäťou EEPROM

13 . Vlajky. Práca s vlajkami. Ako funguje digitálny porovnávač? Prevod a pôžička

14. Príklad použitia príznaku C v trojbajtovej sčítačke.

Cyklický posun. Operácia násobenia

15. Úvod do princípu konštrukcie dynamického zobrazovacieho podprogramu.

Nepriame adresovanie

16. Prevod binárnych čísel na BCD. Finálny

generovanie textu podprogramu dynamického zobrazenia

17. Princíp počítania. Práca s časovačom TMR0.

Princíp inštalácie skupín počítacích príkazov do textu programu

…………………………………………………………………

…………………………………………………………………

Úvod

Epigraph: programátor pracujúci v assembleri musí byť „Pán prsteňov“. A ešte jedna vec: banalita je unavená pravda.

(pochopíš neskôr)

Ľudia prichádzajú k mikroprocesorovej technológii rôznymi spôsobmi. Osobne som zatiaľ necítil žiadnu zvláštnu potrebu to robiť, až kým som si v jednej krásnej chvíli neuvedomil, že začínam nezodpovedať dobe. To, čo som vyvinul „predtým“, sa ukázalo ako beznádejne zastarané a tiež „vyzerá smiešne“ na „pozadí“ základne moderných prvkov, ako aj na „pozadí“ vedomostí, ktoré musíte mať, aby ste mohli pracovať. s tým.

Navyše pre mňa osobne akosi nebolo ani krásne, ani hodné „jesť odrezky z kráľovského stola“, ak bola možnosť „sadnúť si k nemu ako plnohodnotný účastník jedla“.

Bolo potrebné si vybrať: buď „vzdať“ a presunúť sa do kategórie postupne „vymierajúcich“ (diskvalifikovaných),

alebo sa vysporiadať s týmito „strašnými a hroznými“ mikrokontrolérmi, ktoré sa čoraz viac podobali „zástrčke v každom sude“.

Vôbec som nechcel „vymrieť“, takže voľba bola jasná. A potom sa začalo niečo, čo pripomínalo „pohyb džungľou“.

Informačný „neporiadok“ v tomto „sektore“ sa ukázal byť taký pôsobivý, že „vstávali vlasy dupkom“.

Kam ísť? "Nie je kam ustúpiť, Moskva je za nami."

Mimochodom, presne v rovnakej pozícii je teraz veľa ľudí (viem z listov), ​​pre ktorých sa „vstup“ do mikroprocesorovej technológie stal nielen akýmsi „výstrelkom“, ale veľmi prirodzenou životnou nevyhnutnosťou, čo je celkom pochopiteľné, pretože m/ovládače sú súčasťou takmer každého viac či menej moderného, ​​malorozmerového (nielen) zariadenia (a „čím ďalej do lesa, tým viac palivového dreva...“).

Len Pán Boh vie, čo som pretrpel: nebolo pomoci a musel som sa spoliehať len na svoje sily.

Po všetkých týchto „utrpeniach“ vyvstala logická otázka: „O čo tu vlastne ide? Je naozaj možné, že každý, kto má v úmysle „zasahovať“ do týchto „kusov hardvéru“, si musí „krvavo zlomiť nos“ prejazdom cez "batéria"?

Je naozaj nemožné sa bez toho zaobísť alebo aspoň urobiť tento proces menej bolestivým?

Vydedukoval som...

Ale, preboha, je to možné!

Je pravda, že budete musieť „orať nezorané pole“, ale z viacerých dôvodov to dáva zmysel.

To, čo sa dočítate v „Návode...“ je výsledkom vyššie spomínaného bolestivého procesu, prezentovaného „na striebornom podnose“.

Princípom prezentácie informácií je maximálny stupeň „žuvania“, keďže „Samoučiteľ...“ je určený špeciálne pre začiatočníkov.

Jedným z hlavných problémov začínajúcich programátorov je nedostatok konzistentnosti vo vnímaní informácií a ich „predávkovanie“, spojené s nadmernou túžbou rýchlo dosiahnuť požadovaný cieľ bez zohľadnenia objektívnych faktorov.

Tento druh túžby je, samozrejme, chvályhodný, ale bez plánovania, jasne vyjadrených priorít a schopnosti najprv vedome obmedziť množstvo vnímaných informácií len na tie najnutnejšie, to robí krutý vtip. osoba.

Výsledkom je „neporiadok“ v hlave, dezorientácia v toku informácií a v horšom prípade ľútosť nad premárneným časom, hoci vo všeobecnosti nie je všetko také super komplikované, ako by sa na prvý pohľad mohlo zdať.

Vôbec nehovorím, že je to jednoduché. Budete musieť pracovať, ale nemali by ste sa vôbec báť, takže

ako „diabol nie je taký strašný, ako ho natierajú“.

Ďalším problémom je podceňovanie obrovského významu vedomostí a schopnosti aplikovať stratégie a taktiky brainstormingu v praxi.

Aj keď je akýkoľvek „brainstorming“ užitočný, „brainstorming“ programátora, ktorý má aspoň základné znalosti o svojej stratégii a taktike, je oveľa účinnejší a efektívnejší ako „kŕčovité akcie“ programátora, ktorý tieto nápady nemá. Ale práca programátora je “všetko brainstorming”!!!

Každý má mozog, ale so stratégiou a taktikou tohto „útoku“ sú obrovské problémy. Môžete, hlúpo, „dostať guľku“ (podľa scenára ako „hrdinská smrť programátora“).

IN Pri svojej práci vychádzam z toho, že mozog nie je len logický „stroj“, ale aj „kontajner osobnosti“.

To druhé autori „výtvorov“ podobných tomu môjmu buď zjavne podceňujú, alebo vôbec neberú do úvahy, čo je ich obrovský prepočet, ktorý ruší väčšinu ich úsilia.

Tento druh „jednostrannosti“, ktorý je vo väčšine prípadov rozšírený, vedie k tomu, že učiaci sa informácie vnímajú ako logicky sofistikované, intenzívne (bez zmyslu pre proporcie) a „beznádejné znásilnenie zo strany autora jeho (učiaci sa) mozog“, s cieľom „posmievať sa“ nízkej úrovni jeho tréningu a priamemu alebo nepriamemu zníženiu sebaúcty „mikrokontroléra“.

Samozrejme, v mnohom to nie je pravda, ale čo sa dá robiť, toto je prirodzená, podvedomá, obranná reakcia psychiky normálneho človeka na veľké množstvo informácií, s ktorými nie je pripravená efektívne pracovať.

Aby ste pochopili obrovskú škodu tohto prístupu k výcviku, spomeňte si na Afganistan alebo Čečensko a na osud tých nevyšetrených a psychicky nepripravených detí, ktoré boli „hodené do tohto mlynčeka na mäso“.

Takýto osud vám neprajem, a preto v „Návode...“ došlo k svojráznemu pokusu o postupné „integrovanie“ núl a jednotiek do osobnosti (ich „zduchovnenie“) a formovanie tzv. istá „ideológia softvérového voskového dôstojníka“ („bojový duch“, „jadro“), bez ktorej sa akákoľvek „vojna“ (programovanie je čisto mužská a „chuligánska“ činnosť nazývaná „vojna s vlastnou hlúposťou“) stratí bez toho, aby sa vôbec začala a ktorá je hlavným základom každej efektívnej „školy“ tréningu. Nemám s čím porovnávať, a preto pracujem na vlastné nebezpečenstvo a riziko.

Nesúďte ma tvrdo, keďže pracujem „od nuly“ a nie som „psychologický špecialista“. Dúfam, že v tom budú pokračovať aj ďalší autori extrémne dôležité a „zločinne“ ignorovaná „psychologická téma“. Rád by som veril, že pri čítaní „Samoučiteľa...“ pocítite taký priateľský a rešpektujúci postoj k svojej nie vôbec ľahkej práci (viem zo seba) a vaše podvedomie nebude vydávať SOS signály o „divoké znásilnenie mozgu“.

Chcel by som sa osobitne venovať „chuligánom“, „bojovníkom“ a „tyranom“ (v bežnom zmysle týchto slov), ktorých „aktivita mozgu“ je jasne vyjadrená.

Nemusíte vysvetľovať, čo znamená „udrieť“, „uhnúť sa“, „brániť sa“ a „čierne oči“ vás nepletú. Z tohto dôvodu je programovanie v prvom rade vaším „dedičstvom“, kde si môžete pekne „poľovať“.

IN programovanie, agresivita je výhodou, nie nevýhodou.

Tu môžete zo srdca intelektuálne „mávať päsťami“ (bez obmedzení) a navyše „zlomiť krky“ mnohým slušným „nepriateľom“ (bez obmedzení), z ktorých, mimochodom, budete mať určite veľkú radosť .

Informácie sa teda budú poskytovať v určitom poradí a podľa princípu „od jednoduchých po zložité“.

Dodržujte prosím túto postupnosť a neprechádzajte na ďalšie časti bez toho, aby ste pochopili predchádzajúce. Ide o pohodovú záležitosť a nevyžaduje si rozruch.

Nebudem „všetko hádzať do kopy“, pokúsim sa tiež nevytvárať „prepätie“. „Výukový program...“ je určený pre začiatočníkov, no predpokladá sa, že ovládajú aspoň základy digitálnej techniky.

Vyjadrujem úprimnú vďaku ľuďom, ktorí pomohli pri vývoji tejto učebnice.

1. Pripravte si nástroje

Mikrokontroléry (a vôbec všetky procesory) spočiatku rozumejú iba strojovým kódom, teda určitej množine núl a jednotiek.

Tí, ktorí si predstavia fungovanie počítadiel, registrov, klopných obvodov atď., okamžite pochopia podstatu strojového kódu.

Keďže takýchto ľudí je medzi elektronickými inžiniermi väčšina, podľa môjho názoru budú všetci súhlasiť s touto axiómou: strojové kódy sú užitočné v „malých dávkach“.

A Vtedy začínajú „veľké dávky“ (komplexné zariadenia s desiatkami balíkov m/obvodov), potom „mozgy začnú fajčiť“ dokonca aj medzi skvelými elektronickými inžiniermi s pozoruhodnými schopnosťami.

V tomto prípade je najnepríjemnejšia vec, že ​​ako sa zložitosť obvodu zariadenia zvyšuje, efektivita práce elektronického inžiniera prudko klesá.

A v skutočnosti sa investuje veľa úsilia a peňazí, ale výsledkom je niečo, čo nie je príliš spoľahlivé, objemné, náročné na výrobu, energeticky náročné a drahé.

Aby sa všetky tieto problémy naraz „zabili“, „hlavy vajca“ najskôr prišli s „veľkými“ procesormi (ktoré sa používajú v počítačoch) a potom s „malými“ a nazývali ich mikrokontroléry.

Vo vnútri m/controller sa nachádza „sada“ modulov, z ktorých každý je multifunkčný. Manipuláciou s veľmi výkonnými schopnosťami tejto „súpravy“ je možné implementovať milióny typov zariadení.

Prirodzene, celá táto „ekonomika“ musí byť nejako „riadená“. Toto „rolovanie“ sa nazýva programovanie.

Ak hovoríme o veľkých „poliach“ strojových kódov, potom programovanie priamo (v strojových kódoch) je niečo, čo by ste nepriali svojmu nepriateľovi: nie je v tom žiadne potešenie, áno, aká dobrá vec a môžete skončiť v „psychiatrickej liečebni“ (existujú výnimky - ľudia s vynikajúcimi schopnosťami a géniovia). Aby obyčajní ľudia mohli písať programy bez veľkého úsilia, boli vynájdené rôzne programovacie jazyky.

Zmyslom všetkých je nahradiť strojové kódy slovami, slovnými skratkami, skratkami a pod., teda tým, čo človek ľahko a zmysluplne vníma a s čím môže pohodlne pracovať pri skladaní textu programu.

Všetky tieto „stráviteľné vymoženosti“ sa po dokončení kompilácie textu programu preložia do strojových kódov jedným „ľahkým pohybom ruky“ (mozog programátora nie je zapojený).

Aby sa tento „ľahký pohyb ruky“ uskutočnil, „vaječné hlavy“ prišli s takzvaným „integrovaným vývojovým prostredím“.

Ide o súbor programov, v ktorých programátor pracuje s maximálnou mierou komfortu a navyše naprieč celým „polom“ úloh, ktoré rieši (vrátane tvorby textu programu atď. atď.).

Čo urobí ako prvé napríklad Rus, ktorý pricestoval do Anglicka a bude tam žiť?

Učiť sa anglicky.

Pri „zadávaní“ programovania musíte urobiť to isté (úloha je ešte oveľa jednoduchšia).

„Matkou“ všetkých programovacích jazykov je assembler.

Aj keď sa považuje za najjednoduchšie, slovo „jednoduchý“ sa vzťahuje predovšetkým na súbor jeho príkazov: ich počet je nevyhnutným minimom, a napriek tomu úplne postačujúci na vyriešenie najzložitejších problémov, nie však na ich pohodlné vnímanie. osoba.

Montážne pokyny sú buď skratky anglických slov, alebo súbor prvých písmen anglických fráz, alebo oboje.

Minimálna „džentlmenská“ sada assembleru pre PIK je 35 príkazov. V skutočnosti sa najčastejšie používa 10 až 20 príkazov.

V budúcnosti sa pripravte na hlúpe memorovanie (najskôr) všetkého toho anglického „abracadabra“, ako je napchávanie sa (vôbec nemám sklony k cudzím jazykom, ale nevadí, zvládol som to), nie je to taká náročná úloha, uisťujem vás. V budúcnosti vám pomôže vaše nápadité myslenie a vizuálna pamäť.

A naozaj stojí za to naučiť sa assembler, pretože to nemusí byť veľmi

„stráviteľné“, ale práve v tomto jazyku sú napísané najkompaktnejšie, najrýchlejšie a najspoľahlivejšie programy, a preto pracujú seriózni programátori

hlavne v assembleri.

Varovanie: v tejto fáze si s assemblerom nezahrávajte! Všetko má svoj čas. Zatiaľ stačí všeobecná predstava (nech sa usadí v mozgu).

Programy pre PIK sú kompilované primárne v assembleri.

Aj keď je program pre nich napísaný v jazyku vyššej úrovne, integrované vývojové prostredie nakoniec všetko preloží do assembleru.

O integrovanom vývojovom (návrhovom) prostredí: Vykonáva celý rad úloh.

V jeho špecializovanom textovom editore sa skompiluje text programu.

Text programu nie je možné zapísať do PIK, pretože „rozumie“ iba strojovým kódom. Preto je potrebné previesť text programu z jazyka symbolických inštancií do strojových kódov.

To znamená, že je potrebná takzvaná montáž (kompilácia) zdrojového textu programu, ktorá sa vykonáva v rovnakom integrovanom vývojovom prostredí.

Toto je miesto, kde sa začiatočníci zvyčajne mýlia: fráza "zostavenie zdrojového kódu programu" neznamená preklad zdrojového textu programu do assembleru (text programu je už napísaný v assembleri), ale naopak konverziu textu programu napísaného v assembleri do strojových kódov, ktoré sú najskôr vhodne archivované a umiestni sa do špeciálneho súboru s príponou (formátom) .HEX (pre uľahčenie ukladania a prenosu strojových kódov) a potom sa rozbalí zo súboru HEX a nadobudne svoju pôvodnú podobu v programe obsluhujúcom programátor.

Pomocou tohto programu sa strojové kódy programu zapisujú do PIC. Vyššie uvedená fráza, ktorá sa používa stále, určite nie je úspešná.

Dávajte si na to pozor a vždy majte na pamäti, že to neodráža význam toho, čo sa deje, aj keď to budem používať ďalej, keďže je to štandardné. Pokryl som len dve hlavné črty IDE.

Jeho schopnosti nimi zďaleka nie sú vyčerpané.

Integrované vývojové prostredie pre PIC sa nazýva MPLAB.

Tento program (alebo skôr súbor programov) vytvoril výrobca PIK, teda spoločnosť

Microchip Technology Inc.

V Rusku je zástupcom tejto spoločnosti Micro-Chip LLC, ktorá má svoju vlastnú stránku technickej podpory na internete v ruštine http://www.microchip.ru (mimochodom, na tejto stránke v časti „Začiatočníci“ , je tam odkaz na moju stránku).

Osobne používam verziu MPLAB 5.70.40, ktorú odporúčam urobiť aj vám.

Toto je „starý dobrý kôň, ktorý nezničí brázdu“ a jeho schopnosti sú „nad strechou“.

Hlavnou nevýhodou tejto verzie je, že pracuje pomaly (počíta sa), ale pre začiatočníkov nie je potrebná „reaktívna“ rýchlosť.

Jeho hlavnou výhodou je spoľahlivosť.

IN novšie verzie v tej či onej miere vymieňajú rýchlosť za spoľahlivosť, čo niekedy nie je dobré.

V budúcnosti sa zameriam na verziu 5.70.40.

Poznámka: MPLAB verzia 5.70.40 (a 2 ďalšie verzie) je dostupná na CD. Distribúciu MPLAB si musíte stiahnuť do priečinka s anglickým názvom (priečinok Moje dokumenty alebo Pracovná plocha nebude fungovať), inak budete mať problémy.

Najlepšie je usporiadať ho v priečinku Program Files na jednotke C.

Program MPLAB je integrované vývojové prostredie pre PIC a obsahuje všetko potrebné pre písanie a úpravu programu, pre vytváranie HEX súborov, ako aj pre ladenie programu.

Odpadá tak potreba samostatného textového editora na písanie programu, samostatného asemblerového programu na vytváranie HEX súboru a samostatného programového debuggera (simulátora), keďže toto všetko (a ešte viac) má MPLAB.

Nainštalujte si MPLAB do počítača, uistite sa, že nie je „krivený“ a na chvíľu naň zabudnite, pretože aby ste s ním mohli pracovať, musíte sa dôkladne pripraviť, čo urobíme v budúcnosti.

Ďalši krok - zostava programátora, keďže HEX programový súbor vytvorený v MPLAB musí byť „konvertovaný“ na strojové kódy, ktoré budú zapísané do PIC (takzvaný „firmvér“).

V prvej fáze nemôžem ponúknuť nič jednoduchšie a spoľahlivejšie ako programátor PonyProg, aj keď, samozrejme, existujú aj iní „hodní“ programátori.

Informácie o zostavení programátora PonyProg nájdete v "Príloha č. 1".

Treba poznamenať, že programátor PonyProg najlepšie funguje na relatívne „pomalých“ počítačoch starších verzií, pretože pre nich bol svojho času vytvorený program PonyProg.

Pri pripájaní programátora k moderným vysokorýchlostným počítačom so „sofistikovanými“ operačnými systémami môže dochádzať ku konfliktom, ako je „nekonzistentnosť“ programu PonyProg s operačným systémom alebo prekročenie maximálneho povoleného rýchlosti výmeny dát medzi počítačom a programovateľným PIC, ktoré je, že programátor jednoducho nemusí fungovať.

To vôbec nie je fakt, ale môže byť.

Najlepším riešením je na tieto účely použiť počítač s taktovacou frekvenciou do 500 MHz a operačným systémom Windows95/98.

Osobne som spravil toto: kúpil som si „starú dámu“ prakticky za nič, oklamal BIOS tak, že som k pôvodnému pevnému disku ako „asistent“ pripojil ďalší 8GB pevný disk, nainštaloval Windows98 a zapol dodatočné spaľovanie.

Ukázalo sa to „lacné a veselé“, a to predovšetkým z toho dôvodu, že pri programovaní, vytváraní dosiek plošných spojov, kreslení obvodov a iných amatérskych rádiových činnostiach nie je potrebná špeciálna rýchlosť, pretože všetky tieto činnosti sú pokojné a neexistuje žiadna špeciálna zmysel pri ich použití na túto úlohu vysokorýchlostné počítače nemajú.

Moja „stará dáma“ má takmer 2 GB programov tohto druhu, vrátane niektorých dosť „sofistikovaných“ a nič nefunguje skvele.

S tým, čo musí byť k dispozícii, dúfam, že je to jasné, a teraz o užitočných „maličkostiach“. Stiahnite si tieto dva malé, ale užitočné a pohodlné programy:

HEX - kalkulačka: súbor CALC32.rar je priložený (priečinok "Programy"). Prevodník číselnej sústavy: Súbor BCONV32 je priložený (priečinok "Programy").

Sú také jednoduché, že ľahko zistíte, prečo sú potrebné. Najčastejšie je potrebný prevodník číselného systému.

Jeden z aktívnych účastníkov práce, Peter Vysočanský, vyvinula program na prevod číselného systému, ktorý je najviac prispôsobený praktickým potrebám:

Prevodník výpočtových systémov od Petra Wysochanského: priložený súbor Hex-Dec_Bin.exe

(priečinok s aplikáciami)

Po otvorení program prevodníka nainštaluje anglické rozloženie klávesnice (čo potrebujete).

K dispozícii je teda všetko, čo potrebujete na začatie programovania regulátorov PIC. Zatiaľ to nie sú nič iné ako krásne a zaujímavé „veci“ s nie celkom jasným účelom.

Vo svojom voľnom čase si ich môžete prezerať, na niečo klikať, len aby ste predišli ďalším nedorozumeniam, nedotýkajte sa predvolených nastavení.

Pokračujte na ďalšiu časť.

"Návod na programovanie regulátorov PIC pre začiatočníkov" http://ikarab.narod.ru E-mail: [chránený e-mailom]

2. Čo je mikrokontrolér a ako funguje

Po prvé, mikrokontrolér je procesor so všetkými jeho „atribútmi“ plus vstavaná, energeticky nezávislá pamäť (programy a dáta), ktorá vám umožňuje opustiť externú programovú pamäť a umiestniť program do svojej energeticky nezávislej pamäte.

To vám umožňuje vytvárať veľmi jednoduché (z hľadiska obvodov) a kompaktné zariadenia, ktoré však vykonávajú pomerne zložité funkcie.

Niekedy sa dokonca čudujete: táto malá „vec“ nahrádza celý „stĺp starého železa“ (K555 atď.).

Akýkoľvek mikrokontrolér, pokiaľ ide o jeho schopnosti, je, samozrejme, horší ako počítačový procesor, ale napriek tomu existuje veľmi široká trieda zariadení, ktoré sú implementované hlavne na mikrokontroléroch.

A V skutočnosti nemôžete dať počítač do vrecka a nemôžete ho napájať batériami. Preto v mnohých prípadoch jednoducho neexistuje alternatíva k mikrokontrolérom. „Srdcom“ mikrokontroléra je aritmetická logická jednotka (ALU).

Najjednoduchšie si to možno predstaviť v podobe banálnej kalkulačky, ktorej tlačidlá ovláda program napísaný v assembleri (teda programátor).

Ak sa nad tým zamyslíte, v ovládacom mechanizme tohto druhu kalkulačky nie je nič mimoriadne zložité.

A v skutočnosti, ak potrebujete napríklad pridať čísla A a B, potom v texte programu sú najprv špecifikované konštanty A a B a potom je zadaný príkaz „add“.

Programátor vôbec nemusí vedieť, čo sa deje s nulami a jednotkami (pokiaľ to nie je len pre všeobecný vývoj), kalkulačka je predsa kalkulačka, aby ušetril používateľa „trápenia sa“ so strojovými kódmi a inými „nepríjemnosťami“. “. Keď pracujete s počítačom, nemusíte detailne vedieť, čo sa deje v divočine operačného systému.

Ak tam „leziete“, „zbláznite sa“ a mikrokontrolér je vo svojej podstate rovnaký počítač, ale iba jednoduchý.

Programátor potrebuje len presne vedieť, ako „objednať hardvér“, aby urobil to, čo je potrebné na dosiahnutie plánu.

Mikrokontrolér si možno predstaviť ako akúsi univerzálnu „súpravu“ multifunkčných modulov (blokov), ktorých „ovládacie páky“ má v rukách programátor.

Týchto „pákov“ je pomerne veľké množstvo a je prirodzené, že ich musíte ovládať a presne vedieť, čo sa stane, ak „zatiahnete“ (zadáte príkaz v jazyku symbolických inštancií) za tú či onú „páku“.

Tu musíte vedieť, ako napríklad „Otče náš“, každý detail a nestrácať čas týmto „uznaním“.

Iba týmto spôsobom môže byť prázdny „prázdny“ (nenaprogramovaný PIC) „donútený“ vykonať niektoré „zmysluplné“ akcie, z ktorých väčšinu možno skontrolovať v simulátore MPLAB (viac o tom neskôr), bez toho, aby ste museli písať program do PIC. Preto je potrebný prechod na „modulárne“ myslenie.

Každý mikrokontrolér možno prirovnať k detskej stavebnici, ktorá obsahuje množstvo rôznych predmetov, manipuláciou s ktorými možno získať ten či onen konečný „produkt“.

Poďme si ich vytriediť a „uviesť všetko do poriadku“.

Ako príklad použijem jeden z najbežnejších regulátorov PIC

PIC16F84A.

Je to akoby „protomat“ zložitejších PIC, obsahuje minimálnu „sadu“ modulov a dokonale sa hodí na počiatočný „vstup do m/controllerov“.

Energeticky nezávislá pamäť.

Začnime energeticky nezávislou pamäťou (pamäť programu a pamäť dát). Informácie uložené v energeticky nezávislej pamäti sa po vypnutí napájania zachovajú, a preto je program zapísaný práve v nej.

Toto „miesto“ stálej pamäte, kde je program zapísaný, sa nazýva pamäť programu.

Veľkosť programovej pamäte sa môže líšiť. Pre PIC16F84A je to 1024 slov. To znamená, že je určený na prácu s programami, ktorých veľkosť nepresahuje

Dnes máme konečne čas predstaviť vám ďalšiu rodinu mikrokontrolérov – ide o mikrokontroléry PIC.

Tieto mikrokontroléry sú tiež veľmi známe, sú inštalované v mnohých zariadeniach a medzi rádioamatérmi si už dlho získali veľmi silný záujem.

Developerom tejto rodiny je spoločnosť Mikročip, ktorá je tiež veľmi známa a jej produkty sú žiadané po celom svete.

Študovať túto sériu ovládačov je veľmi ťažká otázka, začal som to robiť už dávno, ale na to som prišiel až teraz. V poslednej dobe som trochu urýchlil proces štúdia mikrokontrolérov PIC vďaka vašim požiadavkám v skupinách a chatoch, na ktoré mi nedalo nereagovať.

Preto podotýkam, že PIC MK budeme programovať v jazyku C. Aké programovacie prostredie a kompilátor zvolíme, sa rozhodneme o niečo neskôr, ale medzitým si v tejto lekcii stručne predstavíme samotné ovládače, ich architektúra a ich odrody.

Napríklad ovládače AVR, s ktorými stále pracujeme, sú 8-bitové, zatiaľ čo ovládače STM, ktoré študujeme, sú 32-bitové.

PIC radiče sú tiež rozdelené podľa bitovej hĺbky.

Prvá línia sú 8-bitové PIC radiče. Ich názvy modelov začínajú predponou PIC10/PIC12/PIC16.

Táto línia je tiež rozdelená do 3 rodín.

1. BASELINE— táto architektúra je prítomná v ovládačoch PIC10. Od výkonnejších sérií sa líši počtom pinov (od 6 do 28) a nízkou cenou.

2. MID-RANGE— Jadrá mikrokontrolérov PIC12/PIC16 majú túto architektúru. Počet pinov v tejto sérii bol zvýšený (zo 6 na 64), sú o niečo drahšie, ale okrem 35 strojových inštrukcií podporovaných sériou BASELINE majú 14 dodatočných inštrukcií (optimalizovaných pre kompilátor jazyka C) . Táto séria tiež zvýšila produktivitu o 50%, má hlbší a vylepšený hardvérový zásobník, zvýšenú kapacitu pamäte a niektoré ďalšie potešenia, s ktorými sa zoznámime neskôr, pretože s najväčšou pravdepodobnosťou začneme proces štúdia programovania mikrokontrolérov s túto sériu PIC.

3. 8-bitové mikrokontroléry PIC18- ide o vylepšenú sériu ovládačov, na doske je množstvo ďalších periférií, počet pinov od 18 do 100, výkon 16 MIPS, podpora technológie NanoWatt, prítomnosť programovateľného generátora.

Druhý riadok- toto sú 16-bitové radiče PIC. Majú predponu PIC24F a PIC24H. To sú už výkonnejšie ovládače. Na rozdiel od prvého riadku sa už strojový príkaz nevykonáva v 4 hodinových cykloch generátora, ale v 2. Periférne zariadenia sú tiež ešte viac rozšírené, pokiaľ ide o typy zberníc, priamy prístup k pamäti DMA (pre PIC24H) a rozšírený súbor pokynov. Existuje aj mnoho ďalších funkcií.

Tretí riadok- toto sú 32-bitové radiče. Ich predpona je už PIC32. Frekvencia hodín takýchto ovládačov je až 120 MHz a pre novú sériu MZ - až 200 a ešte vyššia. Napríklad mám vývojovú dosku, na ktorej je nainštalovaný radič PIC32MZ2048EFH064, ktorý má taktovaciu frekvenciu 252 megahertzov. Aj tu sa ďalej zvýšil výkon jadra. Táto rodina je postavená na jadre MIPS32®, ktoré sa okrem vysokého výkonu vyznačuje aj nízkou spotrebou energie.

Vo všeobecnosti sú toto stručné charakteristiky súčasných PIC regulátorov. Ak to vezmeme podľa názvu, potom existuje veľa mien, podľa každého vkusu, ako sa hovorí.

Rovnako ako kontroléry AVR a STM32, ktoré sme preskúmali, ako aj tie, o ktorých uvažujeme, kontroléry PIC fungujú približne rovnakým spôsobom. Program je napísaný, zostavený do strojového kódu, ktorý je zrozumiteľný aritmeticko-logickému zariadeniu regulátora, načítaný (flashovaný alebo nahraný) do regulátora a potom zabezpečuje činnosť podľa určitého algoritmu. Hlavné rozhranie používané na flashovanie týchto ovládačov je ICSP, určený na programovanie v obvode. Bližšie sa s tým zoznámime, keď tieto ovládače flashneme.

Poďme sa trochu pozrieť na organizáciu pamäte v PIC radičoch. Keďže rodinu PIC začneme študovať s jednoduchšími 8-bitovými (princíp od jednoduchého k zložitému nikto nezrušil), pozrieme sa na organizáciu pamäte tejto série.

Najprv sa pozrime na blokovú schému regulátora na príklade MK PIC16F84A(kliknutím na obrázok sa obrázok zväčší)

V ľavom hornom rohu hneď upúta pamäťový modul FLASH, v ktorom je zvyčajne uložený program ovládača (firmvér). A v pravom hornom rohu vidíme pamäť EEPROM, ktorá už slúži na ukladanie dát. Tieto dva typy pamäte sú energeticky nezávislé a nevymažú sa po vypnutí a resetovaní ovládača. Táto pamäť však nie je rýchla, takže pri spustení programu sa kód distribuuje do pamäte RAM (RAM), ktorá je už rýchla a je určená na fungovanie ovládača počas prevádzky. Preto sa teraz na túto spomienku pozrieme trochu podrobnejšie.

RAM regulátora PIC je rozdelená na programovú pamäť a dátovú pamäť.

Takto je usporiadaná programová pamäť regulátora PIC16F84A

Mikrokontroléry v tejto sérii majú programový čítač schopný adresovať 8K x 14 slov programovej pamäte a 14-bitovú dátovú zbernicu programovej pamäte. Celá programová pamäť je rozdelená na 4 strany po 2 kiloslovách (0000h-07FFh, 0800h-0FFFh, 1000h-17FFh, 1800h-1FFFh). Toto je všeobecná informácia, takže pre ovládače s malou pamäťou bude pohyb medzi týmito stránkami viesť k cyklickému adresovaniu. Preto musíme poznať veľkosť pamäte ovládača, ktorý chceme naprogramovať. Vo všeobecnosti sa programová pamäť skladá z programového počítadla, zásobníka niekoľkých úrovní, pamäte na uloženie vektorov prerušení a vnútornej programovej pamäte.

Dozvieme sa tiež niečo o organizácii pamäte RAM pridelenej na ukladanie údajov.

Dátová pamäť je rozdelená na všeobecné registre a špeciálne registre. Pozrime sa, ako je usporiadaná pamäť údajov ovládača PIC16F84A

Registre na špeciálne účely (SFR) sú registre, ktoré sú určené na ukladanie presne určených hodnôt a majú špecifické názvy. Postupne ich spoznáme, keď napíšeme nejaký zdrojový kód, ktorý ich bude hojne využívať.

General Purpose Registers (GPR) sú pamäťové bunky, ktoré majú iba adresy a sú určené na ukladanie akýchkoľvek údajov.

Aj z vyššie uvedeného obrázku vidíme, že dátová pamäť nášho kontroléra je rozdelená na 2 stránky (alebo banky), medzi ktorými sa prechod uskutočňuje nastavením určitých bitov v registri. POSTAVENIE. Preto je tento register prítomný v oboch bankách a môžeme k nemu kedykoľvek pristupovať, aby sme zmenili aktuálnu pamäťovú stránku.

Adresovanie môže byť priame, nepriame alebo relatívne, keď sa adresa meria vzhľadom na aktuálnu adresu. Možno sa s tým nezoznámime, pretože táto úloha vzniká pre programátorov, ktorí píšu programy v assembleri.

Podľa toho má každý radič okrem pamäte mnoho ďalších zaujímavých vecí, vrátane I/O portov. Naše ovládače PIC nie sú výnimkou. Pozrime sa na účel nôh ovládača PIC16F84A

Tento ovládač má dva porty - port A a port B. Z portu A je vyvedených 5 nôh - RA0-RA4 az portu B - všetkých 8 nôh RB0-RB7.

Nohy portu môžu mať aj iné účely v závislosti od toho, ako ich nakonfigurujeme. Napríklad kolík 6 alebo RB0 sa môže kedykoľvek zmeniť na kolík na zachytávanie externých prerušení a kolík 3 alebo RA4 sa môže stať kolíkom na taktovanie časovača z externého generátora.

Taktovanie PIC MK je možné vykonávať aj z externého oscilátora, alebo z kremenného rezonátora, z vnútorného odporu a existuje aj niekoľko ďalších možností, ktoré nie všetky ovládače tejto rodiny podporujú. V praxi sa zvyčajne používa taktovanie z kremenného rezonátora. S najväčšou pravdepodobnosťou budeme túto tradíciu dodržiavať aj v našom budúcom štúdiu.

Myslím, že tu dokončíme naše zoznámenie sa s PIC regulátormi. Zoznámenie sa ukázalo ako krátke, ale na prvýkrát nám to bude stačiť. S dešifrovanými informáciami sa stretneme pri písaní našich programov. Takže sa tešte na ďalšie hodiny, ktoré sľubujú, že budú veľmi zaujímavé. Najprv sa zoznámime s inštaláciou prostredia a kompilátora, naštudujeme si, ako s nimi pracovať, aké programátorské jemnosti sú prítomné v nastaveniach rôznych periférií, ako aj pri práci s nimi.

Pozrite si VIDEONÁVOD (kliknite na obrázok)

Zobrazenia príspevku: 9 304