Mikrokontrollerek MCU Mikrokontroller mikrovezrl A mikrokontroller u C

  • Slides: 49
Download presentation
Mikrokontrollerek - MCU -

Mikrokontrollerek - MCU -

Mikrokontroller / mikrovezérlő A mikrokontroller (u. C) lényegében egy tokba integrált mikroszámítógép. n Pontos

Mikrokontroller / mikrovezérlő A mikrokontroller (u. C) lényegében egy tokba integrált mikroszámítógép. n Pontos definíciója nincs, különböző bonyolultságú típusok vannak. n Korai, egyszerű típusok pl. u. P kiegészítve belső memóriával vagy egyszerű portokkal. n Mai típusok megfeleltethetőek egy nem is túl régi komplett számítógépnek. . . n

Mikrokontroller / mikrovezérlő Amiben különbözik a nagyméretű gépektől: n kisebb számítási teljesítmény n kisebb

Mikrokontroller / mikrovezérlő Amiben különbözik a nagyméretű gépektől: n kisebb számítási teljesítmény n kisebb fogyasztás n szélesebb feszültségtartomány n kisebb (beépített) memória n nem feltétlen csatlakoztatható gyors párhuzamos külső memória n speciális perifériák beépítve n „tápot kap és már megy is”

Mikrokontroller / mikrovezérlő n A mai típusok jellemzően tartalmaz(hat)nak: ¨ processzormag ¨ programmemória (EEPROM/Flash)

Mikrokontroller / mikrovezérlő n A mai típusok jellemzően tartalmaz(hat)nak: ¨ processzormag ¨ programmemória (EEPROM/Flash) ¨ szabadon hozzáférhető memória (RAM); adatmemória (EEPROM) ¨ órajel generátor ¨ digitális ki-bemenetek, soros portok, analóg bemenet, PWM kimenet ¨ időzítők, számlálók, eseményfigyelők, megszakítási lehetőségekkel ¨ megbízhatósági funkciók (brown-out reset, watchdog timer stb)

Mikrokontroller / mikrovezérlő Felhasználási területek: n egyszerűbb beágyazott rendszerek (különböző gépek beépített vezérlőegysége) ¨

Mikrokontroller / mikrovezérlő Felhasználási területek: n egyszerűbb beágyazott rendszerek (különböző gépek beépített vezérlőegysége) ¨ pl. jármű, modelljármű, ipari berendezések, műholdak, mérőműszerek, háztartási eszközök, szórakoztató eszközök n PC-n belül is van (perifériák vezérlőegységei)

Mikrokontroller / mikrovezérlő n n A 8 bites típusok jellemzően <20 MHz órajelűek, programmemóriájuk

Mikrokontroller / mikrovezérlő n n A 8 bites típusok jellemzően <20 MHz órajelűek, programmemóriájuk a néhány ezer sortól a néhány tízezer sorig terjed, a RAM a néhány száz bytetól a néhány száz k. B-ig terjed. A processzor paraméterek szempontjából összehasonlíthatóak egy 80 -as évekbeli PC-vel (de utóbbiak memóriája és háttértára általában nagyobb volt). Assemblyben is könnyen lehet programozni.

Mikrokontroller / mikrovezérlő A 32 bites vezérlők akár 100 MHz órajelűek is lehetnek, akár

Mikrokontroller / mikrovezérlő A 32 bites vezérlők akár 100 MHz órajelűek is lehetnek, akár több MB programmemóriával és RAM-mal. Akár egy 90 -es évekbeli PC processzor teljesítményét elérik. Ilyenekre fejleszteni már majdnem olyan, mint PC-re. . . Célszerűen C-ben lehet programozni.

Felépítés n n n A kisebb teljesítményű mikrovezérlők jellemzően Harvard architektúrájúak, azaz fizikailag külön

