Přednáška 3 A4B38NVS - Návrh vestavěných systémů 2014, katedra měření, ČVUT - FEL, Praha. J. Fischer,

Podobné dokumenty
Zadání úlohy: Vestavný systém schodišťový automat se zobrazením

Úloha č. 4. Připojení 7-segmentového zobrazovače LED s posuvným registrem, připojení tlačítek

Čísla, reprezentace, zjednodušené výpočty

Kontrolní otázky a okruhy k testu v semestru A4B38NVS (verze r. 2012) Procesory s jádrem ARM Cortex - M3, (V dalším textu dotazy směřují na jádro ARM

Čísla, reprezentace, zjednodušené výpočty

Úloha Ohmetr zadání úlohy

Přednáška - Čítače. 2013, kat. měření, ČVUT - FEL, Praha J. Fischer. A3B38MMP, 2013, J.Fischer, ČVUT - FEL, kat. měření 1

Přednáška A3B38MMP. Bloky mikropočítače vestavné aplikace, dohlížecí obvody. 2015, kat. měření, ČVUT - FEL, Praha J. Fischer

Okruhy a kontrolní otázky k testu v semestru A4B38NVS (verze r. 2015) Procesory s jádrem ARM Cortex - M3, (V dalším textu dotazy směřují na jádro ARM

SEKVENČNÍ LOGICKÉ OBVODY

Pohled do nitra mikroprocesoru Josef Horálek

Projekt - Voltmetr. Přednáška 3 - část A3B38MMP, 2015 J. Fischer kat. měření, ČVUT - FEL, Praha. A3B38MMP, 2015, J.Fischer, kat. měření, ČVUT - FEL 1

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Komunikace modulu s procesorem SPI protokol

Princip funkce počítače

Grove - display 4 digity s řídícím obvodem TM1637

Použití programovatelného čítače 8253

8. Laboratoř: Aritmetika a řídicí struktury programu

NÁVOD NA MONTÁŽ A OBSLUHU SXS 20

Uživatelská příručka

Programovatelné relé Easy (Moeller), Logo (Siemens)

Strojový kód. Instrukce počítače

Architektura počítačů Logické obvody

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Číslicový zobrazovač CZ 5.7

Přednáška , kat. měření, ČVUT - FEL, Praha J. Fischer. A4B38NVS, 2012, J.Fischer, kat. měření,, ČVUT - FEL 1

od jaké adresy bude program umístěn? Intel Hex soubor, co to je, z čeho a jak se získá, k čemu slouží? Pseudoinstrukce (direktivy) překladače ORG, SET

Struktura a architektura počítačů (BI-SAP) 10

Programovatelné relé Easy (Moeller), Logo (Siemens)

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu

Rozhraní mikrořadiče, SPI, IIC bus,..

Ṁikroprocesory v přístroj. technice. Ohm-metr ... Petr Česák


Přednáška 2 A4B38NVS - Návrh vestavěných systémů 2014, kat. měření, ČVUT - FEL, Praha J. Fischer A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL 1

Architektura počítačů Logické obvody

Program "Světla" pro mikropočítač PMI-80

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Interface CAR2FMS v2 firmware CAN data generátor

DIGI Timer 8 8 kanálové stopky se záznamem dat

ETC Embedded Technology Club setkání 6, 3B zahájení třetího ročníku

ETC Embedded Technology Club 6. setkání

ETC Embedded Technology Club setkání 3, 3B zahájení třetího ročníku

velikosti vnitřních pamětí? Jaké periferní obvody má na čipu a k čemu slouží? Jaká je minimální sestava mikropočítače z řady 51 pro vestavnou aplikaci

Přerušovací systém s prioritním řetězem

Technická kybernetika. Obsah. Klopné obvody: Použití klopných obvodů. Sekvenční funkční diagramy. Programovatelné logické automaty.

MĚŘICÍ PŘÍSTROJ PRO PC. 4 VSTUPY: 0 10 V ZESÍLENÍ : 1x, 2x, 4x, 8x VÝSTUP: LINKA RS232 RS232 DRAK 4 U1 U2 U3 U4

Úloha- Systém sběru dat, A4B38NVS, ČVUT - FEL,

Řádkové snímače CCD. zapsané v předmětu: Videometrie a bezdotykové měření, ČVUT- FEL, katedra měření, přednášející Jan Fischer

Sekvenční shift light SL-06. verze fw 1.1

Autonomní zámek LOG2

Mikrokontroléry. Doplňující text pro POS K. D. 2001

Návod k obsluze výukové desky CPLD

Napájení mikroprocesorů. ČVUT- FEL, katedra měření, přednášející Jan Fischer. studenty zapsané v předmětu: A4B38NVS

Analyzátor sériového rozhraní RSA1B

VUT EBEC2017 Projekt. Wiping Turn Indicator Audi TT

Číslicové obvody základní pojmy

ZÁSKOKOVÝ AUTOMAT MODI ZB pro jističe Modeion POPIS K790

BASPELIN MRP Popis obsluhy indikační a řídicí jednotky MRP T2

Operace ALU. INP 2008 FIT VUT v Brně

Cvičení 2. Obsah a cíle cvičení. Obsah. A5MPL Programování mikropočítačů Digitální vstupy a výstupy - LED a tlačítka.

A4B38NVS, 2011, kat. měření, J.Fischer, ČVUT - FEL. Rozhraní mikrořadiče, SPI, IIC bus,.. A438NVS, kat. měření, ČVUT - FEL, Praha. J.

PROGRAMOVATELNÝ TERMOSTAT CT Citherm 6.0 Návod k obsluze

BI-JPO (Jednotky počítače) Cvičení

Modul LCD displeje se čtyřmi tlačítky. Milan Horkel

Vstupní terminál LOG3

Univerzální watchdog WDT-U2/RS485

SW24x3 programovatelné relé

Komunikační protokol

1. Univerzální watchdog WDT-U2

PROGRAMOVATELNÉ LOGICKÉ OBVODY

Špionážní pero s kamerou, 720x480px

Návod k použití. Programovací přístroj P6. Důležité pokyny:

BASPELIN CPM EQ21. Popis obsluhy ekvitermního regulátoru CPM EQ21

Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem Elektrickém zapojení Principu činnosti Způsobu programování

OVLÁDACÍ OBVODY ELEKTRICKÝCH ZAŘÍZENÍ

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Obsah. Zobrazovací a ovládací prvky na čelním panelu. Účel použití. Elektrické zapojení. Obr : Binární vstupní / výstupní modul 07 DC 91

RS485/MODBUS-RTU ver. 4 s rozšířením pro R24

Překladač - Assembler, úloha SW_ UART

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Návod k obsluze. Spínací člen

VY_32_INOVACE_CTE_2.MA_19_Registry posuvné a kruhové. Střední odborná škola a Střední odborné učiliště, Dubno Ing. Miroslav Krýdl

1. Programování PLC. Programovatelné automaty II - 1 -

LOGICKÉ ŘÍZENÍ. Matematický základ logického řízení

BASPELIN CPL. Popis obsluhy ekvitermního regulátoru CPL EQ23/EQ24

Kódová klávesnice a čtečka čipů CP1000 Čtečka RFID čipů 125 khz

REG10 návod k instalaci a použití 2.část Univerzální časovač a čítač AVC/ 02

Logické řízení s logickým modulem LOGO!

Obsah. Zobrazovací a ovládací prvky na čelním panelu. Účel použití. Elektrické zapojení. Obr : Binární vstupní / výstupní modul 07 DC 92

Systém adresace paměti

EduKit84. Výuková deska s programátorem pro mikrokontroléry PIC16F84A firmy Microchip. Uživatelská příručka

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Uživatelský návod. MaRweb.sk PRESET - COUNTER 301 Elektronický čítač s jednou předvolbou A. Označení pro objednávku

Návrh ovládání zdroje ATX

ETC Embedded Technology Club 7. setkání

Napájení mikroprocesorů

ADEX SL3.3 REGULÁTOR KOTLE VARIMATIK

Tužka s kamerou EKONOMY, 720x480px

Témata profilové maturitní zkoušky

Transkript:

Přednáška 3 A4B38NVS - Návrh vestavěných systémů 2014, katedra měření, ČVUT - FEL, Praha J. Fischer, A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 1

Informace Toto je grafický a heslovitý podkladový materiál určený pouze k přednášce A4B38NVS. Neobsahuje vlastní výklad, ani další informace, které jsou prezentovány při výkladu křídou na tabuli, jeho čtení nenahrazuje účast na přednášce. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 2

Náplň přednášky Rekapitulace specifikace bodované úlohy (5 bodů) komentované programy, zpráva, příprava na cvičení vývojový diagram, strategie programu postup vývoje rozložení vývoje programu, využití simulátoru připojení 74164, případně 74HC595 Adresace paměti RAM Direktivy překladače - LTORG, direktivy logicke operace,.. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 3

Zadání úlohy: Vestavný systém schodišťový automat se zobrazením Úkol: Navrhněte a realizujte vestavný systém řídicí jednotku schodišťového automatu s nastavením délky času sepnutí a jeho číslicovou indikací. Vstup jednotky: paralelně zapojená tlačítka na schodišti (schodišťové tlačítko) Výstup jednotky: ovládací výstup pro sepnutí relé (indikační LED zapnutí) Ovládací servisní část jednotky: tři servisní tlačítka (zvyš, sniž, potvrď) Indikační část jednotky: 7- segmentový zobrazovač + indikační LED stavu Funkce jednotky Funkce jednotky schodišťového automatu vychází z úvodní úlohy. Po zapnutí je jednotka ve stavu připraveno. Na segmentovém zobrazovači je indikace nastavené doby zapnutí t zap. Stiskem schod. tlačítka se aktivuje světlo na po nastavenou dobu t zap. Na servisním seg. zobrazovači se bude indikovat čas zbývající do vypnutí t vyp. Opětovným stiskem schodišťového tlačítka před doběhnutím času se doba svícení od tohoto okamžiku prodlouží opět na nastavenou hodnotu t zap. Na zobrazovači se bude indikovat nový čas zbývající do vypnutí t vyp (Pro zjednodušení lze v prog. vypustit funkci předběžného zhasínání před konečným vypnutím.) A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 4

Zadání úlohy: Vestavný systém schodišťový automat se zobrazením Funkce detaily: Po spuštění programu bude časovač používat základní dobu t zap = 5 s. Bude se testovat stav tlačítek. Stiskem schod. tlačítka se přejde do režimu svícení až do jeho doběhnutí Stiskem servisního nastavovacího tlačítka zvyš (+), nebo sniž ( -), se přejde do servisního režimu nastavování velikosti doby t zap v sekundách. (Servisní tlačítka budou mít funkci zvyš (+), sniž ( -), potvrdit, (=). ) Tato hodnota t zap se bude nadále využívat až do jejího přepsání v novém nastavení. Rozsah nastavení bude 5 až 90 sekund. V úloze je nutno programem zajistit, aby se rušivě neprojevovalo působení odskoku tlačítek. Po ukončení nastavení velikosti t zap je možno aktivovat časovač schodišťovým tlačítkem. ( Pozn. V úloze se bude pro jednoduchost vždy řešit pouze jeden proces buď nastavování nebo běh časovače, případně svícení. V reálném zařízení by nebylo možné, aby se při nastavování času (jeden proces) zablokovala funkce časovače svícení (druhý proces). A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 5

Zadání úlohy: Vestavný systém schodišťový automat se zobrazením Obvodová realizace: K mikrořadiči STM32 se připojí tři externí servisní nastavovací tlačítka. (V reálném zařízení by byla přímo na jednotce a byla by přístupna pouze servisnímu personálu.) Jejich uspořádání na kontaktním poli vedle sebe bude v pořadí sniž ( -), potvrdit, (=) zvyš (+) (zleva doprava) Jako schodišťové tlačítko se může využít uživatelské tlačítko na kitu -PA 0. (Schodišťové tlačítko nahrazuje skupinu paralelně zapojených tlačítek na schodišti.) Indikační LED stavu červená LED na kitu Indikační LED zapnutí - externí LED na kontaktním poli (zapojená přes rezistor na GND - zem. Indikační 7- segmentový zobrazovač s LED bude připojen pomocí sério -paralelního posuvného registru (74164, příp. 74HCT595) A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 6

Vysvětlení úlohy V úloze se pro jednoduchost připojí pouze jediný 7-segmentový zobrazovač s využitím posuvného registru 74164 nebo 74HCT595. (Možno i dva zobrazovače, dva registry) Pro rozlišení, který digit hodnoty času se zobrazuje se využije pravá desetinná tečka (rdp). Zhasnutá rdp indikuje desítky, rozsvícená rdp indikuje jednotky. Stisk tlač. + zvyšuje hodnotu od 5 sekund v pořadí 6, 7, 8, 9, 1(0), 2(0), 3(0), 4(0)...až 9(0). Další stisky tlačítka + výsledek neovlivňují. Stiskem tlač. - snižuje hodnotu, např. 9(0),8(0), 3(0), 2(0),1(0), 9, 8, 5 Indikace nastavené hodnoty po potvrzení se děje zobrazením digitu s rozlišením desítek zhasnutou pravou desetinnou tečkou rdp. Funkce zobrazení musí být nezávislá na funkci testu tlačítek, tedy není možné, aby se při stisku tlačítka zastavilo zobrazení. Stiskem tlačítka (=) se hodnota potvrdí a uloží do paměti, kde bude k dispouici po celou dobu zapnutí přístroje, až do jejího případného nového nastavení (Zde by bylo vhodné ukládat hodnotu do paměti Flash tak, aby se zařízení chovalo jako reálný přístroj -nastavená hodnota se vždy načte). Při dalším stisku tlač. +, - pro nové nastavení se vychází z minule nastavené hodnoty. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 7

Vysvětlení úlohy /část 2 Stiskem tlačítka PA0 se aktivuje funkce časovacího relé ( schodišťový automat) z minulé úlohy. V době funkce běhu časovače se bude na zobrazovači znázorňovat zbývající čas - nejdříve v desítkách sekund, pak v jednotkách sekund. Při zobrazení desítek sekund bude číslo blikat v rytmu sekund (0,7 svit, 0,3 s tma). Při zobrazení jednotek sekund se rozsvítí pravá desetinná tečka - rdp. Tam, kde by bylo potřeba zadání ještě dále specifikovat, si autor sám stanoví způsob modifikace a implementaci a dohodne se cvičícím. Funkce programu však musí být jednoznačná, detereministická a zachycená v dokumentaci. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 8

7- segmentový zobrazovač LTS3401, společná anoda Společná anoda, připojit na + U cc,, katody přes rezistory a spínače (příp. budič)na zem To je obvykle používaný způsob ve vestavných systémech a f g b e c možné zobrazení znaků ldp d rdp A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 9

Připojení zobrazovače posuvným registrem Posuvný registr sério paralelní Sériový vstup, paralelní výstup kaskáda klopných obvodů D s. data posun Sériová data postupují do registru s náběžnou hranou hodinového signálu 74LS164, 74HC164 U CC s. data posun nul. R R R Q A Q B Q H A B CLK CLR SR1 74LS164 A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 10

74LS164, 74HC164 posuvný registr - funkce. s. data posun Reset aktivní v L, nastavit do H A 1 vstup seriových. dat, A 2 na úroveň H (nebo opačně), příp. A 1 a A 2 spojit Plnění dat (posuv). dat do registru náběžnou hranou hod. signálu CLOCK (CP) A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 11

Zatemnění výstupu Možné zatemnění výstupu při plnění posuvného reg. Při plnění registru by LED poblikávaly - svítila by krátce ta LED, která má být zhasnuta, U CC R2 zatem. displ. s. data posun nul. T1 R1 R R R Q A Q B Q H A B CLK CLR SR1 74LS164 R R R Q A Q B Q H A B CLK CLR SR2 74LS164 Optimální řešení problému použití dalšího záchytného registru, do kterého se přesunou a na jehož výstupu se tak objeví až správná data. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 12

Posuvný registr se záchytným registrem 595 (74HCT595,..) Na výstup posuvného registru je připjen záchytný registr, přepis aktuálních dat z posuvného registru do záchytného reg. Není nutno zatemňovat při plnění Použití posuvných registrů 595 a jejich variant jako výstupů ve vestavných systémech je velmi časté. /OE output enable (aktivace výstupu) připojit na L (GND) SH_CP hodinový signál pro posun ST_CP přepis z pos. reg. do záchyt reg. /MR- reset záchyt. registru Q H sériový výstup. pos reg.- pro kaskádní řazení přepis s. data posun nul. Q A výstupní obvody Q B Q H RCLK výst. reg. SER pos. reg. Q H SRCLK SRCLR SRR1 74HC595 výst. záchytný registr pos. registr A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 13

Alternativy struktury 595, TPIC6C595 Struktura 595, vhodná pro výstupy různé modifikace, např. Texas Instruments TPIC6C595 (dostupný i v GM) Schopnost budit většími proudy předpokládá buzení LED proti napájení open drain, (jako open colector u bipolárních obvodů) A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 14

Ovládání indukční zátěže pomocí TPIC6C595 Příklad řešení ochrany tranzistoru před průrazem zvýšeným napětí při vypínání indukční zátěže (relé, ss motorek, krokový motorek) Rozpínání pokles proudu I DS napěťová špička na elektrodě Drain, Ochranný mechanismus proud Zener. diodou do Gate, zamezení příliš rychlého zavření tranzistoru a rychlého poklesu proudu I DS, důsledek snížení napěťové špičky, A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 15

Použití budiče TPIC6C595 pro ovládání krokového motorku Unipolární krokový motorek - ovládání výstupem s posuvným registrem a zách.reg. vybaveným spínači (výklad krok. motorek), analogicky ovládání relé indukční zátěž D vinutí relé U 1 T Mproc. výměnou obvodu 74164 v úloze za obvod TPIC6C595 nebo 74HC595 doplněný spínacími tranzistory a ochrannými diodami by bylo možno v této úloze programově ovládat krokový motorek (místo 7- segmentového zobrazovače by byly připojeny čtyři spínací tranzistory NMOS, příp. NPN s dalšími diodami) A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 16

Připojení tlačítek k STM32 Tlačítko, ošetření odskoků, použití vnitřního pull up rezistoru v STM32, vypuštění R p (obsluha pozor na statickou elektřinu při stisku tlačítka prstem, vhodné se dopředu vybít, jinak hrozí nebezpečí přeskoku napětí na vstup a příp. poškození vstupu STM32). tlač. R P + 5 V (+ 3,3 V) vst. brána A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 17

Postup řešení úlohy Rozdělit úlohu na samostatné bloky. Příprava generátoru znaků, tabulka, převod číslo na znak (v simulátoru), Příprava programu pro naplnění posuvného registru Programy pro čítání a převod na dekadické číslo Převod binárního na dekadické číslo Převod číslice na znak Přidání ubrání informace o desetinné tečce Uložení znakové informace do paměti SRAM ( příp. registru) Vyslání znakové informace s přepínáním Podprogram zobrazení Je třeba naplánovat celkovou činnost programu, více procesů probíhajících současně Umístění tabulky generátoru znaků pomocí direktivy DCD (32 bitů), případně DCW (16 bitů) Program ve smyčce, zpracování jednotlivých úkolů. ( analogie kuchař) A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 18

Postup řešení úlohy /2 Základní HW test reset 74164 pomocí resetovacího vstupu rozsvítí se všechny segmenty Program spolupráce STM32 s 74164 funkce 1: - naplnění samé 1 a poslání do 74164 vše musí zhasnout Naplnění samé 0 a poslání do 74164 vše se rozsvítí Naplnění danou hodnotou rozsvícení vybraných segmentů podle 0 generátor znaků, Ochranné rezistory 470 Ohmů do série mezi STM32 a 74164 (kontrola korektnosti napěťových úrovní U ILmax pro 74164 výpočtem) Výpočet proudu segmentem, použití rezistorů o odporu 470 Ohmů Připravit kompletní schéma zapojení Připojení tlačítek, test Program, simulátor ( možno zkrátit čekací smyčku zobrazení výst.průběhů) Dom. příprava - náhrada ovládání pos. registru- simulace ovládání jeho vstupů pomocí LED na PC8, PC9 výstupů pro pos. reg. pomocí LED zpomalení, jeden výstup. impulsy CLK, druhý data Dobře se rozliší vyslání pro znak 8 a pro 1 A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 19

Poznámky k úloze Ovládání výstupu zobrazovače optimální přiřazení výstupů brány, posuvného registru segmentům Jak zapojit z hlediska optimálního řešení plošného spoje, příp. drátových propojek a LTS3401 f ldp e d g c b rdp 74164 A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 20

Programové ovládání posuvného registru - test (Plnění posuvného registru je optimální s využitím rozhraní SPI, které je na čipu STM32F1xxx k dispozici.) Pro jednoduchost se však využijí dva zvolené programově ovládané piny výstupní brány. Označí se jako D datový a C jako hodinový. Piny D a C se mohou uvést do výchozího stavu, 0,0 (kontrolní bod programu). Na pin D se přivede informace, která se má dostat až na výstup Q H, následně na pin C se přivede 1 (náběžná hrana) a v dalším zápisu pak 0. První hodnota by se měla dostat do posuvného registru. Pro test správnosti funkce obvodu 164 a jeho oživení je možno do posuvného registru v nekonečném cyklu signálem C zapisovat střídavě data D=1 a následně D = 0. Pokud se použije frekvence zápisu C v řádu jednotek Hz, měly by se na výstupu Q H a i dalších (Q HA až Q F ) objevovat střídavě hodnoty 0 a 1, které se projeví jako okem pozorovatelné změny svitu ( svítí nesvítí) jednotlivých segmentů zobrazovače LED. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 21

Programové ovládání posuvného registru test /2 Selektivní nastavování hodnoty na vybraný pin je možno pomocí zápisu s využitím funkce bit banding, nebo s využitím funkce port bit set/reset u STM32. Port bit set/reset register (GPIx_BSSRR), např na bráně C (GPIC_BSSRR), je ve výkladu z přednášky 2. Rychlé zopakování: zápis hodnoty 1 do bitů 15 až 0 registru nastavuje příslušný výstupní bit do 0 zápis hodnoty 1 do bitů 31 až 16 registru nastavuje příslušný výstupní bit do 1 (celý 32 bitový registr tak slouží pro ovládání 16-ti pinů příslušné brány) Návěští generator_znaku bude v programu po překladu představovat adresu začátku tabulky znaků. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 22

Tabulka přiřazení segmentů bitům výstupu Jednoduchý zápis, přiřazení vývodů zobrazovače výstupům posuvného registru způsobem aby to dobře vycházelo programově, Bude ale složitější vedení vodičů na kontaktním poli nebo plošném spoji Symbolický popis připojení segmentů, definice symbolu SEG_A, SEG_A EQU 2_00000001 ; 1 zde značí připojení seg. k výst. bitu 0 SEG_B EQU 2_00000010 ; SEG_C EQU 2_00000100 ; SEG_D EQU 2_00001000 SEG_E EQU 2_00010000 SEG_F EQU 2_00100000 SEG_G EQU 2_01000000 SEG_DP EQU 2_10000000 ; gfedcba forma zápisu binárního čísla např. 2_0011001 A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 23

Generátor znaků zápis - jednoduchá forma Přímý zápis hodnot generátoru znaků (jednoduché řešení) nula EQU 2_00111111 ; generator znaku jednicka EQU 2_00000110 dvojka EQU 2_00111011 trojka EQU 2_01001111 ctyrka EQU 2_01100110 petka EQU 2_01101101 sestka EQU 2_01111101 sedmicka EQU 2_00000111 osmicka EQU 2_01111111 devitka EQU 2_00101111 tecka EQU 2_10000000 ; gfedcba ldp a f g e d c b rdp ( 1 znamená aktivaci proudu např. pomocí spínacího tranzistoru NPN) při změně zapojení nutná změna generátoru znaků, komlipace A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 24

Umístění tabulky generátoru znaků Umístění hodnot tabulky generátoru znaků pomocí direktivy assembleru DCB (8 bitů), DCW (16 bitů), případně DCD (32 bitů), Binární čísla se zadávají ve formě 2_ a následuje binární číslo, tedy např. 2_001011 binární číslo 0xED hexadecimální číslo 57 dekadické číslo Literatura: ARM DUI 0489C (ID050311), ARM Compiler toolchain, Version 4.1 Assembler Reference, Chapter 6, část 6.3 Data definition directives www.arm.com A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 25

Definice generátoru znaků - přímo Definice konstant generátoru znaků v paměti (Flash) gener_zn DCB nula ; prekladač vlozi hodnotu 2_00111111 DCB jednicka DCB dvojka DCB trojka DCB ctyrka ; a tak dále (zatím se neřeší ovládání desetinné tečky) Pokud by se změnil způsob ovládání zobrazovače, tedy že bude svítit při 0, musel by se změnit generátor znaků. Při tom by pouze stačilo definovat negované hodnoty generátoru znaků. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 26

Operátor negace Jak zápis negace?? nejedná se o instrukci procesoru, ale pouze činnost překladače buď ~ :NOT:A nebo A:EOR: 2_1111111 negace jednotlivých bitů (exclusive or s 1) (exclusive or shoda bitů dá 0, různost bitů dá 1) nutný shodný počet bitů v čísle A (nul nebo jednotek) A:EOR: 2_0000000 ponechání jednotlivých bitů možné je i kombinovat, to je vybrané bity negovat, ostaní ponechat A:EOR: 2_1000000 neguje pouze nejvyšší bit např. některé výstupy připojené na zobrazovač přímo, další přes invertor,. zůstává stále stejný zápis počáteční tabulky generátoru znaků A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 27

Definice generátoru znaků pomocí negace a exclusive or Definice negovaných konstant generátoru znaků v paměti (Flash) gener_zn DCB :NOT: nula ; prekladač misto hod. 2_00111111 ; vlozi negovanou hod. tedy 2_11000000 DCB :NOT: jednicka DCB :NOT: dvojka DCB :NOT: trojka DCB :NOT: ctyrka ; a tak dále Jiný způsob zápisu pomoci direktivy překladače :EOR: exclusive or maska EQU 0x11111111 ; exclusive or s 0x11111111 neguje všechny bity ; definuje se symbol maska gener_zn DCB maska :EOR: nula ; DCB maska :EOR: jednicka ; DCB maska :EOR: dvojka DCB maska :EOR: trojka DCB maska :EOR: ctyrka ; a tak dále A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 28

Definice generátoru s modifikací maskou Maska pro modifikaci (negace či přímo) jednotlivých bitů generátoru znaků se může odvodit z dalšího symbolu primo, neguj Případně lze pro jednotlivé bity definovat, zda svítí v 0 nebo 1 (pokud by segmety byly např. řešeny samostatnými LED. Podle toho se překladačem modifikuje generátor znaků v paměti primo EQU 2_0000000 ; konstanta pro přímá data, svítí při 1 (high) neguj EQU 2_1111111 ; konstanta pro negaci, svítí při 0 (low) jiné EQU 2_0000011 ; dolní dva bity- segmety svítí při 1, ostaní při 0 ; (může být, že některé znaky jsou buzeny přímo, některé přes invertor) maska EQU neguj ; konkrétní přiřazení do hodnoty masky generace gener_zn DCB maska :EOR: nula ; DCB maska :EOR: jednicka ; DCB maska :EOR: dvojka DCB maska :EOR: trojka DCB maska :EOR: ctyrka ; a tak dále A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 29

Výhodnější zapojení zobrazovače Zapojení bez křížení vodičů minimalizace složitosti připojení i na plošném spoji i za cenu přeházení přiřazení segmentů jednotlivým bitům změna zobrazovače?? změna programu?? změna generátoru znaků??? Jak (flexibilně) tvořit generátor znaků, aby bylo možno jej bylo možno jednoduše modifikovat v závislosti na konkrétním zapojení obvodu? A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 30

Úprava tabulky přiřazení pro zjednodušení zapojení Toto se musí změnit podle realizace HW (způsobu připojení) nová tabulka připojení segmentů SEG_A EQU 2_00001000 ; SEG_B EQU 2_00010000 SEG_C EQU 2_01000000 SEG_D EQU 2_10000000 SEG_E EQU 2_00000010 SEG_F EQU 2_00000100 SEG_G EQU 2_01000000 SEG_DP EQU 2_00000001 ; výstup Qx hgfedcba tabulka říká, na který bit (D7 až D0) výstupu pos. reg., je daný seg. připojen) kontrola zápisu - v každém řádku je právě jediná 1 v každém sloupci je právě jediná 1 pak jednoznačné přiřazení Výskyt jedničky ve více řádcích téhož sloupce chyba Výskyt jedničky ve více pozicích (sloupcích) jednoho řádku chyba A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 31

Využití operátorů překladače assembleru Aby se při každé změně zapojení nemusel znovu vytvářet nový generátor znaků, využije se dalších funkčních možností překladače jeho operátorů Operátory: bitové operace, posuny, aritmetické operace Pro generátor znaků využití operátorů logického součtu po jednotlivých bitech, případně i posunů nebo rotací. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 32

Operátory assembleru Operátory lit. DUI 0473C Using the assembler str. 8.21 operátory rotace :ROL: A :ROL: B Rotate A left by B bits :ROR: A :ROR: B Rotate A right by B bits :SHL: << A :SHL: B Shift A left by B bits :SHR: >> A :SHR: B Shift A right by B bits to jsou operátory assembleru, překladače, netýká se to vlastního procesoru, pomocný nástroj pro zjednodušení zápisu konstant a tvorbu a přehlednost programu obecně A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 33

Operátory assembleru operator, alt. zápis. použití +. A + B Add A to B - A - B Subtract B from A :AND: & A :AND: B Bitwise AND of A and B :EOR: ^ A :EOR: B Bitwise Exclusive OR of A and B :OR: A :OR: B Bitwise OR of A and B :NOT: ~ :NOT: A Bitwise complement of A str. 8-26 Using the assembler A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 34

Tabulka přiřazení segmentů, využití operátorů Reprezentace jedné hodnoty generátoru znaků jako logický součet hodnot odpovídajícím symbolů jednotlivých segmentů (SEG_A, ) Změna tvaru znaku postačí modifikace pouze této tabulky definice hodnoty znaku pro generátor znaků ( asembler vypočte hodnotu generátoru znaků pro dané připojení) gener_zn nula EQU SEG_A :OR: SEG_B :OR: SEG_C :OR: SEG_D :OR: SEG_E :OR: SEG_F jednicka EQU SEG_B :OR: SEG_C dvojka EQU SEG_A :OR: SEG_B :OR: SEG_G :OR: SEG_D :OR: SEG_E trojka EQU SEG_A :OR: SEG_B :OR: SEG_C :OR: SEG_D :OR: SEG_G sedmicka EQU SEG_A :OR: SEG_B :OR: SEG_C ctyrka EQU SEG_B :OR: SEG_C :OR: SEG_G :OR: SEG_F ;.. a tak dále ( aby zbyl prostor pro samostatnou činnost čtenáře) tecka EQU SEG_DP f ldp e d a g c b rdp to se nemění při změně zapojení, ale pouze při požadavku na změnu tvaru znaků (příklad z praxe - modifikace generátoru firma J b..) A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 35

Definice generátoru znaků Zápis generátoru znaků s možností modifikace (potřebná inverze všech nebo vybraných bitů) primo EQU 2_0000000 ; konstanta pro přímá data, svítí při 1 (high) neguj EQU 2_1111111 ; konstanta pro negaci, svítí při 0 (low) jiné EQU 2_0000011 ; D7 až D2 svítí při H, D1, D0 svítí při L maska EQU neguj ; konkrétní volba formy generace ( může být, že ; nekteré znaky jsou buzeny přímo, některé přes invertor) (otázka buzení LED proti zemi nebo proti napájení. Pro LTS3401-. společná anoda, možné buzení pouze proti napájení, svítí při výstupu L (0) ; vlastní generator znaku se zohledněním vlastností obvodu ; umistení hodnot jednotlivých bajtu do pameti s úpravou maskou gener_zn ; zohlednění svítí ve stavu H (high) nebo L (low) DCB nula :EOR: maska ; zde je kód pro zobrazení znaku 0 DCB jednicka :EOR: maska ; 1 DCB dvojka :EOR: maska ; 2 ; a tak dále (zatím se neřeší ovládání desetinné tečky) A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 36

Adresace RAM Je potřeba zvolit úsek RAM mimo zásobník (pro uložení mezivýsledků) STM32F100RBT6B (v STM32VL Discov.) - 128 kbyte FLASH a 8 kbyte RAM. Inicializace zásobníku ve vzorovém projektu je na 0x20 00 02 00, Zásobník se při použití plní (instrukcí PUSH) směrem k nižším adresám Adresa 0x20 00 10 00 daleko od zásobníku, právě uprostřed paměti RAM moje_ram EQU 0x20001000 ; adresa RAM, která se bude používat LDR.W R4, =moje_ram ; R4 jako ukazatel do RAM LDR.W R3, =0x11223344 STR R3, [R4] ; uložení dat z R3 do RAM (LDR.W indikuji požadavek, aby překladač přeložil jako 32- bitovou instrukci Thumb 2) ; uloží obsah R3 (0x11223344) do pameti, ; na adrese 0x2000 1000 je Byte 0x44 ; na 0x2000 1001 je Byte 0x33 ; na 0x2000 1002 je Byte 0x22 ; na 0x2000 1003 je Byte 0x11 A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 37

Čtení znaku z generátoru ; získání grafické reperezentace znaku MOV R1, #1 ;ale zde by se jinak predavala hodnota (0 az 9 cislice) LDR.W R2, =gener_zn ; R2 ukazuje na začátek generatoru znaku ADDS R2, R2, R1 ;pricteni posunu o hodnotu cislice, zde 1 LDRB R3, [R2] ;nacteni znaku jako bajt, horni 3 bajty jsou 0 v R3 je obsah pro zobr. číslice 1 na zobrazovači pozitivní log. (1 svítí) je nutno ve znaku následně nastavit, nebo nulovat bit příslušející desetinné tečce Dále použití instrukci (procesoru) Logical Shift Left, nebo Logical Shift Left, které posouvají registr přes příznak Carry, Možné využití příznaku Carry a podle jeho stavu nastavovat výstup D Pro odladění je velmi výhodné použití simulátoru v projekt, options for target, debug, se místo ( Use ST link debugger ) nastaví Use simulator A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 38

Adresace RAM Příklad adresace RAM, ukládání hodnot 0x11, 0x12, 0x13, 0x14 do nejnižšího byte slova V reálné aplikaci ukládání sady hodnot odpovídající zobrazení jednotlivých znaků video RAM, zde jen příklad plnění moje_ram EQU 0x20001000 LDR.W R4, =moje_ram ; R4 jako ukazatel do RAM LDR.W R3, =0x11 ; do R3 data, která budu ukladat STR R3, [R4] ; uložení dat (word 32 bitů) z R3 do RAM ADDS R3, R3, #1 ; inkrementace R3 pricteni 1, vr3 bude 0x12 STR R3, [R4, #4] ; ulozeni dat do RAM na adr. dle R4 zvysenou o 4 ADDS R3, R3, #1 ; inkrementace R3 pricteni 1, bude 0x13 STR R3, [R4, #8] ; ulozeni dat do RAM na adr. dle R4 zvysenou o 8 ADDS R3, R3, #1 inkrementace R3 STR R3, [R4, #0xC]; uloz. dat do RAM na adr. dle R4 zvys. o 0xC obsah R4 jako ukazatele zůstává zachován A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 39

Adresace RAM příklad programu Program uloží (instrukce store Byte) na adresu 0x20001000 adresované pomocí R4 nejnižší Byte z registru R3, inkrementuje obsah R3 a a uloží jej na adresu z R4 +1, příp. R4 +2, R4 +3 pevná volba adresy vzhledem k adrese v R4 moje_ram EQU 0x20001000 LDR.W R4, =moje_ram LDR.W R3, =0x00 STRB R3, [R4] ; uložení byte na adresu 0x2000 1000 ADDS R3, R3, #1 STRB R3, [R4, #1] ; uložení byte na adresu 0x2000 1001 ADDS R3, R3, #1 STRB R3, [R4, #2] ; uložení byte na adresu 0x2000 1002 ADDS R3, R3, #1 STRB R3, [R4, #3] ; uložení byte na adresu 0x2000 1003 A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 40

Adresace RAM s autoinkrementací po Byte Program uloží Byte na adresu 0x20001000 adresované pomocí R4 nejnižší Byte z registru R3, následně zvýší obsah R4 o 1 zápis [R4], #1 značí tzv. post index, jedná se o ukládání a autoinkrementaci moje_ram EQU 0x20001000 LDR.W R4, =moje_ram LDR.W R3, =0x00 STRB R3, [R4], #1 ; uložení byte na adresu 0x2000 1000 ADDS R3, R3,#1 STRB R3, [R4], #1 uložení byte na adresu 0x2000 1001 ADDS R3, R3,#1 STRB R3, [R4], #1 uložení byte na adresu 0x2000 1002 ADDS R3, R3,#1 STRB R3, [R4], #1 uložení byte na adresu 0x2000 1003 ADDS R3, R3,#1 STRB R3, [R4], #1 uložení byte na adresu 0x2000 1004 A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 41

Adresace RAM s autoinkrementací po slovech STR R3, [R4], #4 uloží celý registr R3 (4 byte) a inkrementuje ukazatel adresy v R4 o potřebný inkrement 4 Obdobně je možno využít instrukcí LDRB a LDR načtení byte a načtení slova (4 byte) do registru Paměť RAM je možno v úloze využít: - pro ukládání připravených zpráv, která se budou vysílat na zobrazovač - ukládání mezivýsledků Do RAM (zvolená část jako videopaměť) se nejdříve uloží obraz toho, co se bude vysílat na posuvný registr další program pak pouze bere tato data a vysílá je na posuvný registr A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 42

Uložení a čtení ACSII znaků jako textových hlášení LDR.W R4, =hlaseni ; do R4 adresu pameti, kde je text hlaseni LDRB R2, [R4], #1 ; postindex inkrementace ukazatele v R4 ; zde by bylo volání podprogramu posílajícího někam znak LDRB R2, [R4], #1 ; ;. LDRB R2, [R4], #1 ;. LDRB R2, [R4], #1 hlaseni DCB hlaseni2 DCB 123 Ahoj. start programu ; ulozeni ASCII znaků 321 tak to je jiz definitivni konec využití v samostatném projektu, výpisy hlášení Pozor taková data ukládat až za program, případně do míst programu, kde se nemohou data špatně vykládat jako programový kód. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 43

Poznámka k použítí pseudoinstrukce LDR x, =, Literal Pool.. LDR R2, =brana1 LDR R2, =lokace, 32- bitové hodnoty odpovidající brana1, lokace, překladač ukládá do tzv. literal pool na konci úseku programu, LDR R0, =GPIOC_CRH přeloží do THUMB 16- bitová instrukce LDR R0, [PC, #84] omezený rozsah možnost v některých případech přetečení hodnota je uložena relativně vůči akt. adresovému čítač LDR.W R0, =GPIOC_CRH;.W zadání požadavku na překlad do THUMB-2 32- bitové instrukce, větší rozsah hodnoty posunu jiná alternativa - použití pseudoinstrukce MOV32 R0, #0xABCDEF12 (její překlad pomocí dvou 32- bitových instrukcí, instrukce MOV a MOVT) MOVT (Mov Top) (32- bitová inst. pro zápis 16 bitů dat do horní části slova) direktiva LTORG výklad tabule, pokyn k umístění literal pool v daném místě A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 44

Poznámka -direktiva LTORG V instrukcích typu LDR.W R0, =GPIOC_CRH Uložení příslušné 32 bitové hod. za program, adresování relativně vůči PC. Omezená vzdálenost umístění dat do Literal Pool uložiště konstant Zápis krátkého programu- překlad OK, přidáním bezchybných instrukcí hlášení chyby. Při překročení jisté délky programu překladač hlásí chybu. Řešení.. ; program.. ; program.. ; program B dále ; preskoc na dále LTORG ; tak tady si odloz konstanty uložení bloku dat: Literal pool (analogie úklid sn, nedokážu odhrnou vše až na konec, vytvořím lokální úložiště. Při pohybu ( běhu programu však musím lokální úložište konstant přeskočit, aby sed ata neinterpretovala jako programový kód - musím lokální úložiště přeskočit) DALE.. ; program.. ; program A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 45

Instrukce CMP, TST Instrukce CMP Rn, Operand2 (virtuálně) provádí instrukci SUBS - odečtení s nastavením příznaků N, Z, C, V, ale výsledek se neukládá Použití pro (aritmetické) porovnání velikosti obsahu registru a operandu Instrukce TST Rn, Operand2 (virtuálně) provádí instrukci ANDS log. AND s nastavením příznaků N, Z, C, V, ale výsledek se neukládá (Použití pro zjištění, zda je na daném místě Rn (určeném polohou 1 v masce operand 2) hodnota 1 nebo 0, operand 2 obsahuje masku např. 0x01 s jediným bitem v 1 TST R1, #0x20000 ANDS - log. operace AND po bitech, nastavuje příznaky N a Z N do 1, když je výsl.operace negativní, jinak nastaveno do 0 Z do 1, když je výsl. operace nulový, jinak nastaveno do 0 C do 1, když je výsl. operace CARRY přetečení z nejvyšš. bitu, jinak nast. do 0 V do 1, když je výsledek operace overflow, součet zápor. čísel kladný,.. A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 46

Instrukce CMP, TST TST Rn, Operand2 OPERAND 2 : any constant that can be produced by shifting an 8-bit value left by any number of bits within a 32-bit word Proto je možno zapsat instrukci s velkou hodnotou přímé konstanty překladač vhodně přeloží tak, že se v instrukci využije Barrel Shifter Konstanta bude 1, ale před jejím použitím se posune o patřičný počet míst překlad instrukce F411 3F00 TST R1, #0x20000 F411 1F00 TST R1, #0x200000 A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha 47