Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

temata:05-vestavene_systemy:main [2016/05/24 21:26]
xpavel27 [Paměť]
temata:05-vestavene_systemy:main [2016/05/24 22:20] (aktuální)
xpavel27 [Analogově-číslicový převodník (ADC)]
Řádek 91: Řádek 91:
 == Režimy činnosti == == Režimy činnosti ==
   * **RUN**   * **RUN**
-    * "plný" běh aplikace+    * plný beh aplikácie
     * aktivován po resetu     * aktivován po resetu
-    * CPU začíná provádět kód, kde první instrukce je uložená v //reset vektoru// +    * začne sa najprv vykonávať kód reset vektora
-    * {{:temata:05-vestavene_systemy:run-reset.png|}}+
   * **Active background**   * **Active background**
     * ladění aplikace, bootloader     * ladění aplikace, bootloader
     * aktivace více způsoby: např.log. 0 při nástupní hraně hodin RESET*     * aktivace více způsoby: např.log. 0 při nástupní hraně hodin RESET*
     * užití např. k (pře)programování aplikace před vstupem do Run     * užití např. k (pře)programování aplikace před vstupem do Run
 +    * zastavenie do obrdržania príkazu BKGD
   * **Wait**   * **Wait**
-    * CPU zastaven (snížení spotřeby), systémové hodiny ží, plná funkce napěťového regulátoru+    * CPU prepnurý do nízkopríkonového režimu  
 +    * Systémové hodiny bežia 
 +    * Plná funkcia napäťového regulátora 
 +    * Podpora podmnožiny BKGD príkazov
     * aktivován instrukcí WAIT     * aktivován instrukcí WAIT
-    * po provedení s přepne CPU do nízkopříkonového režimu 
     * ukončení při vzniku přerušení     * ukončení při vzniku přerušení
   * **Stop**   * **Stop**
-    * zastaveno CPU, BUSCLK +    * Zastavené CPU a BCLK 
-    * Stop 3 - uchovává obsah RAMUSB RAMregistrů; možný rychlý přechod do Run +    * Zapnutie bytom STOPE=1 
-    * Stop 2 - uchovává obsah RAMUSB RAM+  * **Stop 3** 
 +    * obmedzenie spotreby vnútorných obvodov a rýchle prebudenie 
 +    * ramusb ram a registre sú aj naďalej napájané 
 +    * garancia zachovania stavov, registrov, ramIO výstupov 
 +    * vyskočenie prerušením alebo resetom 
 +  * **Stop 2** 
 +    * odpojenie napájania vnútrorných obvodov 
 +    * uchovanie obsahu ram a usb ram 
 +    * vyskočenie resetom, signálom na vývode IRQ-TMPCLKprerušením od RTC 
 +    * akcie rovnaké ako pri power on reset 
 +    * automaticky sa nadstavý bit PPDF pre aplikačné špec. zotavenie 
 +    * je nutné z ram obnoviť nadstavenia
  
 ==== Paměť ==== ==== Paměť ====
Řádek 114: Řádek 127:
   * Non voltaile - Uloženie zapezpeč. klúčov napríklad   * Non voltaile - Uloženie zapezpeč. klúčov napríklad
   * Chvost - Obsahuje vektory prerušenia   * Chvost - Obsahuje vektory prerušenia
-{{temata:05-vestavene_systemy:mem2.png?400 }}+{{ temata:05-vestavene_systemy:mem2.png?400 }}
 == Ram == == Ram ==
   * statická, napájena ve všech režimech činnosti MCU   * statická, napájena ve všech režimech činnosti MCU