Felépítés n n n A kisebb teljesítményű mikrovezérlők jellemzően Harvard architektúrájúak, azaz fizikailag külön memória van a programnak (utasítások) és az egyebeknek (RAM). A programmemória nem feltétlenül 8 bites felépítésű; a RAM általában 8 bites cellákból áll A RAM mellett tartalmazhat Data EEPROM-ot is a program által igényelt adatok tartós tárolása céljából.

A mikrokontroller belső felépítése

A mikrokontroller belső felépítése

Program memória A központi egység a végrehajtandó adatokat a program memóriából olvassa ki. Ez

Program memória A központi egység a végrehajtandó adatokat a program memóriából olvassa ki. Ez a tár különféle igények miatt különböző típusú: ROM, PROM, EEPROM, Flash lehet. n n ROM: ennek a tartalmát a gyártás során írják bele a memóriába. Ez – mivel nagy darabszám esetén a legolcsóbb memóriamegoldás – akkor előnyös, ha nagy mennyiségben akarjuk az adott felprogramozott PIC vezérlőt felhasználni. Természetesen ilyenkor a gyártóhoz kell juttatni a ROM-ba írandó teljes tartalmat és ezt írják be a gyártástechnológia adott fázisában a ROM-ba. PROM / OTP: Programmable ROM, One-Time Programmable; a felhasználó által egyszer programozható, így nem kell a gyártóhoz beküldeni, és utólag nem módosítható (ez akkor előnyös, ha nagyon el akarjuk kerülni, hogy a felhasználó belenyúljon a programba).

n EPROM: Erasable Programmable ROM; ez a memóriatípus olyan, hogy a felhasználó képes ennek

n EPROM: Erasable Programmable ROM; ez a memóriatípus olyan, hogy a felhasználó képes ennek tartalmát beírni, majd új tartalom beírása előtt ultraibolya fénnyel [pl. kvarclámpa] törölni [„kinapoztatni”]. A kvarc ablakot törlés után le kell ragasztani, mert a napfény hatására idővel törlődik. Ma már nem használatos, meghaladta az EEPROM és a Flash, de pl. régi párhuzamos buszú memóriáknál találkozhatunk vele. n EEPROM: Electronically Erasable Programmable ROM; hasonló az EPROM memóriához, de itt a törlés a „kinapozás” helyett elektromos jelekkel történik, így a programfejlesztéshez az ilyen típusú memória még előnyösebb. Ennek újabb változata a FLASH.

PIC mikrovezérlők A Microchip gyár mikrokontroller (MCU=microcontroller unit) családjának márkaneve a PIC. Létezik 8,

PIC mikrovezérlők A Microchip gyár mikrokontroller (MCU=microcontroller unit) családjának márkaneve a PIC. Létezik 8, 16, 32 bites változat, mindegyikből több család és több tucat típus. Az egyes családokat számok jelölik: 8 bites családok: alsó kategória: PIC 10, PIC 12 középső kategória: PIC 12, PIC 16 felső kategória: PIC 18

PIC 8 b családok n n PIC 10: <1 k flash, 16. . 64

PIC 8 b családok n n PIC 10: <1 k flash, 16. . 64 B RAM, 6 pin, 4. . 16 MHz max, 8 b ADC, 1. . 2 8 b timer PIC 12: 1. . 4 k flash, 25. . 256 B RAM, 8 pin, 4. . 32 MHz max, 10 b ADC, 1. . 4 timers (8 b / 16 b) PIC 16: 1. . 56 k flash, 25 B. . 4 k. B RAM, 8. . 64 pin, 16. . 64 MHz max, 10 b ADC, 1. . 6 timers, UART, MSSP, stb. PIC 18: 4. . 128 k flash, 256 B. . 4 k. B RAM, 18. . 100 pin, 32. . 64 MHz max, speciális perifériák, kibővített utasításkészlet

PIC 16 F 690 blokkvázlat Digit. portok Flash program memória RAM ALU perifériák

PIC 16 F 690 blokkvázlat Digit. portok Flash program memória RAM ALU perifériák