Řádek 135: Řádek 148:
   * Automatický prechod do úsporného režimu   * Automatický prechod do úsporného režimu
   * po resetu MCU je možno zapsat nejvýše 1x   * po resetu MCU je možno zapsat nejvýše 1x
 +
 +  * **Burst programovanie**
 +    * Rýchlejšie vykonávanie programovania postupnosti bytov
 +    * Nábojová pumpa je zapnutá po celú dobu, zapínanie a vipínanie pri každom riadku flash
 +
 +  * **Ochrana pamäte**
 +    * Znemožnuje zmeny v chránených blokoch
 +    * Určujeme hranicu tak že určíme najvyššiu nechránenú adresu
 +    * Pretože vektory prerušenia sú na konci presmerujeme ich
 +
 +{{ temata:05-vestavene_systemy:lock.png?400 }}
 +
 +  * **Zabezpečenie**
 +    * Taktiež zapnutím security je možno predísť neaut. prístupu k obsahu pamäti
 +    * Bitom KEYEN zapneme či vipneme 8bitový klúč
 +    * Vipneme len zmazaním celej FLASH
 ==== Podprogram vs. přerušení ==== ==== Podprogram vs. přerušení ====
 Standratní programová smyčka: Standratní programová smyčka:
Řádek 140: Řádek 169:
   * při **přerušení** je podprogram volán instrukcí a podgram obsluhy přerušení je zase vyvolán hardwarově   * při **přerušení** je podprogram volán instrukcí a podgram obsluhy přerušení je zase vyvolán hardwarově
     * probíhá nesynchronizovaně -> nelze přesně určit, kdy se předá řízení     * probíhá nesynchronizovaně -> nelze přesně určit, kdy se předá řízení
-  * zdroj přerušení se prezentuje aktivní úrovní +    * zdroj přerušení se prezentuje aktivní úrovní 
-  * např. při mimořádné události vyvolá hlavní program přerušení, žádost je za definovaných podmínek akceptovaná a řízení předáno přidem připravené obslužné rutině přerušení +    * Maskovatlené: dajú sa blokovať 
-    * adresa instrukce je uložena ve **vektoru přerušení*- zpravidla je to odkaz do tabulky adres nebo tabulky prvních instrukcí přerušovacích rutin+    * Nemaskovatelné: nedajú sa zablokovať ako napríklad reset 
 +     
 +  * **Priebeh** 
 +    * Detekcia: po detekcii požiadavku na prerušenie CPU dokončí vykonávanú inštrukciuokrem reset 
 +    * Uloženie kontextu CPU na zásobník 
 +    * Zakázanie prerušení, zabraňuje opakovanému obsluhovaniu prerušovania 
 +    * Arbitráž a výber vektoru prerušenia, vyberáme vektor nezpravovaného prerušenia s najvyššou prioritou 
 +    Uloženie do PC a zahájenie obsluhy
  
 ==== Základní  princip sériové komunikace ==== ==== Základní  princip sériové komunikace ====
Řádek 154: Řádek 190:
       * v celé soustavě je jeden zdroj časového signálu             * v celé soustavě je jeden zdroj časového signálu      
     * **Asynchronní sériový přenos**     * **Asynchronní sériový přenos**
-      * hodinový signál se nepřenáší, ale přímač si ho generuje sám +      * musíme zaistiť aby prijímač a vysielač bežali na rovnakej frekvencii a mali rovnakú fázu 
-      * je potřeba zajistit dostatečnou přesnost generátoru hodinového signálu v přijmači a prostředky, kterými je možné generátor hodinového signálu přijímače synchornizovat generátorem vysílače +      * synchrónizácia fáze oboch generátorov sa vykonáva predom dohodnotou zmenou úrovne na dat. vodiči 
-      * na začátku přenosu musí dojít synchronizaci hodin vysílačpřijmače (změnou úrovně). +      * na začiatku prenosu musí prísť synch. hodín vysielača a prijímača 
-      * Princip: Vodič je v klidovém stavu (např. log1), přenos je zahájen změnou klidového stavu (na log0), předem dané délky (zpravidla 1 bit, tzv. **start bit**), poté jsou posílána samotná **data**, na konci přeneseného slova následuje volitelný **paritní součet** a ukončení přenosu (**stop bit**).+      * spočiatku generujeme zmenu logického signálu bez ohladu na hodnotu prvého prenášaného bitu 
 +    * **Datovy ramec** 
 +      prvý informačný bit sa objavuje az po nejakej doby od počiatočnej hrany 
 +      signálktorý je vyplnený opačnou hodnotou ako je kľudová hodnota sa nazýva start bit 
 +      za posledným vyslaním datovým bitom prípadným par. bitom musí byť aspoň jeden stop bit 
 +      * stop bit má hodnotu kľudového stavu, slúži k vzájomnému oddeleniu prenášaných slov 
 +      je veľký jeden alebo dva bity 
 +      stop byt slúži aj na to aby mal prijímač čas odoslať prijaté slovo zo vstupného posreg. ďalej 
 +      * kľudová hodnota je space a aktívna je mark
       * {{:temata:05-vestavene_systemy:frame.jpg?600}}       * {{:temata:05-vestavene_systemy:frame.jpg?600}}
 +    * **Trvanie prenosu ramca** 
 +      * doba na prenos rámca je tr = n(počet bitov rámca) * T(per. synch. sig.) 
 +      * n = 1 + D (počet datových bitov) + P (počet paritných) + S (počet stop) 
 +      * prenosová rýchlosť sa udáva v baundech Bd, bitov za sekundu 
 +      * TP = N * n / BAUD = 1024 (prenos) * 11 (8+par+start+stop) / 9600 = 1,17s
  
 === SCI = Serial Communication Interface === === SCI = Serial Communication Interface ===