PIC 16 F 690 lábkiosztás A mikrokontrollerek kivezetései a sok funkció miatt multiplexáltak. Az

PIC 16 F 690 lábkiosztás A mikrokontrollerek kivezetései a sok funkció miatt multiplexáltak. Az egyes funkciók között szoftveresen (konfigurációs regiszterbe írással) lehet választani. A legtöbb kivezetés alapból bináris ki- vagy bemenet funkciójú (digital IO), ezek általában nyolcasával portokba vannak sorolva - pl. PORTA, PORTB stb (ábrán az RA 0. . 7, RB 0. . 7, stb feliratú kivezetések) Egy portba írással így egyszerre akár 8 kivezetés értékét módosíthatjuk, de lehetőség van a bitenkénti (lábankénti) módosításra is. (A bitmódosító utasítások jellemzően a mikrokontrollerek sajátossága, nem szokásosak a mikroprocesszorokban, ahol ezek helyett logikai műveletekkel (maszkolás) kell a biteket manipulálni. )

PIC program memória felépítése Amint tápfeszültséget kap (vagy reset után) a program futása a

PIC program memória felépítése Amint tápfeszültséget kap (vagy reset után) a program futása a 0 -ás prg. mem. címen kezdődik. A 4 -es cím (5. sor) az ún. megszakítás vektor (interrupt vector). Ha megszakítás történik, ide ugrik a program (függetlenül a megszakítás okától – azt külön meg kell állapítani az ún. interrupt flag bitekből. Külön 8 szintű verem (stack) van. Ebbe menti a program counter (pc) tartalmát megszakításkor vagy call utasításkor (szubrutin hívás). A prg. mem. is állhat több oldalból (page) (hasonlóan a RAM bankjaihoz).

A PIC RAM felépítése (16 F 690) SFR: special function registers GPR: general purpose

A PIC RAM felépítése (16 F 690) SFR: special function registers GPR: general purpose registers Bankok

PIC RAM A PIC-nél nincsenek külön processzor regiszterek és RAM, a kettő ugyanaz. (Az

PIC RAM A PIC-nél nincsenek külön processzor regiszterek és RAM, a kettő ugyanaz. (Az Atmel vezérlőknél a hagyományos processzorokhoz hasonlóan külön kis regiszterkészlet és külön nagy RAM van, „load-store architecture”. ) A PIC RAM 8 bites celláit is regiszternek hívják, ezekből kétféle van. A GPR-ek (General Purpose Registers) a hagyományos értelemben vett RAM, a szabadon írható-olvasható cellák. Itt tárolhatjuk a változóinkat. Az SFR-ek (Special Function Registers) egyrészt a mikrokontroller különböző beállításait tartalmazó regiszterek, másrészt a beépített perifériák beállításait és ki-bemenő adatait kezelhetjük rajtuk keresztül. (Ez lényegében a memorymapped IO fogalom megvalósítása. ) Az SFR-ek többnyire írhatóak és olvashatóak, de vannak kivételek. Pl. a TRISA regiszterben a PORTA kivezetések irányát (in vagy out) tudjuk beállítani. A PORTA regiszterben a hozzátartozó kivezetések értékét tudjuk beírni (ha output) vagy beolvasni (ha input). A TXD regiszterbe írással kezdeményezhetünk soros porti írást (ha előtte felkonfiguráltuk a megfelelő regiszterekbe írással…)

PIC RAM n n n A legtöbb típusnál a RAM fizikai mérete nagyobb, mint

PIC RAM n n n A legtöbb típusnál a RAM fizikai mérete nagyobb, mint amennyit egyszerre meg tud címezni. A RAM-ot „bank”okra osztják, ezekből egyszerre egy érhető el. A Status regiszter mindegyik bankban ugyanott van. Ennek az RPx bitjei állítják be az aktuálisan használt bank számát. Az assemblerben a banksel direktíva segít a bankválasztásban (pl. banksel PORTA kiválasztja a PORTA regisztert tartalmazó bankot. )

PIC 16 utasításkészlet A PIC 16 család utasításai 14 bitesek (egy „szó” (word)) n

PIC 16 utasításkészlet A PIC 16 család utasításai 14 bitesek (egy „szó” (word)) n Minden utasítás belefér ebbe a szóméretbe, paraméterestül (8 b konstans vagy RAM cím) n

PIC 16 utasításkészlet összefoglaló

PIC 16 utasításkészlet összefoglaló

Utasításkészlet aritmetikai: n add n subtract n increment, decrement logikai: n and n or

Utasításkészlet aritmetikai: n add n subtract n increment, decrement logikai: n and n or n xor n complement bitenkénti: n bit set, bit clear n bit test n rotate (shift) n swap feltételes: n inc/dec, skip if zero n bit test, skip is set/clear adatmozgatás: n move vezérlés: n goto n call, return n nop (no operation) 18 F sorozatnak kibővített utasításkészlet van Pl. hardveres szorzó is van benne, többféle feltételes utasítás stb.

Tápellátás A 8 b PIC-ek jellemzően 5 V vagy 3, 3 V tápfeszültségű kivitelben

Tápellátás A 8 b PIC-ek jellemzően 5 V vagy 3, 3 V tápfeszültségű kivitelben készülnek. A 16 b és 32 b verziók jellemzően 3, 3 voltosak. n Az 5 V-os verziók gyakran kb. 2, 5 V-5, 5 V tartományban működőképesek. A 3, 3 voltosak jellemzően nem szeretik a nagyobb feszültséget! n

Órajel generálás PIC kontrollereknél Továbbá ma már többnyire van teljesen beépített órajel generátor (16

Órajel generálás PIC kontrollereknél Továbbá ma már többnyire van teljesen beépített órajel generátor (16 F típusoknál jellemzően 4 vagy 8 MHz-es, leosztható).

Órajel n n System clock (fs): az alap órajel Instruction clock finstr= fs/4, az

Órajel n n System clock (fs): az alap órajel Instruction clock finstr= fs/4, az utasításvégrehajtási ciklus Majdnem minden utasítás egy ilyen ciklus alatt hajtódik végre (ezért is egy szó hosszúak), kivéve a vezérlésátadások, amelyek két ciklus alatt (a pipeline törlése miatt) Pl. ha fs=4 MHz, akkor Tinstr=1 us az utasításvégrehajtási idő

Watch Dog Timer [WDT] Ha a WDT időzítője lejár, reseteli a mikrovezérlőt. Ennek elkerülésére

Watch Dog Timer [WDT] Ha a WDT időzítője lejár, reseteli a mikrovezérlőt. Ennek elkerülésére a programban időnként clear watchdog timer utasításokat kell elhelyezni. Bizonyos típusú „lefagyások” elleni védekezést szolgálhat.

Digital IO n n n A legtöbb kivezetés beállítható digitális (bináris) ki vagy bemenetnek.

Digital IO n n n A legtöbb kivezetés beállítható digitális (bináris) ki vagy bemenetnek. A TRISx regiszterek állítják be a PORTx kapuk lábainak irányát. A PORTx regiszterek tartalmazzák a kivezetések aktuális értékét. Az inputra állított láb nagy impedanciás, tehát ha tri-state kaput akarunk készíteni, akkor a harmadik állapotot inputba állítással érhetjük el (ezért a TRIS név: tri-state) A kimenetek logikai 1 értékének a tápfesz felel meg. Bemenet esetében ne haladjuk meg a tápfeszt (ill. ne legyen nullánál kisebb)!

Digital IO illesztés Ha 5 V és 3, 3 V eszközöket kell illeszteni egymáshoz.

Digital IO illesztés Ha 5 V és 3, 3 V eszközöket kell illeszteni egymáshoz. n 5 V eszköz a 3, 3 V-os szinteket a bemeneten logikai 1 -nek veszi, ált. nem szükséges illesztés. n 3, 3 V eszköz az 5 V szintet nem szereti! Ezért azt pl. R-osztóval csökkentsük le. n Hasznos lehet diódás, Z-diódás védelem is. n

Kapcsoló illesztés Digitális porthoz kapcsoló illesztése A kondenzátor segíti a kapcsoláskor fellépő tranziensek (pergés,

Kapcsoló illesztés Digitális porthoz kapcsoló illesztése A kondenzátor segíti a kapcsoláskor fellépő tranziensek (pergés, prell) csillapítását. Ha ez nem elég, akkor szükség lehet egy Schmitt-triggeres áramkör (pl inverter) közbeiktatására, vagy szoftveres megoldásra.

ADC (Analog digital converter) Jellemzően egy vagy két ADC egység van beépítve, egy multiplexer

ADC (Analog digital converter) Jellemzően egy vagy két ADC egység van beépítve, egy multiplexer segítségével azonban több bemenet közül választhatjuk ki, hogy épp melyiket szeretnénk digitalizálni. A 8 bites PIC-ek jellemzően 10 bites szukcesszív approximációs ADC-vel rendelkeznek (azaz 10 ciklus alatt készül el az eredmény és azt két bájtban tárolja).

Timer/counter n Timer funkció: fs/4 frekvenciával (Tinstrként) növeli a számláló regiszter tartalmát egyesével ¨

Timer/counter n Timer funkció: fs/4 frekvenciával (Tinstrként) növeli a számláló regiszter tartalmát egyesével ¨ 8 b vagy 16 b számláló regiszter ¨ Prescale: minden n-edik Tinstr-re növeli csak (1: 1, 1: 2, 1: 4, 1: 8, 1: 16 jellemző) n Counter: kívülről bekötött jel impulzusait számlálja

Capture/compare Capture mode: elmenti a timer értékét, amikor egy esemény (felfutó vagy lefutó él)

Capture/compare Capture mode: elmenti a timer értékét, amikor egy esemény (felfutó vagy lefutó él) történik egy adott bemeneten n Compare mode: akkor lép életbe, ha a timer értéke elér egy előre beállított értéket n

PWM mode: négyszögjelet ad ki bizonyos kimeneten, kitöltési tényezője és frekvenciája programozható (pulse width

PWM mode: négyszögjelet ad ki bizonyos kimeneten, kitöltési tényezője és frekvenciája programozható (pulse width modulation) n vezérlési célokra alkalmazható (motor, világítás, fűtés, stb. ) n jellemzően pl. MOSFET-et hajtunk meg a u. C-ról, és az hajtja a céláramkört n

UART/USART/EUSART universal asynchron receiver transmitter n egyszerű NRZ kódolású soros port n RS 232

UART/USART/EUSART universal asynchron receiver transmitter n egyszerű NRZ kódolású soros port n RS 232 -ből megismert keretezés hardveresen megvalósítva n Rx és Tx kivezetések (ha kell a többi, akkor digital io lábakkal szoftveresen) n 8 b, nincs paritás n kimenet 0 V – tápfesz, illesztés szükséges n

UART illesztés u. C<->PC Max 232 IC átalakítja +- (szimmetrikus) feszültségűvé a 0 -5

UART illesztés u. C<->PC Max 232 IC átalakítja +- (szimmetrikus) feszültségűvé a 0 -5 V jelet (a kondik a töltéspumpához kellenek).

MSSP master synchronous serial port n I 2 C és SPI megvalósításához n

MSSP master synchronous serial port n I 2 C és SPI megvalósításához n

Egyéb portok Speciális PIC-ekben (tip. 18 F család) lehet még pl. : n USB

Egyéb portok Speciális PIC-ekben (tip. 18 F család) lehet még pl. : n USB logikai illesztő n CAN logikai illesztő n Ethernet logikai illesztő n (a fizikai illesztő IC ilyenkor is kellhet hozzájuk) n

Soros programozás Programozás: Van egy hardver (a programozó), ami a PC-ről jövő jelet (USB

Soros programozás Programozás: Van egy hardver (a programozó), ami a PC-ről jövő jelet (USB vagy RS 232) átalakítja és betáplálja a mikrokontrollerbe. A programozási mód beállításához a Vpp lábra kell kötni egy bizonyos feszültséget (a normál tápfesznél nagyobbat). Ált. öt láb kell a programozáshoz, a tápfesz, föld, Vpp, adat és órajel. A hatodik láb ún. kisfeszültségű üzemmódot tesz lehetővé, nem szükséges. A programozás egy szinkron soros adatátvitel: ICSPDAT lábon az adat, ICSPCLK lábon az órajel megy.

Soros programozás A programozás egy másik módja az ún. bootloader használata. Ez egy kis

Soros programozás A programozás egy másik módja az ún. bootloader használata. Ez egy kis program, amit először hagyományos módon feltöltünk. Utána a mikrokontrollerhez a saját soros portján (UART vagy USB) csatlakozva a bootloader segítségével közvetlen a PC-ről töltjük át a programot. A bootloader ilyen szempontból a PC op rendszeréhez hasonlít (ő indul el először és ő indítja el a felhasználói programot). (Ez csak akkor megvalósítható, ha a u. C rendelkezik ilyen porttal ill. elég nagy prg. memóriával, hiszen a bootloader is helyet foglal el. )

Programozó eszközök: PICkit

Programozó eszközök: PICkit

PICDem 2 demo board

PICDem 2 demo board

Atmel 8 b mikrovezérlők n Load-store architektúra (külön regiszterkészlet és külön RAM, adatokat be

Atmel 8 b mikrovezérlők n Load-store architektúra (külön regiszterkészlet és külön RAM, adatokat be kell másolni RAMból a regiszterekbe, ott lehet dolgozni velük) jellemzően nagyobb RAM, mint PIC-ben egyébként hasonló tudású n . . . n n

AVR STK 500

AVR STK 500

Atmel vezérlős fejlesztőpanelek: Arduino család

Atmel vezérlős fejlesztőpanelek: Arduino család

Raspberry Pi 32 bites mikrovezérlő panel • micro. SD kártya foglalat • HDMI és

Raspberry Pi 32 bites mikrovezérlő panel • micro. SD kártya foglalat • HDMI és kompozit video out • audio out • USB • ethernet gyakorlatilag egy komplett számítógép (Linux futtatható rajta) ARM magos vezérlővel

ARM based

ARM based

Ha nem asm-ben programozunk Olvassuk el alaposan ilyenkor is a u. C leírását! A

Ha nem asm-ben programozunk Olvassuk el alaposan ilyenkor is a u. C leírását! A magasabb szintű programnyelvek sok mindent megengednek, de a hardver nem! n bizonyos dolgok nem férnek el memóriában n más dolgok lassabbak lesznek a vártnál n vagy máshogy működnek n

Ha nem asm-ben programozunk n n n Pl. létrehoztam egy 100 elemű tömböt float-okból,

Ha nem asm-ben programozunk n n n Pl. létrehoztam egy 100 elemű tömböt float-okból, mé’ nem működik? Meghívtam a _delay_ms() függvényt 600 -szor, miért nem fér bele a 8 k prg. memóriába? Törtszámokkal szorozgatok, oszt nem mögy valami gyorsan. Mé’ nem tudok egymilliót beleírni a változóba? Beírtam, hogy _delay_ms(100) oszt mégis 400 ms késleltetett. . Írtam egy tízsoros programot, oszt rögtön több k. B helyet foglal. . .

Köszönjük a figyelmet és sikeres ”égetést” kívánunk!

Köszönjük a figyelmet és sikeres ”égetést” kívánunk!