-  * asynchronní sériové rozhraní +  * **Info** 
-  v mikrokontroléru HCS08 se jedná o plně duplexní systém (tj. současně lze data vysílat i příjmat) +    sériové a asynchrónne rozhranie a plne duplexný systém 
-  sytém tvoří generátor hodinového signálu, modulu vysílačmodulu přijmačpodpůrných obvodů +    skladá sa z: gen. hod. sig, modulu vysielača a prijímača a podporných obvodov 
-  * výstup vysílačje vyveden na vodič označený TxD (transmit data), vstup přijmače je vyveden na vodič označený RxD (receive data) +    * výstup vysielačje vyvedený na TxD vstup prijámačna ExD 
-  podstatné jsou pro programátora registry SCI: datové, konfigurační a stavové  +    * registry: datové, konfiguračné a stavové 
 +  * **Hodiny** 
 +    * spoločné pre vysielač a prijímač 
 +    * prenosová rýchlosť sa dá nadstaviť 
 +    * zdrojom frekvencie generátora je hodinový signál vnútornej zbernice BUSCLK 
 +    * prenosovú rýchlosť nadstavuje programátor cez hodnotu v registri SCIxBD ako delička 
 +  * **Odosielanie znaku** 
 +    * data sa zapíšu do datového registra SCIxD 
 +    * vysielač skompletuje rámec a postupne ho posiela na výstup TxD s taktom gen.hod.sig 
 +    * pred zápisom otestujeme či je datový register prázdny 
 +    * pred zápis tiež skontrolujeme príznak prázdneho registra ako 7bit TDRE v SCIxS1 a musí byť 1 
 +    * potom je znak prenesený do TSR - posuvný register 
 +    * vysielanie je možné sledovať stavovým bytom TC v SCIxS1 
 +    * TC hovorí o tom že datá boli úspečne vyslané
  
 +{{ :temata:05-vestavene_systemy:scir.png?500 }}
 +
 +  * **Prijem znaku**
 +    * automaticky zaisťovaný obvodmi prijímača, tie riadia a vyhodnocujú priebeh
 +    * spracovaný znak sa pripravá do datového registra SCIxD
 +    * okamžik dokončenia prijímania je indikované bitom RDRF - receive data register full v SCIxS1
 +    * pred čítaním musíme otesotvať tento bit na 1 a až potom čítať
 +    * v priebehu sú jednotlivé bity rámca ukladané do RSR posuvného registra
 +    * prijímané data sú vzorkované 16x vyššou frekvenciou než frekvencia generované podľa SCIxBD
 +
 +{{ :temata:05-vestavene_systemy:scis.png?500 }}
 +  
 === SPI = Serial Peripheral Interface === === SPI = Serial Peripheral Interface ===
-  * synchronní sériové rozhraní  +  * **Info** 
-  * rozhraní původně určené k připojování a komikaci s prefireními zařízeními (lze ho ale využí i ke komunikaci mezi mikrokontroléry) +    * synchrónne sériové rozhranie, plný duplex 
-  * umožňuje spojení //point-to-point// i vytvoření //SPI sběrnice// (k propojení více komponent) +    * rozhraní původně určené k připojování a komikaci s prefireními zařízeními (lze ho ale využí i ke komunikaci mezi mikrokontroléry) 
-  plně duplexní rozhraní (v každém okamžiku vždy probíhá přenos oběma směry) +    * umožňuje spojení //point-to-point// i vytvoření //SPI sběrnice// (k propojení více komponent) 
-  * zařízení připojení přes SPI může být v jednou ze dvou režimů: +    moznost komparatora 
-    * **master** +  * **master** 
-      * generuje synchronizační hodinový signál +    * generuje synchronizační hodinový signál 
-      * inicializuje a řídí komunikaci přes SPI +    * inicializuje a řídí komunikaci přes SPI 
-      * na sběrnici SPI může být pouze jedno zařízení tohoto typu +    * na sběrnici SPI může být pouze jedno zařízení tohoto typu 
-      * zpravidla se jedná o mikrokontrolér       +    * zpravidla se jedná o mikrokontrolér       
-    * **slave** +  * **slave** 
-      * obvykle to jsou periferie, se kterými master komunikuje (master určuje se kterým slave bude komunikovat)   +    * obvykle to jsou periferie, se kterými master komunikuje (master určuje se kterým slave bude komunikovat)   
-  * komunikace probíhá způsobem vzájemné výměny obsahů posuvných registrů +  * **Komunikace** 
-    * {{:temata:05-vestavene_systemy:spi.png?500}}+    * Datové vodiče označujeme ako MISO a MOSI podla vzťahu 
 +    * Master in a slave out, master out a slave in 
 +    * Hodinový signál tvorí master a je na vodiči SPSCK 
 +    * SS signál je výberový a slúži k aktivácii zariadenia pre komunikáciu 
 +    * Na strane slave je SS vstupom ktorý v aktívnej úrovni posiela obsah posuvného registra na stranu mastera 
 +    * Vysielajú sa na MOSI datové bity zo svojho posuvného registra a zároveň z registru druhej strany sa prijíma cez MISO data z posuvného registra slave. Vzájomná výmena dát. 
 +    * Po osmich taktoch môže master a slave čítať prijaté data a zapísať data pre vysielanie 
 +    * Jednostranny prenos cez SPI je spojený odoslaním alebo prijímaním bezvýznamného znaku druhej strane 
 + 
 +{{ :temata:05-vestavene_systemy:spi.png?500 }}
  
 === Rozhraní IIC (I^2C) === === Rozhraní IIC (I^2C) ===
-  * synchronní sériové rozhraní +  * **Info** 
-  hlavním cílem je jednoduchost levná implementace +    synchrónne sériové jednoduché s halfduplex 
-  specifikuje fyzickou podobu rozhraní, jeho elektrické charakteristiky komunikační protokol +    jeden datový vodič jeden vodič na synch. signál 
-  protokol typu master-slave komunikující způsobem half-duplex +    možnosť pripojiť až 127 slave 
-    * {{:temata:05-vestavene_systemy:iic.png|}} +    * hlavním cílem je jednoduchost a levná implementace 
-  * tvoří ho jeden datový vodič(SDA) a jeden vodič pro přenos synchronizačního signálu(SCL) + 
-  * ke sběrnici IIC lze připojit až 127 zařízení slave (dáno formátem adresy)  +{{ :temata:05-vestavene_systemy:iic.png }} 
-  pokud neprobíhá komunikace, tak se master ani slave nijak neovlivňuje (SDA i SCL stav log. 1) + 
-  komunikace zahájí master sestupnou hranou 1->při SCL v log. 1 +  * **Komunikace** 
-  data jsou vzorkována při SCL=1, změna hodnoty dat při SCL=0 +    Ak nie je komunikácia potom master ani slave neovlivňuje vodiče 
-  pro ukončení generuje master nástupnou hranu 0->při SCL log. 1 +    komunikácia sa začne master hranou na 
-{{:temata:05-vestavene_systemy:iic_prubeh.png|}}+    master generuje adresový rámec 
 +    * podľa hodnoty bitu RW rozhodne buď zasiela data modulu slave alebo číta 
 +    po ukončení generuje master hranu 0 na 1 
 +    * nemusí sa vždy generovať ukončovanie až na úplnom samom konci stačí 
 + 
 +{{ :temata:05-vestavene_systemy:iic_prubeh.png?500 }} 
 + 
 +  * **Datovy ramec** 
 +    * Sériovo prenášané data po bitoch 
 +    * skladá sa zo štart hrany, datové bloky po 8 bit a potvrdením zo slave o rozpoznaní, a ukončeniu 
 + 
 +{{ :temata:05-vestavene_systemy:iicwork.png?500 }} 
 + 
 +  * **Adresovanie** 
 +    * Pri viac master konflikte je riešenie datovou arbitrážov 
 +    * aby sme mohli jednoz. identifikovať zariadenie pre kom. musíme zaviesť unikátne adresy modulov 
 +    * zahájanie komunikácie spočíva v odoslaní 8bit v prvom adresovom rámci ako adresa
  
-==== Porty ==== +{{ :temata:05-vestavene_systemy:iicaddr.png?500 }} 
-  * mikrokontrolér je počítač, určený k tomu, aby vnímal své okolí a na základě programu je ovlivňoval +   
-  je zpravidla součástí nějakého systému, který má primárně jiné určen, než "jen" být počítačem +==== Porty ====  
-  vnímání okolí a jeho ovlivňování se děje nejčastějí přes jednoduchá dvoustavová rozhraníkteré se združují do portů +  * **Mikrokontroler** 
-  porty jsou vyvedeny na pouzdro MCU - jedná se o skutečné rozhraní mezi MCU a dalšími obvody  +    Vnímajú okolie cez jednoduché dvojstavové rozhraniektoré sa združené do portov po ôsmich 
-  vstupně-výstupní piny jsou sdruženy po osmi do portů +    Porty sú vedené na púzdro MCU 
-  * mnoho z nich sdílí vývod pouzdra jinými periferiemi (když je periferie aktivní, nelze použít pin portu) +    Veľa z nich je zdielaných inými perifériami 
-  porty jsou pojmenovány písmeny abecedy, různé MCU mají různý počet portů +    Pomenované sú písmenami abecedy 
-  * výstupní pin portu +  * **Vystupne porty** 
-    * umí udělat logickou 0 nebo 1 na vývodu pouzdra MCU +    * Vedia urobiť logickú jedna alebo nulu na vývode púzdra MCU 
-    * log. úrovně jsou reprezentovány napětím, jde připojení určitého napětí na vývod MCU+    * Ide pripojenie určitého napätia na vývody
     * log. 0 je napětí na úrovni země, log. 1 pak napětí na úrovni napájecího napětí     * log. 0 je napětí na úrovni země, log. 1 pak napětí na úrovni napájecího napětí
-== Pull up rezistor == +    Môžeme použiť buď jeden pin alebo celý port 
-  rezistor, který definuje úroveň v případě, kdy je pin jinak "ve vzduchu" +    * Výstup môže dodávať prúd okolo 25 mA a celkovo čepať 120 
-  * lze jej zapnout uvnitř MCU    +  * **Ganged output** 
-  * {{:temata:05-vestavene_systemy:pull_up.png|}}+    * Zlúčenie viac pinov pre posilnenie výstupu 
 +    * Funguje len u niektorých portov na MCU 
 +  * **Prechodny dej** 
 +    * Pri prechode napríklad z log 0 na 1 nastane určitá špička 
 +    * Môžeme ju redukovať tým že spomalýme buď nábeh 
 +    * Na obmedzenie môžeme použiť aj redukciu výšky skoku ako drive strenght
  
 +{{ :temata:05-vestavene_systemy:portdeje.png?500 }}
 +
 +  * **Ovladanie**
 +    * Data: datový register
 +    * Data direction: rozhodnutie či zápis alebo čítanie
 +    * Pul-Up Enable: rozhodnutie či sa bude používať pulup rezistor
 +    * Slew Enable: spomalenie prechodu
 +    * Drive Strength: zníženie sily skoku
 +  * **Pull up rezistor**
 +    * rezistor, který definuje úroveň v případě, kdy je pin jinak "ve vzduchu"
 +    * lze jej zapnout uvnitř MCU   
 +
 +{{ :temata:05-vestavene_systemy:pull_up.png?400 }}
 +
 +  * **Modul KBI**
 +    * Podpora generovanie prerušení od pinov
 +    * Možnosť reagovať na hranu alebo úroveň
 +    * Len na niektorých portoch
 +    * KBI má prioritu pred bežnou funkciou portov
 ==== Analogově-číslicový převodník (ADC) ==== ==== Analogově-číslicový převodník (ADC) ====
   * analogový vstup představují signály ze spojitých snímačů (teplota, tlak, osvětlení, odpor, napětí/proud)   * analogový vstup představují signály ze spojitých snímačů (teplota, tlak, osvětlení, odpor, napětí/proud)
   * důležitá je zpětná vazba   * důležitá je zpětná vazba
-  * {{:temata:05-vestavene_systemy:adc.png|}} 
   * předvod aproximačním AD převodníkem je děj, který trvá určitou dobu; proto lze vysledovat fáze   * předvod aproximačním AD převodníkem je děj, který trvá určitou dobu; proto lze vysledovat fáze
     * //zahájení převodu//     * //zahájení převodu//
Řádek 231: Řádek 352:
  
 === AD převodník === === AD převodník ===
-  * typicky má 3 části +  * **Info** 
-    * dolnopropusní filtr +    * typicky má 3 částidolnopropusní filtrTrack/HoldAD převodník 
-    * Track/Hold +    * převádí anslogový vstup na číslicový výstup 
-    * AD převodník +    * Používa sa aproximačný model 
-  * převádí anslogový vstup na číslicový výstup+    * Ideme od MSB a postupne generujeme nižšie bity 
 +    * Vždy porovnáme hodnotu a upravíme ďalší byt a tak iterujeme 
 + 
 +{{ :temata:05-vestavene_systemy:adcmy.png?400 }} 
 + 
 +  * **Viacej kanálov ADC** 
 +    * Vyberáme ich cez multiplexor 
 +    * Používame len jeden prevodník 
 +    * SH je nejaký kondík aby na chvílu uskoval hodnotu analog. sig. aby sa nemenila 
 + 
 +{{ :temata:05-vestavene_systemy:adc.png?400 }} 
 + 
 +  * **Napajanie** 
 +    * Môžeme použiť vlastné napájanie 
 +    * Nadstavenie referenčných hodnôt 
 +  * **Prevod** 
 +    * Prevod u AD prevodníka trvá určitú dobu 
 +    * Zahájenie: nadstavíme konfiguráciu 
 +    * Vykonanie: aproximačné vkonávanie 
 +    * Ukončenie: buď uloženie výsledku alebo násilné prerušenie 
 +  * **Zahajenie** 
 +    * Softvérové: zápisom do ADCSC1 
 +    * Hardwarové: príde k dosiahnutí hodnoty module reg. RTCMOD pri čítači real. času 
 +    * Pri hardwarovom môžeme nadstaviť periódu vzorkovanie vstupného signálu 
 +    * Pri soft. sa ďaľší prevod realizuje okamžide ako je ukončený predchádzajúci prevod 
 +  * **Vysledok** 
 +    * K dispozícii v registroch ADCRH a L 
 +    * Ukončenie v COCO 
 +    * Možnosť generovania prerušení 
 +    * Možnosť nadstaviť aby bol výsledok indikovaný len ak je nehajá hodnota presiahnutá
  
 +{{ :temata:05-vestavene_systemy:adcset.png?400 }}
 ==== Časovač/čítač ==== ==== Časovač/čítač ====
   * čítač je speciální registr, který kromě funkcí jako je čtení a zápis hodnoty zvyšuje a snižuje svoji hodnotu o jedničku při každé periodě hodinového signálu; používán je pro čítání událostí   * čítač je speciální registr, který kromě funkcí jako je čtení a zápis hodnoty zvyšuje a snižuje svoji hodnotu o jedničku při každé periodě hodinového signálu; používán je pro čítání událostí
temata/05-vestavene_systemy/main.1464117967.txt.gz · Poslední úprava: 2016/05/24 21:26 autor: xpavel27
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki