STEDNÍ PRMYSLOVÁ ŠKOLA ELEKTROTECHNIKY
Transkript
STěEDNÍ PRģMYSLOVÁ ŠKOLA ELEKTROTECHNIKY A INFORMATIKY OSTRAVA, PěÍSPċVKOVÁ ORGANIZACE MODEL VÝTAHU Dlouhodobá maturitní práce Autor: Martin Kresta, EP4A Vedoucí práce: Ing. Ladislav Škapa Konzultant: Ing. Ladislav Škapa Ostrava 2007/2008 Anotace PĜedmČtem práce bude návrh a výroba modelu výtahu urþeného k pĜepravČ osob v nČkolika patrovém domČ. ěídící systém bude komunikovat s ovládacími panely zobrazovacími jednotkami, þidly a pohonem. PĜedpokládá se realizace na bázi monolitického mikropoþítaþe. -2- © Copyright, Martin Kresta 2008 PodČkování Úvodem bych chtČl podČkovat tČmto lidem, bez jejichž ochotné pomoci by byla práce výraznČ složitČjší: • Ing. Ladislavu Škapovi, vedoucímu i konzultantovi mé práce, který mi poskytl nČkolik zajímavých tipĤ v oblasti softwaru. • Ing. ZdeĖkovi Nálevkovi za trpČlivé vysvČtlení problematiky elektrických pohonĤ zejména PFM a užiteþné rady v této oblasti. • Petru Stehlíkovi a firmČ ZAM-servis s.r.o. za poskytnutí schématu a softwaru pro výrobu ISP programátoru, který byl použit pĜi vývoji modelu výtahu. • JiĜímu Starému za soustružnické práce pĜi výrobČ ocelového hĜídele a ložisek. -3- © Copyright, Martin Kresta 2008 Prohlášení a licenþní ujednání Prohlášení Prohlašuji, že svou dlouhodobou maturitní práci na téma „Model výtahu“, jsem vypracoval samostatnČ pod vedením vedoucího dlouhodobé maturitní práce a s použitím odborné literatury a dalších informaþních zdrojĤ, které jsou uvedeny v seznamu literatury. Jako autor uvedené dlouhodobé maturitní práce dále prohlašuji, že v souvislosti s vytvoĜením této práce jsem neporušil autorská práva tĜetích osob, zejména jsem nezasáhl nedovoleným zpĤsobem do cizích autorských práv osobnostních a jsem si plnČ vČdom následkĤ porušení ustanovení § 11 a následujících autorského zákona þ. 121/2000 Sb., vþetnČ možných trestnČprávních dĤsledkĤ vyplývajících ustanovení § 152 trestního zákonaþ. 140/1961 Sb.“ Licenþní ujednání • • • Ve smyslu §60 autorského zákona þ. 121/2000 Sb. poskytuji SPŠei Ostrava, výhradní a neomezená práva (§46 a §47) k využití mé dlouhodobé maturitní práce. Bez svolení školy se zdržím jakéhokoliv komerþního využití mé práce. Pro nekomerþní a výukové úþely školy se vzdávám nároku na odmČnu za užití díla. V OstravČ, 25.2.2008 -4- © Copyright, Martin Kresta 2008 OBSAH Anotace .............................................................................................................. 2 PodČkování......................................................................................................... 3 Prohlášení a licenþní ujednání ........................................................................... 4 Prohlášení ........................................................................................................................... 4 Licenþní ujednání ............................................................................................................... 4 1. CHARAKTERISTIKA TÉMATU ............................................................................ 8 1.1. ZdĤvodnČní tématu práce............................................................................ 8 1.2. Specifikace problému ................................................................................. 8 1.3. Použité metody............................................................................................ 9 1.4. Organizace práce......................................................................................... 9 2. POPIS FUNKCE ................................................................................................. 10 3. NÁVOD K OBSLUZE .......................................................................................... 11 4. KONSTRUKCE .................................................................................................. 12 4.1. Výtahová šachta ........................................................................................ 12 4.2. Pohonná jednotka...................................................................................... 12 4.3. Kabina a protizávaží ................................................................................. 13 4.4. Stabilita ..................................................................................................... 13 4.5. Technické parametry................................................................................. 13 5. ELEKTRONIKA ................................................................................................. 14 5.1. Zdroje........................................................................................................ 15 5.2. Elektronická pojistka ................................................................................ 15 5.3. NapČĢový supervisor................................................................................. 16 5.4. Elektrický pohon....................................................................................... 16 5.5. Displej ....................................................................................................... 17 5.6. Tlaþítka ..................................................................................................... 17 5.7. LED........................................................................................................... 17 5.8. Elektronika v kabinČ ................................................................................. 17 5.9. OdĤvodnČní použitých souþástek ............................................................. 18 6. SOFTWARE ....................................................................................................... 20 6.1. Atmel......................................................................................................... 20 6.2. Program..................................................................................................... 20 6.3. MASTER .................................................................................................. 21 6.3.1. Nastavení ................................................................................................................ 21 6.3.2. Test þidel ................................................................................................................ 22 6.3.3. Test tlaþítek ............................................................................................................ 22 6.3.4. Vyhodnocení požadavku ........................................................................................ 22 6.3.5. Nástup/výstup......................................................................................................... 22 6.3.6. Kontrola pamČti...................................................................................................... 23 6.3.7. Odeslání dat............................................................................................................ 23 6.3.8. Plynulý rozjezd....................................................................................................... 23 6.3.9. Plynulé zastavení.................................................................................................... 24 6.3.10. Subrutina on a off................................................................................................. 24 6.3.11. Zobrazení.............................................................................................................. 24 -5- © Copyright, Martin Kresta 2008 6.3.12. Subrutina ledka..................................................................................................... 24 6.3.13. ýasování 4 sekundy.............................................................................................. 24 6.3.14. Subrutina savetest................................................................................................. 25 6.3.15. Obsluha pĜerušení Timeru 0................................................................................. 25 6.3.16. Obsluha pĜerušení sériové linky........................................................................... 25 6.4. SLAVE...................................................................................................... 27 6.4.1. Testování tlaþítek ................................................................................................... 27 6.4.2. Odeslání dat............................................................................................................ 27 6.4.3. Subrutina antikmit .................................................................................................. 27 6.4.4. Obsluha pĜerušení sériové linky............................................................................. 28 6.4.5. Subrutina dekoder .................................................................................................. 28 6.4.6. Generování tónĤ ..................................................................................................... 28 6.4.7. Obsluha pĜerušení timeru 0 .................................................................................... 28 6.5. Výpoþty þasových prodlev........................................................................ 29 7. ZÁVċR .............................................................................................................. 30 8. LITERATURA .................................................................................................... 30 9. PěÍLOHY .......................................................................................................... 31 9.1. Blokové schéma elektroniky..................................................................... 31 9.2. Elektrotechnická schémata ....................................................................... 32 9.2.1. MASTER (Schéma) ............................................................................................... 32 9.2.2. SLAVE (schéma) ................................................................................................... 33 9.2.3. Výpis souþástek...................................................................................................... 34 9.2.4. Zdroj (schéma) ....................................................................................................... 35 9.2.5. Control (schéma) .................................................................................................... 36 9.2.6. Sensor (schéma) ..................................................................................................... 37 9.3. Desky plošných spojĤ ............................................................................... 38 9.3.1. MASTER (DPS)..................................................................................................... 38 9.3.2. SLAVE (DPS) ........................................................................................................ 40 9.3.3. Zdroj (DPS) ............................................................................................................ 41 9.3.4. Control (DPS)......................................................................................................... 42 9.3.5. Sensor (DPS) .......................................................................................................... 42 9.4. Vývojové diagramy................................................................................... 43 9.4.1. Vývojový diagram MASTER................................................................................. 43 9.4.2. Rutina sentest ......................................................................................................... 44 9.4.3. Rutina zobraz.......................................................................................................... 45 9.4.4. Rutina posli (MASTER)......................................................................................... 46 9.4.5. Rutina buttest (MASTER)...................................................................................... 47 9.4.6. Rutina lift................................................................................................................ 48 9.4.7. Rutina ready ........................................................................................................... 49 9.4.8. Subrutina jed .......................................................................................................... 50 9.4.9. Subrutina stuj.......................................................................................................... 51 9.4.10. Subrutiny on a off................................................................................................. 52 9.4.11. Subrutina ledka..................................................................................................... 53 9.4.12. Subrutina wait4 .................................................................................................... 54 9.4.13. Subrutina savetest – 1.þást ................................................................................... 55 9.4.14. Subrutina savetest – 2.þást ................................................................................... 56 9.4.15. Obsluha pĜerušení sériové linky (MASTER) ....................................................... 57 9.4.16. Obsluha pĜerušení timeru 0 (MASTER) .............................................................. 58 9.4.17. Rutina Buttest (SLAVE) ...................................................................................... 59 -6- © Copyright, Martin Kresta 2008 9.4.18. Subrutina antikmit ................................................................................................ 60 9.4.19. Subrutina posli (SLAVE) ..................................................................................... 61 9.4.20. Obsluha pĜerušení sériové linky (SLAVE) .......................................................... 62 9.4.21. Subrutina dekoder ................................................................................................ 63 9.4.22. Subrutiny ah a d.................................................................................................... 64 9.4.23. Obsluha pĜerušení timeru 0 (SLAVE).................................................................. 65 9.5. Zdrojové kódy MASTER a SLAVE......................................................... 66 OBSAH CD-ROM • • • • • • • Elektrotechnická schémata (EAGLE) Návrhy DPS (EAGLE) Software (KEIL) Katalogové listy nČkterých souþástek (PDF) Odkazy na webové stránky (PDF) Dokumentace (PDF) Videoukázka (WMV) -7- © Copyright, Martin Kresta 2008 1. CHARAKTERISTIKA TÉMATU 1.1. ZdĤvodnČní tématu práce Jelikož na naší škole existuje možnost vykonat i dlouhodobou praktickou maturitní zkoušku z jednoho odborného pĜedmČtu, využil jsem tuto možnost. I když nám byly pĜedloženy urþitá témata ke zpracování, já jsem si vybral své téma sám. Po pĜedložení mého návrhu ing. Škapovi, který je mým uþitelem v pĜedmČtu mikroprocesorová technika, byl mĤj návrh schválen. Ing. Škapa se tak stal mým konzultantem i vedoucím práce. Jedná se o model výtahu. Takovýto model jsem si vybral proto, že je vhodný pro Ĝízení mikroprocesorem a umožĖuje s využitím vhodných periférií demonstrovat možnosti mikroprocesoru. PĜestože tato práce bude reprezentovat pĜedmČt mikroprocesorová technika, dá se Ĝíct, že jde o propojení pĜedmČtĤ mikroprocesorová technika, elektronika, elektrotechnická mČĜení, programové vybavení, fyzika, matematika a další. Komplexnost práce je také jeden z dĤvodĤ proþ jsem si toto téma vybral. Hlavním dĤvodem ale zĤstává možnost vyzkoušet si v praxi programování mikroprocesoru pomocí jazyku symbolických adres a další praktické uplatnČní teoretických znalostí. V souþasnosti ještČ funguje mnoho starších výtahĤ, které se modernizují tak, že se starý reléový systém nahradí novým modernČjším, jehož základ tvoĜí mikroprocesor. To mimo jiné umožĖuje jednodušší realizaci plynulého pohybu, zvyšuje se tak efektivita, celkovČ bezpeþnost a spolehlivost systému. Toto moderní Ĝešení je využito i pro realizaci modelu výtahu, který je tímto po stránce Ĝízení srovnatelný s bČžnČ používanými výtahy. Model jako takový mĤže sloužit jako prezentaþní nebo demonstraþní model a díky podpoĜe ISP programování i jako výukový model pĜedmČtu mikroprocesorová technika. 1.2. Specifikace problému Model Ĝeší problém Ĝídícího softwaru a elektroniky pro Ĝízení osobního výtahu. Z hlediska softwaru je to pĜedevším správná algoritmizace, ošetĜení nežádoucích elektromechanických jevĤ, realizace Ĝízení motoru a generování tónu. Z hlediska elektroniky pak vstupní a výstupní periférie a jejich pĜizpĤsobení pro Ĝízení digitálními signály s nízkou proudovou zatížitelností, obvod pro spínání motoru a stejnosmČrné stabilizované zdroje pro motor a pro ostatní elektroniku vþetnČ mikroprocesoru. Pro pĜedvedení funkþnosti tohoto systému byl zhotoven reálný model se 6-ti stanicemi pĜizpĤsobený pro implementaci elektroniky. Celek funkþního modelu výtahu je tedy tvoĜen propojením konstrukþní, elektronické a softwarové þásti. BČžnČ používané osobní výtahy musejí být navíc vybaveny rĤznými mechanickými bezpeþnostními prvky. U navrhovaného modelu však vzhledem k omezeným konstrukþním možnostem nejsou tyto prvky na modelu realizovány. Model slouží pouze k demonstraci softwaru a elektroniky. -8- © Copyright, Martin Kresta 2008 1.3. Použité metody PĜi realizaci bylo použito nČkolik zajímavých softwarových i elektronických metod. NapĜíklad použití integrovaných stabilizátorĤ pro stejnosmČrné zdroje, elektronická pojistka Ĝízená procesorem pro odpojení napájení motoru pĜi pĜetížení, napČĢový supervisor pro vygenerování resetu pro mikroprocesory pĜi poklesu napájecího napČtí, Ĝízení dvou LED pomocí jednoho pinu mikroprocesoru s použitím komplementárního zapojení tranzistorĤ, použití speciálního obvodu pro Ĝízení motoru pomocí pulsnČ frekvenþní modulace a optické závory. Z hlediska softwaru bylo využito témČĜ všech možností použitého mikroprocesoru. Jsou to sériová komunikace mezi procesorem v kabinČ a hlavním procesorem, timer v režimu „baudrate generator“, generování tónu s promČnnou frekvenci pomoci timeru v režimu „autoreload“, softwarová realizace PFM (pulsnČ frekvenþní modulace) pro plynulé rozjezdy a zastavení motoru, þekací smyþky a další. 1.4. Organizace práce Práce byla zapoþata vývojem jednotlivých funkþních þástí elektroniky na nepájivém poli. Následovala výroba plošných spojĤ a vývoj softwaru. Pro testování bylo nutno zhotovit výtahovou šachtu a pohonnou jednotku. NáslednČ byla vyrobena elektronika i software pro procesor v kabinČ a realizována sériová komunikace. PostupnČ byl odlaćován software a dokonþována mechanická konstrukce šachty výtahu. Zhotovením elektronické pojistky a napČĢového supervisoru byl rámcovČ ukonþen proces výroby. První kapitola hlavní þásti vypovídá o funkci výtahu, reakcích na požadavky obsluhy, principu þinnosti. Obsahuje i návod k obsluze. Druhá kapitola popisuje mechanickou konstrukci výtahové šachty, použitý materiál a výrobní technologie. Další kapitola pojednává o návrhu a funkci elektroniky, odĤvodnČní použitých prvkĤ a o návrhu desek plošných spojĤ. Poslední kapitola obsahuje podrobný popis softwaru, algorirtmizaci a struþný popis mikroprocesoru s jádrem 8051. -9- © Copyright, Martin Kresta 2008 2. POPIS FUNKCE Model je napodobeninou skuteþného osobního výtahu vþetnČ principu ovládání. Každé patro je vybaveno jednociferným 7-mi segmentovým displejem, þervenou a zelenou LED a tlaþítkem. V kabinČ je opČt displej se dvČmi LED, 6 tlaþítek pro výbČr patra, tlaþítko stop a tlaþítko zvonek. Signalizace LED: • Svítící þervená LED: zaneprázdnČnost výtahu, zajištČné dveĜe. • Svítící zelená LED: nástup/výstup, otevĜené dveĜe. • Bez signalizace LED: þeká na požadavek, zajištČné dveĜe. Jestliže výtah þeká na požadavek (bez signalizace LED), ihned po zadání požadavku (pĜivolání výtahu) je požadavek vyhodnocen. V pĜípadČ, že v dobČ pĜivolání je již kabina zaneprázdnČna, uloží se požadavek do pamČti a je vyhodnocen ihned, jakmile je aktuální požadavek vyĜešen. Avšak v pĜípadČ, že v této dobČ nastane nový požadavek obsluhy z kabiny, má tento požadavek vyšší prioritu a je vyhodnocen pĜednostnČ. Do pamČti lze uložit maximálnČ 3 požadavky, þtvrtý požadavek je ignorován. Požadavky v pamČti jsou vyhodnocovány v tom poĜadí, v jakém byly uloženy. PĜi pohybu kabiny svítí všechny þervené LED, které signalizují zajištČné dveĜe a na displejích se zobrazuje aktuální pozice kabiny. Po zastavení kabiny v pĜíslušném patĜe se rozsvítí zelená a zhasne þervená LED v kabinČ i v daném patĜe a zazní zvukový signál. ZároveĖ se rozsvítí displej v kabinČ, který zobrazuje její aktuální pozici. V pĜípadČ, že do cca 4 sekund není zadán další požadavek, všechny LED i displej v kabinČ zhasnou a výtah þeká na další požadavek, anebo se zaþne vyhodnocovat požadavek z pamČti, byl-li nČjaký uložen. V pĜípadČ požadavku obsluhy z kabiny se výtah uvede do pohybu okamžitČ. Displej v kabinČ zĤstane rozsvícený, svítí všechny þervené LED. Po zastavení se celá situace opakuje. PĜi stisku tlaþítka STOP se kabina okamžitČ zastaví a þeká na další požadavek. Zastaví-li takto kabina v kterémkoliv patĜe, otevĜou se dveĜe. PĜi zastavení mimo patro zĤstanou dveĜe zajištČny. Tlaþítko ZVONEK spustí generování výstražného tónu bez ohledu na to v jakém stavu þi poloze se výtah nachází. Jediný okamžik, kdy systém nereaguje na zadaný požadavek nastane jen v dobČ zastavování a rozjezdu kabiny (cca 0,6s). To je dáno omezenými možnostmi použitého mikroprocesoru. V dobČ generování tónu dojezdu do patra systém nereaguje na požadavky obsluhy z kabiny (cca 1s). Pro názornost je funkce výtahu graficky znázornČna vývojovým diagramem. Výtah v provozu je možno shlédnout i na videoukázce na pĜiloženém CD-ROM. - 10 - © Copyright, Martin Kresta 2008 ! ! ! + ) ), % - "# ! & ! $% ! $ ! "# ! & '( ! ) ) * 3. NÁVOD K OBSLUZE Stiskem tlaþítka pĜivolejte kabinu výtahu (aktuální polohu kabiny mĤžete sledovat na displeji). Po otevĜení dveĜí a zaznČní zvukového signálu vstupte do kabiny. Stiskem tlaþítka zvolte cílovou stanici (patro). Po zaznČní zvukového signálu a otevĜení dveĜí opusĢte kabinu. - 11 - © Copyright, Martin Kresta 2008 4. KONSTRUKCE Návrh konstrukce vyžadoval kompromis mezi funkþností, složitostí výroby a cenou. Základními konstrukþními materiály jsou dĜevo, hliník a plexisklo. Veškeré spoje uvedených materiálĤ byly realizovány pomocí bČžnČ dostupných spojovacích prvkĤ, jako jsou vruty þi šrouby, v pĜípadČ dílu z plexiskla bylo užito speciální lepidlo. Samotná výroba, dČlení þi úpravy jednotlivých dílĤ pĜedstavovala použití zejména klasických obrábČþských metod, jako vrtání, Ĝezání, pilování, dále pak ohýbání, lisování apod. Díly z plexiskla sloužící k uchycení ložisek zhotovila a dodala firma Valter Špalek podle mnou zpracované výkresové dokumentace. HĜídel pro navíjení tažného lana je vyrobena z oceli a podle mé výkresové dokumentace ji zhotovil JiĜí Starý. DĜevČné díly pro základnu a nosný prvek pro snímaþe polohy byly po tvarovém opracování povrchovČ upraveny šedou barvou. 4.1. Výtahová šachta Základ výtahové šachty tvoĜí dolní panel, horní panel a 4 L profily. Dolní i horní panel þtvercového pĤdorysu je zhotoven z pĜekližky o rozmČrech 140x140mm a tloušĢce 12mm. Panely jsou od sebe vzdáleny 940mm. K tČmto panelĤm jsou v každém rohu pomocí vrutĤ pĜišroubovány hliníkové L profily. Tyto profily o rozmČru 15x15mm jsou 1000mm dlouhé a mají zlatou povrchovou úpravu. Vzniklá konstrukce tvoĜí dostateþnČ tuhý nosný základ pro vybavení ostatními funkþními þástmi þi díly. Na þelní stČnČ konstrukce jsou k vnitĜním stranám zlatých hliníkových profilĤ ještČ pĜišroubovány 2 ploché I profily stĜíbrné barvy stejné délky jako hliníkový profil L. SĜíbrný I profil na pravé stranČ konstrukce slouží jako nosný prvek pro umístČní ovládacích prvkĤ. StĜíbrný profil na levé stranČ konstrukce pouze dotváĜí optickou symetrii þelní stČny. Délka profilu I po pravé stranČ je rovnomČrnČ rozdČlena do šesti úsekĤ, které pĜedstavují jednotlivá patra. V úrovni každého patra je do I profilu zabudován displej, tlaþítko a 2 LED. Tyto prvky jsou nutné k signalizaci a ovládání kabiny výtahu a jsou zabudovány tak, že tvoĜí s povrchem profilu jednu rovinu. Vodící lišty, které „vedou“ kabinu pĜi pohybu, tvoĜí dva hliníkové T profily. Lišty jsou ukotveny mezi horní a dolní panel zapuštČním do neprĤchozí díry. UmístČní T profilĤ je podmínČno velikostí kabiny, která je umístČna uprostĜed þelní stČny, lícuje s její rovinou a je vedena mezi tČmito T profily. Dalším prvkem je smrková lišta o rozmČrech 17x10mm a délce 940mm. TvoĜí spojnici mezi dolním a horním panelem, je umístČna cca v jejich stĜedu a upevnČná je podobnČ jako T profily. Tato lišta slouží jako nosný prvek pro optické snímaþe polohy. Šachta je dále vybavena protizávažím, umístČným v zadní þásti. Vodící ocelové lanko o prĤmČru 1,5mm pro závaží je napnuto a ukotveno v dolním i horním panelu. Protizávaží pohybující se po ocelovém lanku je z oceli a má hmotnost odpovídající pĜibližnČ hmotnosti kabiny. V polovinČ výšky šachty jsou pro zlepšení tuhosti vodících lišt a celé konstrukce vloženy výztuhy. 4.2. Pohonná jednotka Na horním panelu je umístČna pohonná jednotka. HĜídel pro navíjení tažného lana vyrobený z oceli je svým tvarem pĜizpĤsoben pro uložení do ložisek a pro optimální navíjení tažného lana. Z dĤvodu úspory hmotnosti je hĜídel þásteþnČ dutý. Kluzná pouzdra 10x10mm jsou upevnČna v úchytech z plexiskla tl.10mm. Tyto úchyty byly zhotoveny dle výkresové dokumentace, firmou Valter Špalek. Úchyty jsou na horním panelu umístČny a pĜišroubovány tak, aby hĜídel byl pĜímo nad tČžištČm kabiny. Pod hĜídelem je v horním panelu vyvrtaná díra prĤmČru 25mm pro prĤchod tažného lana. Motor, jako hnací jednotka kabiny, byl zakoupen jako finální výrobek vþetnČ zabudované pĜevodovky. Proti protáþení je zafixován mechanickou zábranou dovolující mírný pohyb do stran. PĜenos kroutícího momentu motoru na navíjecí hĜídel je realizován danou konstrukcí obou hĜídelĤ. - 12 - © Copyright, Martin Kresta 2008 4.3. Kabina a protizávaží Kabina je zhotovena z kouĜového plexiskla tl.2mm a má tvar kvádru o rozmČrech 70x70x90 mm. V pĜední stČnČ jsou kruhové otvory pro tlaþítka a jeden obdélníkový otvor pro displej a LED. Ve spodní stČnČ je nČkolik malých dČr pro lepší zvukový efekt reproduktoru. V zadní stČnČ kabiny je otvor pro vyvedení 5-ti žilového plochého kabelu a celá zadní stČna je odnímatelná pro montáž elektroniky. Na každé boþní stČnČ jsou pĜilepeny dva vodící hliníkové L profily a na zadní stranČ jeden T profil pro pĜerušování svČtelných závor optických þidel. Lano je ke kabinČ pĜipevnČno pomocí snadno rozebíratelného šroubového spoje. Hmotnost celé kabiny i s elektronikou je cca 120g. Protizávaží je zhotoveno ze tĜí ocelových kvádrĤ o rozmČrech 10x10x50mm, ve kterých jsou vyvrtány díry pro ocelové vodící lanka a pro závČs. Vzhledem ke složitosti výroby nejsou v kabinČ ani ve výtahové šachtČ realizovány dveĜe. K signalizaci otevĜených þi zavĜených dveĜí jsou tedy použity LED. 4.4. Stabilita Celá konstrukce je vzhledem k výšce a rozmČrĤm podstavy pomČrnČ nestabilní, proto je vhodné spojit dolní panel s pevnou podložkou, nebo celou konstrukci opĜít o svislou oporu. 4.5. Technické parametry RozmČry šachty (VxŠxH) ………1000x155x155 mm RozmČry kabiny (VxŠxH)………90x70x70 mm Hmotnost kabiny………………...cca 120 g Poþet pater……………………….6 Rychlost kabiny…………………0,075 m/s Otáþky hĜídele…………………...95 rpm PĜíkon motoru……………………0,25W Napájecí napČtí…………………..12-20V AC/DC Proudový odbČr………………….200-300mA PĜíkon celého modelu……………cca 3-4,5W - 13 - © Copyright, Martin Kresta 2008 5. ELEKTRONIKA Elektronika je þlenČna do nČkolika funkþních blokĤ, jak je patrno z blokového schématu na obr.1. PĜi výrobČ desek plošných spojĤ (dále jen DPS) se kladl dĤraz na mechanické pĜizpĤsobení pro montáž tČchto DPS. V naprosté vČtšinČ je použita SMD technologie pro menší rozmČry. Na DPS s hlavním Ĝídícím mikroprocesorem je použitá dvouvrstvá deska. Všechny DPS byly vyrobeny leptáním v roztoku FeCl3. Obrazec spojĤ byl vytištČn na laserové tiskárnČ a na kuprextit pĜenesen nažehlením. Pro propojení jednotlivých DPS byly použity vícežilové ploché kabely a samoĜezné konektory. V celém modelu výtahu je celkem 15 DPS. Celá elektronika byla navržena pĜímo pro tento model, pouze elektronická pojistka je pĜevzatá a upravená. obr.1-blokové schéma elektroniky - 14 - © Copyright, Martin Kresta 2008 5.1. Zdroje Základ zdroje pro motor tvoĜí klasický integrovaný tĜíbodový stabilizátor TL7806. Tento je napájen pĜímo z napájecího konektoru pĜes diodový dvoucestný usmČrĖovaþ, paralelnČ zapojený vyhlazovací elektrolytický kondenzátor C1 22µF a filtraþní keramický kondenzátor C2 100ȘF. Na výstupních svorkách jsou opČt paralelnČ zapojeny kondenzátory C3 100ȘF a C4 100µF – viz obr.2. Tento zdroj má na svém výstupu stabilizované napČtí 6V. Vzhledem k malé proudové zátČži tohoto zdroje (cca 50mA) je stabilizátor s malým chladiþem pĜímo na DPS. Zdroj pro procesor a periférie je témČĜ shodný se zdrojem pro motor, jen je použit stabilizátor TL7805. Vzhledem k vyššímu proudovému odbČru je stabilizátor vyveden z DPS a je upevnČn na jeden z hliníkových L profilĤ, který slouží jako chladiþ. obr.2 – zapojení stabilizátoru 5.2. Elektronická pojistka Výstup zdroje pro motor je zapojen na vstup dvojbranu elektronické pojistky. Tato pojistka má za úkol odpojit napájení motoru v pĜípadČ pĜetížení kabiny nebo mechanické poruchy. Základ pojistky tvoĜí MOS-FET tranzistor T2, který je zaĜazen v kladné vČtvi sériovČ se zátČží a tím rozpíná nebo spíná obvod viz obr.3. Tento tranzistor rovnČž plní funkci snímaþe proudu, úbytek napČtí na T2 je úmČrný protékajícímu proudu. Tento úbytek je vyhodnocován PNP tranzistorem T1 jehož napČtí UBE je dáno souþtem napČtí na tranzistoru T2, shottkyho diodČ D2 (0,3V) a napČtí na trimru R7. PĜekroþí-li proud zátČží nastavenou mez, úbytek napČtí na T2 vzroste natolik, že pootevĜe tranzistor T1, tím pádem stoupne napČtí na dČliþi R2,R3 jež je vyveden na Ĝídící elektrodu T2 a zpĤsobí tím pĜivĜení obr.3 - zapojení pojistky s vyznaþenou dodateþnou þástí T2. Úbytek na T2 tím ještČ více stoupne a nastává ĜetČzová reakce. Nakonec je T1 v saturaci a LED1 se rozsvítí. Pojistka má klopný charakter. Pro „nahození“ pojistky slouží tlaþítko S1, které je zapojeno mezi bázi a emitor tranzistoru T1 a stiskem tlaþítka zpĤsobí úplné zavĜení tranzistoru T1 vlivem nulového napČtí UBE. Zenerova dioda D1 slouží jako zdroj napČtí pro napájení pojistky a J-FET tranzistor T3 jako proudový zdroj. Citlivost pojistky se nastavuje trimrem R7. PĜi testování pojistky nastal problém pĜi rozjezdu a zastavení motoru. Pojistka je velmi citlivá na napČĢové - 15 - © Copyright, Martin Kresta 2008 i proudové špiþky a proto nemohla být nastavena na dostateþnou citlivost. Tento problém byl dodateþnČ vyĜešen PNP tranzistorem T4 ve spínacím režimu který je zapojen paralelnČ k tlaþítku S1. Báze T4 je pĜipojována pĜes rezistor na kladné napČtí prostĜednictvím optoþlenu OK1. Tento optoþlen je pĜímo spínán mikroprocesorem. V dobČ rozjezdu a zastavení je tedy pojistka deaktivována procesorem. Význam pojistky spoþívá v ochranČ vinutí motoru proti spálení. V pĜípadČ pĜetížení pojistka odpojí napájení. Po odstranČní poruchy musí obsluha ruþnČ „nahodit“ pojistku stiskem tlaþítka. 5.3. NapČĢový supervisor Napájecí napČtí pro procesor je nutno hlídat supervisorem. Ten v pĜípadČ poklesu napČtí vygeneruje reset pro oba mikroprocesory. Je tvoĜen integrovaným obvodem TL7705 – viz obr.4. Tento obvod je pĜímo urþen k tomuto použití a je dodáván ve více variantách pro rĤzná napČtí. Pro lepší pochopení uvádím pĜeklad úryvku z katalogového listu: TL77xx je integrovaný obvod hlídající napájecí napČtí. Je speciálnČ navržen pro použití s mikroprocesory. BČhem provozu testuje napájecí napČtí a drží výstup RESET aktivní tak dlouho, dokud napČtí nedosáhne pĜedepsané hodnoty. PĜivedení log0 na vstup NRESIN1 má stejný efekt. Pro zajištČní provedení resetu má TL77xx vnitĜní zpoždČní, které zpozdí návrat výstupu RESET do neaktivního stavu. Toto zpoždČní je dáno hodnotou kondenzátoru na vstupu TIMEC Další externí kondenzátor musí být zapojen mezi výstup REF a zem pro redukci vlivu rychlých zmČn napájecího napČtí. obr.4- zapojení napČĢového supervisoru 5.4. Elektrický pohon ěízení motoru obstarává obvod L293D – viz obr.5, který je vhodný pro Ĝízení stejnosmČrných motorĤ. UmožĖuje pomocí logických vstupĤ spínat indukþní zátČž a zároveĖ pomocí logických vstupĤ pĜepólovat výstupní napČtí. Obvod je napájen jednak napČtím digitálních úrovní a jednak napČtím, které poskytuje na výstupu. Díky svým parametrĤm je velice vhodný pro realizaci PFM regulace otáþek motoru a umožĖuje tím plynulý rozjezd a zastavení kabiny. Jedinou nevýhodou tohoto obvodu je pomČrnČ velká klidová spotĜeba. Jako pohon byl použit stejnosmČrný elektromotor 5V/100mA se zabudovanou pĜevodovkou. Otáþky bez zátČže jsou cca 110/min. Napájení motoru je však zvýšeno na 6V pro vČtší výkon. Proud v zátČži nepĜesahuje 50mA. Proud pĜi zablokování hĜídele je cca obr.5 – zapojení obvodu L293D 180mA, elektronická pojistka vypíná pĜi proudu 80mA. 1 slouží k manuálnímu resetu. - 16 - © Copyright, Martin Kresta 2008 5.5. Displej V každém patĜe je 7-mi segmentový LED displej, který þíselnČ zobrazuje aktuální polohu kabiny výtahu. Segmenty jsou zapojeny do paralelních skupin tak, že jeden pin mikroprocesoru ovládá celou skupinu 6-ti segmentĤ. NapĜíklad port P1.6 ovládá segment „a“ na všech 6-ti displejích –viz obr.6. Jedna paralelní skupina segmentĤ má odbČr 30-40mA, proto musí být spínána pĜes tranzistor. 5.6. Tlaþítka Tlaþítka slouží pro pĜivolávání výtahu. Šest tlaþítek je pĜipojeno na piny P2.2 – P2.7 Ĝídícího mikroprocesoru. Stiskem obr.6 – zapojení tlaþítka je pĜímo na port pĜivedena log1 (5V) . PĜi uvolnČní tlaþítka segmentu „a“ zajišĢuje log0 (0V) tzv. pull-down rezistor 5,6kȍ pĜipojující pin na zem. 5.7. LED V celé šachtČ výtahu je celkem 12 signalizaþních LED. V každém patĜe jedna þervená a jedna zelená. Pro úsporu pinĤ mikroprocesoru je každá dvojice ovládána jen jedním pinem portu 3 –viz obr.7. Log 1 otvírá pĜes rezistor R1 NPN tranzistor T1 a rozsvící tím þervenou LED. T2 je zavĜený. V pĜípadČ log0 se naopak otvírá T2 a T1 se zavĜe. Možná vás pĜekvapila rozdílná hodnota R1 a R2. To je dáno tím, že v pĜípadČ log1 se uplatní pull-up rezistor ve vnitĜní struktuĜe procesoru (cca 40kȍ). To znamená RB=R1+RPULL-UP. Tranzistor T3 pak slouží k rozsvícení nebo zhasnutí LED a je spoleþný pro všech 6 dvojic. Všech 12 LED tedy využívá pouze 7 pinĤ procesoru. obr.7-zapojení signalizaþních LED 5.8. Elektronika v kabinČ Elektronika v kabinČ zprostĜedkovává komunikaci mezi uživatelem v kabinČ a celým Ĝídícím systémem výtahu. Základem je mikroprocesor, který komunikuje s hlavním procesorem prostĜednictvím sériové linky. Osm tlaþítek a displej jsou pĜipojeny k pinĤm procesoru obdobnČ jako tyto periférie ve výtahové šachtČ. Signalizaþní LED jsou pĜipojeny pĜímo, každá k jednomu pinu. Reproduktor pro generování tónu je ovládán jedním pinem pĜes PNP tranzistor ve spínacím režimu. Celá elektronika vþetnČ tlaþítek, displeje i LED je osazena na jedné DPS, která je pĜizpĤsobená pro montáž do kabiny. Reproduktor je vyveden a pĜipevnČn na spodní þást kabiny. - 17 - © Copyright, Martin Kresta 2008 5.9. OdĤvodnČní použitých souþástek Zdroje: C1 2200µF – Slouží pro vyhlazení usmČrnČného napČtí v pĜípadČ napájení stĜídavým napČtím. C2,C3 100ȘF – Filtrace VF rušení (hodnotu udává výrobce) C4 100 µF – K pokrytí proudových špiþek napájeného zaĜízení. Elektronická pojistka : Celé zapojení, vþetnČ hodnot použitých souþástek, bylo pĜevzato z již neexistující webové stránky. Tranzistor T4 pracuje ve spínacím režimu2, proto byl vybrán tranzistor s velkým zesílením BC847C (h21min = 400). Rb je zvolen pouze 1kȍ aby se T4 i pĜi malém UBE bezpeþnČ otevĜel a fungoval jako tlaþítko. OK1 je optoþlen KP4010-B s velmi vysokým þinitelem CTR ( k úplnému otevĜení dochází již pĜi vstupním proudu cca 3mA), to je dĤležité, aby mohl být optoþlen spínán pĜímo s mikroprocesoru. NapČĢový supervisor: Obvod TL7705 byl vybrán jako dostupné Ĝešení automatického resetu. Ostatní souþástky udává výrobce v katalogovém listu obvodu. Elektrický pohon: Obvod L293D mi doporuþil ing.Nálevka, zapojen byl dle katalogového listu. Jako inventor logických úrovní slouží obvod 74LS04. Motor byl vybrán z nabídky GM elektronic. Displej: Pro zobrazování polohy kabiny je použit LED displej se spoleþnou anodou BS A344 - RD .Jedním segmentem teþe proud IS cca 6mA, a vzniká na nČm úbytek US cca 2V. Od toho je odvozena hodnota R2 . R2 = U R 2 U CC − U S 5−2 = = = 83,3 R 2 = 80Ω I R2 6 ⋅ IS 6 ⋅ 0,006 Tranzistor T1, BC857C pracuje v spínacím režimu. Maximální hodnota RB je vypoþtena dle následujícího vztahu: RB max = 5 − 0,6 4,4 U RB U CC − U BE = = = = 48888 RB max = 48kΩ 6 ⋅ 0,006 9 ⋅10 −5 I CE I B min 400 h21min RB byl zvolen 10kȍ. 2 jako elektronický spínaþ nahrazuje tlaþítko S1 - 18 - © Copyright, Martin Kresta 2008 LED: Pro dostateþný svit LED je vhodný proud cca 15mA. Od této hodnoty jsou dopoþteny hodnoty odporĤ.Všechny tranzistory pracují ve spínacím režimu, proto jsou použity NPNBC847C a PNP-BC857C. Odpory R1,R2 a R5 jsou odpory omezující bázový proud, a jsou vypoþteny z následujících vzathĤ: RB1max = U RB1 U CC − U BE 5 − 0,6 4,4 = = = = 117333 RB1max = 117 kΩ 0,015 3,75 ⋅ 10 −5 I CE I B min 400 h21min RB1 byl zvolen 50kȍ, Protože je však tranzistor T1 spínán log1 , uplatní se pull-up rezistor ve vnitĜní struktuĜe mikroprocesoru. Tento rezistor má cca 40kȍ a je Ĝazen v sérii s R1, proto výsledná hodnota rezistoru R1 je 10kȍ. RB 2 max = U RB 2 U CC − U BE 5 − 0,6 4,4 = = = = 117333 RB 2 max = 117 kΩ 0,015 3,75 ⋅ 10 −5 I CE I B min 400 h21min R2 byl zvolen 56kȍ. RB 5 max = U RB 5 U CC − U BE 5 − 0 ,6 4,4 = = = = 19555 RB 2 max = 20 kΩ 6 ⋅ 0,015 2.25 ⋅ 10 − 4 I CE I B min 400 h21 min R5 byl zvolen 10kȍ. Pro omezení proudu diodami slouží odpory R3 a R4 R= U R U CC − U D 5−2 = = = 200 R3, R 4 = 180 Ω IR ID 0,015 - 19 - © Copyright, Martin Kresta 2008 6. SOFTWARE Výtah pĜedstavuje složité zĜízení, jehož þinnost je nutno elektronicky Ĝídit. K tomuto Ĝízení se nejlépe hodí bućto programovatelný automat PLC nebo mikroprocesor. Tyto moderní systémy dnes zcela vytlaþují zastaralé reléové obvody. UmožĖují bezpeþnČjší, pĜesnČjší a komfortnČjší Ĝešení a celkovČ zvyšují efektivitu využití výtahu. Pro Ĝízení modelu výtahu byl vybrán mikroprocesor AT89S52 firmy Atmel. V zhledem k zachování co nejmenších rozmČrĤ a snadnČjšímu návrhu DPS bylo poušito SMD pouzdro TQFP44. Hlavními kritérii pro výbČr byla podpora ISP programování, podpora sériové komunikace a dostateþný poþet digitálních vstupnČ/výstupních bran. Pro konkrétnČjší pĜedstavu uvádím tabulku se základními údaji. 6.1. Atmel AT89C51 AT89S52 Firma Atmel vznikla roku 1984 a zabývá se vývojem a výrobou mikroprocesorĤ. AT89S52 je klonem dobĜe známého CISC procesoru AT89C51, jehož základ tvoĜí jádro 8051 vyvinuté firmou Intel. Jak je z tabulky patrné, nová varianta má vČtší pamČĢ, podporuje ISP programování a má pĜidán jeden 16-ti bitový þasovaþ, který lze použít v módu „baudrate generator“ jako generátor hodin pro sériovou linku. Zkratka ISP – In System Programing znamená možnost sériového programování pomocí 4 pinĤ pĜímo v aplikaci. Toto programování je velmi rychlé a pro programování SMD procesorĤ témČĜ nezbytné. 6.2. Program Flash pamČĢ [kB] USB ISP EEPROM RAM [B] fMAX [MHz] UCC [V] I/O pinĤ UART 16-bitový þasovaþ Watchdog SPI A/D Convertor 4 ne ne ne 128 24 4,0-5,5 32 1x 8 ne ano ne 256 33 4,0-5,5 32 1x 2x ne ne ne 3x ano ne ne K tomu aby mohl být procesor použit v konkrétní aplikaci, musí do nČj být nahrán program. Program je nČjakým zpĤsobem zaznamenaný postup operací, které se mají vykonat, tedy algoritmus. Ke grafickému znázornČní algoritmu programu slouží takzvaný vývojový diagram. Vývojový diagram používá pro znázornČní jednotlivých dílþích operací speciální symboly a šipky, které znázorĖují posloupnost. Programy pro mikroprocesory mohou být psány bućto v jazyce symbolických adres (assembleru) nebo ve vyšších programovacích jazycích, napĜ. C. Takto napsaný zdrojový kód je kompilerem pĜeložen do strojového kódu, HEX souboru. Tento HEX soubor se pak do mikroprocesoru nahraje prostĜednictvím programátoru pĜipojeného k PC pĜes sériové rozhraní COM nebo USB. Konkrétní program, který zajišĢuje Ĝízení modelu výtahu je pomČrnČ složitou posloupností a k jeho snadnČjšímu pochopení mohou pomoci vývojové diagramy a komentovaný výpis programu. Model je Ĝízen dvojicí výše uvedených procesorĤ. Hlavní Ĝídící procesor je oznaþen jako MASTER a procesor v kabinČ jako SLAVE. Základem celého programu jsou dva registry "ap" (aktuální poloha) a "zp" (žádaná poloha), které v sobČ nesou þíselnou hodnotu (1-6), která odpovídá aktuální/žádané poloze výtahu. Úkolem programu je uvádČt obsah registrĤ do rovnováhy a tím vlastnČ plnit požadavek obsluhy. Program musí dodržovat urþitá pravidla a zároveĖ komunikovat se všemi perifériemi. Výsledný program se tedy skládá z mnoha rutin a subrutin, které jsou volány z urþitých míst posloupnosti. Jsou to napĜíklad rutiny, které zajišĢují tyto funkce: komunikace s þidly, komunikace s displejem, komunikace s - 20 - © Copyright, Martin Kresta 2008 tlaþítky, plynulý rozjezd, plynulé zastavení, generování tónu, kodér pro odesílaná data sériovým kanálem, dekodér pro data pĜijata sériovým kanálem, obsluha sériové linky apod. U obou mikroprocesorĤ je použit jako generátor hodinového signálu krystal s frekvencí 4,0MHz. 6.3. MASTER Program v procesoru MASTER funguje následovnČ –viz obr.8. Po hardwarovém resetu se provedou potĜebná nastavení pĜerušovacího systému, sériové linky a þasovaþĤ. Dále se nastaví výchozí hodnoty nČkterých registrĤ a pĜíznakových bitĤ. Po nastavení zaþíná samotný program návČštím start. Nejprve se testují þidla pro zjištČní aktuální polohy kabiny ap (rutina sentest). NáslednČ je zjištČná pozice zobrazena na displejích ve všech patrech (rutina zobraz) a odeslána sériovou linkou do procesoru SLAVE (rutina posli). Nyní je systém pĜipraven a þeká na 1. požadavek. V cyklu se testují všechna pĜivolávací tlaþítka tak dlouho, dokud není nČkteré stisknuto, nebo není jiný požadavek (rutina buttest). Výsledkem této rutiny je žádaná poloha zp. Tento požadavek se vyhodnocuje v rutinČ lift. Ta má za úkol dopravit kabinu výtahu do požadovaného patra a konþí v okamžiku zastavení kabiny. Následuje kontrola zastavení v patĜe, otevĜení dveĜí a þekání na nástup/výstup (4 sekundy). To zajišĢuje rutina ready. Po ukonþení této rutiny se vždy kontroluje, zda-li není v pamČti uložen nČjaký požadavek. Pokud ano, je požadavek z pamČti vyhodnocen, v opaþném pĜípadČ se program vrací na návČští start. V pĜerušovacím systému procesoru je povoleno pĜerušení od sériové linky a od timeru 0. Souþástí programu jsou tedy i obsluhy tČchto pĜerušení. 6.3.1. Nastavení . $ ) / , 0 1 , "/22 22 " + 1 3 ! Po resetu je nutné nakonfigurovat hardwarové periférie procesoru. K tomu slouží takzvané speciální funkþní registry (dále jen SFR). Tyto registry jsou 8-mi bitová pamČĢová místa. NČkteré registry jsou adresovatelné bajtovČ i bitovČ, nČkteré pouze bajtovČ. $4% Registr IE povoluje pĜerušení od sériové linky a od timeru 0. PĜestože je použit i timer 2, jeho pĜerušení nesmí být povoleno. Registry PCON a SCON slouží k nastavení sériového kanálu, registr TMOD nastavuje mód timeru 0. Pro urþení pĜenosové rychlosti sériové linky je použit timer 2 v režimu ! baudrategenerator. Pomocí registrĤ TH2,TL2,RCAP2H a RCAP2L je nastavena výchozí a obnovovací hodnota pro horní a spodní bajt 16-ti bitového timeru. Do tČchto registrĤ je nastavena hodnota FFCCHEX což odpovídá pĜenosové rychlostí cca 2400 B/s. PĜíznakové bity pamČti, pohybu, otevĜených dveĜí apod. jsou vynulovány. obr.8-program MASTER - 21 - © Copyright, Martin Kresta 2008 6.3.2. Test þidel Testování þidel zajišĢuje rutina sentest, která postupnČ testuje þidla v patrech 0-5. K tomu je použito vČtvení s pomocí instrukce jnb. Je-li kabina v patĜe, do registru ap se nastaví pĜíslušná hodnota (1-6) a pĜíznakový bit vpatre. Pokud žádné þidlo v daný okamžik nezaznamenalo kabinu, tedy všechny þidla mají na svém výstupu log1, rutina sentest, konþí aniž by zmČnila obsah ap. Pouze bit vpatre je vynulován. 6.3.3. Test tlaþítek Testování pĜivolávacích tlaþítek obstarává rutina buttest. ZároveĖ však taky kontroluje, zda není uložen požadavek v pamČti, anebo nebyl-li zadán požadavek z kabiny. Testování se provádí v cyklu tak dlouho, dokud nenastane požadavek. Nejprve se testují pĜíznaky požadavku z kabiny a požadavku v pamČti (F a F1), je-li jeden z tČchto pĜíznakĤ nastaven, opustí se cyklus, pĜíznak je vynulován a rutina konþí (požadavek již byl vložen do registru zp).Jestliže oba tyto pĜíznaky jsou v log0, cyklus pokraþuje testováním všech tlaþítek. Je-li nČkteré tlaþítko stisknuto, opustí se cyklus a do registru zp se nastaví pĜíslušná hodnota (1-6). Po opuštČní tohoto cyklu a následném ukonþení rutiny buttest vždy následuje rutina lift, která pĜedstavuje vyhodnocování požadavku. Proto cyklus nemĤže být ukonþen dĜíve, než je znám požadavek. 6.3.4. Vyhodnocení požadavku Vyhodnocení požadavku je po stránce softwaru nejkomplikovanČjší þástí. ZajišĢuje jej rutina lift, která obsahuje ještČ další takzvané subrutiny. Do rutiny lift vstupují registry ap a zp, a jejím cílem je uvést obsahy tČchto registrĤ do rovnováhy. Nejprve se znovu volá rutina sentest pro ovČĜení aktuální polohy. Dále se rozsvítí všechny þervené signalizaþní LED. Nyní se pomocí instrukce subb odeþte od obsahu registru ap obsah registru zp. Je-li výsledek nulový3, rutina konþí. Je-li výsledek záporný, je nastaven smČr pohybu nahoru, pokud je výsledek kladný, smČr pohybu je dolĤ. Nyní se zavolá subrutina jed pro plynulý rozjezd kabiny. BČhem jízdy se v cyklu testují þidla rutinou sentest a sleduje se zmČna aktuální polohy. Pokud je tato zmČna zaznamenána je nový údaj zobrazen, odeslán do kabiny a porovnává se s žádanou polohou. Dále se v cyklu kontroluje správný smČr pohybu a testují se tlaþítka subrutinou savetest4. Je-li zaznamenán špatný smČr pohybu kabiny, pomocí rutiny otocka se provede zmČna smČru. Rovnají-li se obsahy registru ap a zp, cyklus konþí. Následuje rutina stuj pro plynulé zastavení. Nakonec se provede zobrazení aktuální pozice na displeji a tím rutina lift konþí. Subrutina otocka pouze volá rutinu stuj, neguje bit smer a volá rutinu jed. 6.3.5. Nástup/výstup Po zastavení kabiny v patĜe se provádí rutina ready. Nejprve se opČt provede rutina sentest, kontroluje se správnost zastavení v patĜe a nastaví se pĜíznakové bity libit a rebit. PĜíznak libit rozsvČcuje displej v kabinČ a pĜíznak rebit otvírá v kabinČ dveĜe. V pĜípadČ zastavení kabiny mezi patry je tedy rebit vynulován, a je nastaven další pĜíznakový bit gobit který rozsvítí v kabinČ þervenou LED, tedy dveĜe zĤstanou zajištČny. Po nastavení 3 4 Zamená, že se kabina právČ nachází v patĜe,do kterého byla pĜivolána PĜípadný požadavek je uložen do pamČti. - 22 - © Copyright, Martin Kresta 2008 pĜíznakových bitĤ se volá rutina posli pro odeslání aktuálního stavu do kabiny. Pokraþuje se otevĜením pĜíslušných dveĜí ve výtahové šachtČ. To zajišĢuje rutina ledka. Dále je volána rutina wait4 pro þasové zpoždČní cca 4sekundy. Protože je toto zpoždČní realizováno þasovaþem, mohou být bČhem tohoto zpoždČní testovány tlaþítka. Po 4 sekundách se všechny piny ovládající LED nastaví do log1 (svítí þervená LED), avšak zároveĖ jsou pinem lede všechny LED zhasnuty. Nastavení všech LED do þervené se tedy provádí pouze proto, aby pĜi pĜíštím rozsvícení již nemusely být nastavovány. NáslednČ se vynulují pĜíznaky gobit a rebit viz.výše, a aktuální stav je odeslán. Tím rutina ready konþí. 6.3.6. Kontrola pamČti BČhem vyhodnocování požadavku, tedy bČhem trvání rutiny lift a ready, mohl být do pamČti uložen nový požadavek, nebo bČhem vykonávání rutiny ready mohl pĜijít nový požadavek obsluhy z kabiny. Proto po vyhodnocení aktuálního požadavku jsou tyto možnosti kontrolovány. Testuje se bit membit1, je-li nastaven, znamená, že v pamČti je požadavek a pokraþuje se na návČští loading. Pokud není nastaven skáþe se na návČští start a celý cyklus se opakuje. Za návČštím loading se ještČ kontroluje pĜíznak požadavku z kabiny F , je-li tento pĜíznak nastaven, následuje skok na start, protože požadavek obsluhy z kabiny má vyšší prioritu než požadavek v pamČti. Pokud je pĜíznak F nulový, provede se pĜesun hodnoty z první pamČĢové pozice mp1 do registru zp. PĜípadná druhá a tĜetí pamČĢová pozice se pĜesunou do nižší úrovnČ a uvolní se tak tĜetí pamČĢová pozice mp3. NáslednČ se nastaví pĜíznak F1 a skáþe se na start. 6.3.7. Odeslání dat Rutina která zajišĢuje odeslání dat z mikroprocesoru MASTER do mikroprocesoru SLAVE sériovou linkou je nazvána posli. Odesílá se vždy jen jeden bajt, který v sobČ nese aktuální informace o pozici kabiny a o stavu výtahu. Odesílá se registr statbyte2, který se nachází v bitovČ adresovatelné oblasti pamČti. Do dolní tetrády tohoto bajtu je vložena hodnota z registru ap a horní tetráda obsahuje tĜi pĜíznakové bity. PĜíznak pohybu kabiny gf2 je nastavován podle pĜíznaku gobit. PĜíznak otevĜení dveĜí kabiny rf2 podle pĜíznaku rebit a pĜíznak rozsvícení displeje v kabinČ lf2 podle pĜíznaku libit. Tyto bity jsou nastaveny prostĜednictvím carry a instrukce mov. Nakonec se statbyte2 pĜesune do registru sbuf a automaticky se zahájí pĜenos. Tím rutina posli konþí. 6.3.8. Plynulý rozjezd Plynulý rozjezd je realizován pomocí softwarovČ generovaného PFM signálu, který spíná napájení motoru. To znamená, že v cyklu je vždy generována konstantní doba log1 na výstupu, která se stĜídá s postupnČ se zkracující dobou log0. To má za následek plynulé zvyšování otáþek motoru. Nakonec je doba log0 zanedbatelnČ krátká a motor tedy dosahuje plných otáþek. Nejprve se v rutinČ vynuluje bit fuse, þímž se deaktivuje elektronická pojistka. Nastaví se pĜíznak gobit a zavolá se rutina posli. Do registru zero se nastaví výchozí hodnota 200D . Nyní zaþíná cyklus ve kterém se nejprve nastaví bit mot, který ovládá motor, poté se volá subrutina on. Po návratu z této subrutiny se dekrementuje registr zero, jeho hodnota se zkopíruje do pomocné promČnné pom a vynuluje se bit mot. Nakonec se volá subrutina off , která zajišĢuje dobu generování nízké úrovnČ. Poté se celý cyklus opakuje. Cyklus se opakuje tak dlouho dokud není v registru zero nulová hodnota. Dále se aktivuje pojistka nastavením bitu fuse a rutina jed konþí. - 23 - © Copyright, Martin Kresta 2008 6.3.9. Plynulé zastavení BrzdČní je realizováno podobným cyklem jako rozjezd, pouze doba tOFF se nezkracuje, ale prodlužuje. To je dáno tím, že v cyklu se registr zero inkrementuje z hodnoty 0 až na hodnotu 255D. PĜed vstupem do cyklu se opČt deaktivuje pojistka a souþasnČ se kontroluje zda již není kabina v klidu. Po ukonþení cyklu se vynuluje pĜíznak gobit a aktivuje se elektronická pojistka. Rutina stuj konþí. 6.3.10. Subrutina on a off Subrutina on slouží k þasování konstantní doby tON. K tomu je použita þasová smyþka s použitím instrukce djnz. Do registru puls je vložena hodnota 166D, která je postupnČ dekrementována. Což znamená zpoždČní 1ms. Doba tON. tedy trvá 1milisekundu. Subrutina off funguje podobnČ, avšak doba tOFF je závislá na tom, pokolikáté se cyklus provádí, proto do této subrutiny vstupuje promČnná pom a ta je pak ve smyþce dekrementována. Pro „protažení“ je ve smyþce navíc zaĜazeno zpoždČní 6 cyklĤ. Takže jedno opakování cyklu ve kterém se jednou dekrementuje registr pom trvá 8 cyklĤ, což je pĜi použitém krystalu s frekvencí 4,0MHz doba 24µs. Subrutina off je tedy schopna realizovat zpoždČní o délce 24µs až 6,12ms. Tento rozsah se pĜi testování ukázal jako nejvhodnČjší pro optimální prĤbČh rychlosti rozjezdu a zastavení. 6.3.11. Zobrazení Zobrazení Pro zobrazení aktuální Port: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 polohy kabiny slouží rutina Segment: NC a b c d e f g zobraz. Obsah registru ap je 0 1 0 0 0 0 0 0 1 þíselnČ zobrazen na 7-mi 1 1 1 0 0 1 1 1 1 segmentovém displeji. V rutinČ se 2 1 0 0 1 0 0 1 0 hodnota registru ap pĜesune do 3 1 0 0 0 0 1 1 0 registru R0 a postupnČ se 4 1 1 0 0 1 1 0 0 porovnává s hodnotami 0-6 a 5 1 0 1 0 0 1 0 0 v pĜípadČ rovnosti je do registru E 1 0 1 1 0 0 0 0 disp vložena hodnota která odpovídá rozsvícení pĜíslušných segmentĤ.viz tab. Pro hodnoty 0,7-255 je zobrazeno „E“, které znaþí chybné zjištČní polohy. Pro hodnoty 1-6, je zobrazeno 0-5, pro nulté až páté patro. 6.3.12. Subrutina ledka Tato subrutina je velmi primitivní. PostupnČ otestuje všechna þidla a v patĜe, ve kterém se nachází kabina zhasne þervenou a rozsvítí zelenou LED. Po otestování všech þidel rutina konþí. V pĜípadČ, že kabina nebyla zaznamenána v žádném patĜe, svítí všechny þervené LED. 6.3.13. ýasování 4 sekundy ýasování doby otevĜených dveĜí je realizováno pomocí timeru 0 v módu 1. Do 16-ti bitového þasovaþe je vložena nula, tato nula je postupnČ inkrementována a k pĜerušení dochází v okamžiku pĜeteþení, tedy po dosažení hodnoty 65 535. Je tedy nastavena nejvČtší možná doba þasování cca 200ms. Do registru time se vloží hodnota 20, povolí se pĜerušení od - 24 - © Copyright, Martin Kresta 2008 timeru 0 a timer 0 se spustí. Dále se v cyklu opakuje volání subrutiny savetest a kontrola nenulovosti promČnné time. PromČnná time se dekrementuje v obsluze pĜerušení timeru 0. Cyklus konþí v okamžiku kdy obsah promČnné time je roven nule, tím konþí i subrutina wait4. 6.3.14. Subrutina savetest Tato subrutina slouží k testování tlaþítek v dobČ vyhodnocování požadavku a k uložení pĜípadného dalšího požadavku do správné pamČĢové pozice. Nejprve se postupnČ testují všechna pĜivolávací tlaþítka, není-li žádné tlaþítko stisknuto rutina konþí, Je-li nČkteré stisknuto, podobnČ jako v rutinČ buttest se provede pĜiĜazení pĜíslušné hodnoty do registru mp který pĜedstavuje jakousi mezipamČĢ. NáslednČ se testují pĜíznakové bity membit1, membit2 a membit3. Jsou-li všechny tyto bity nastaveny na log1, známená to, že jsou již všechny 3 pamČĢové pozice obsazené, a rutina konþí. Jinak je hodnota z mezipamČti uložena do nejnižší volné pamČĢové pozice. PĜed uložením, se však kontroluje, zda hodnota v mezipamČti není shodná s hodnotami v registrech ap, zp nebo s nižšími pamČĢovými pozicemi, tedy registry mp1 a mp2. V pĜípadČ, že se tato hodnota shoduje alespoĖ s jednou zmínČnou hodnotou, požadavek není uložen a rutina konþí. Touto kontrolou je tedy zajištČno, že do pamČti nemĤže být uložen požadavek shodný s aktuální polohou kabiny, s žádanou polohou kabiny, ani nemĤže být v pamČti uložen stejný požadavek ve více pamČĢových pozicích. PĜestože je rutina pomČrnČ obsáhlá, nejdelší možný þas jaký mĤže být vykonávaná je cca 105µs. Jelikož je perioda pĜerušení timeru 0 nastavena na 200ms, nehrozí, aby v rámci vykonáváni této rutiny nastalo pĜerušení 2x a následkem toho došlo k chybČ ve vykonávání programu. 6.3.15. Obsluha pĜerušení Timeru 0 Po pĜerušení od Timeru 0 ukazuje program counter na adresu 0BHEX na této adrese v pamČti programu je zapsána instrukce skok na návČští timing. Za tímto návČštím následuje obsluha pĜerušení. Nejprve se provede pomocí instrukce push záloha obsahu akumulátoru do stacku, zakáže se pĜerušení od sériové linky a zastaví se timer 0. Dále se provede vynulování registru þasovaþe a dekrementuje se hodnota v registru time. Je-li po této dekrementaci hodnota již nulová, zakáže se pĜerušení od timeru 0, povolí se pĜerušení od sériové linky, a pomocí instrukce pop se provede obnovení hodnoty akumulátoru. V opaþném pĜípadČ se spustí timer 0, povolí se pĜerušení od sériové linky, a provede se obnovení hodnoty akumulátoru. PĜíkazem reti pak obsluha pĜerušení konþí. 6.3.16. Obsluha pĜerušení sériové linky Vektorem pĜerušení sériové linky je adresa 23HEX. Z této adresy program counter skáþe na návČští uart kde je zapsána obsluha pĜerušení. V obsluze se nejprve provede záloha obsahu akumulátoru a zakáže se pĜerušení od timeru 0. Nyní se zjišĢuje, zda pĜerušení vzniklo vlivem ukonþení vysílání, nebo pĜíjmu. V pĜípadČ vysílání se pouze vynuluje pĜíznak pĜerušení ti, povolí se pĜerušení od timeru 0, obnoví se akumulátor a obsluha pĜerušení konþí. V pĜípadČ pĜíjmu dat se pĜijatá data zkopírují z registru sbuf do registru statbyte1. Není-li kabina v daném okamžiku v pohybu, nastaví se pĜíznak požadavku z kabiny F. Dále se dolní tetráda obsahu registru statbyte1 zkopíruje do registru zp a nastaví tím žádanou polohu. Do registru time se vloží hodnota 1, proto aby se ukonþilo zpoždČní a požadavek byl ihned vyhodnocen. Poté se vynuluje pĜíznak pĜerušení ri a povolí se pĜerušení od timeru 0. Obsluha pĜerušení pak konþí obnovou akumulátoru. - 25 - © Copyright, Martin Kresta 2008 Celý program byl vytvoĜen v jazyku symbolických adres assembleru, ve freeware verzi programu KEIL µvision2. Tento program obsahuje debugger pro odladČní programu. Výsledný okomentovaný ASM soubor naleznete na pĜiloženém CD-ROM. Okomentovaný výpis a vývojové diagramy jsou v pĜíloze. - 26 - © Copyright, Martin Kresta 2008 6.4. SLAVE Mikroprocesor SLAVE má za úkol komunikovat s obsluhou v kabinČ prostĜednictvím signalizaþních LED, displeje, reproduktoru a tlaþítek. Získaná data odesílá do procesoru MASTER sériovou linkou. Po resetu se opČt nejprve provede nastavení potĜebných speciálních funkþních registrĤ a výchozích hodnot nČkterých promČnných. V celém programu se pak v cyklu opakují jen dvČ rutiny. Rutina zobraz – ta je naprosto stejná jako v programu MASTER, proto nebude znovu popisována a rutina buttest pro testování tlaþítek. Dále program obsahuje obsluhy pĜerušení od sériové linky a timeru 0. NejzajímavČjší þástí programu je zĜejmČ generování tónĤ. Pro generování tónu s plynule kolísající frekvencí je použit timer 0 v módu 2, tedy 8-mi bitový þasovaþ v režimu autoreload. Nastavení Po resetu jsou nastaveny SFR a nČkteré promČnné. Nastavení sériové linky a timeru 2 je naprosto stejné jako u mikroprocesoru MASTER, aby byl zajištČn bezpeþnČ fungující pĜenos dat. Pouze v registru TMOD se nastaví timer 0 do módu 2. Dále je do registru ap vložena výchozí hodnota 0, pĜíznak libit je vynulován a pĜíznak tibit nastaven. 6.4.1. Testování tlaþítek Testování probíhá podobnČ jako u procesoru MASTER. PostupnČ se testují všechna tlaþítka. Pro odstranČní zákmitĤ tlaþítek je po stisku i po uvolnČní tlaþítka realizováno zpoždČní subrutinou antikmit cca 5ms. Je-li stisknuto nČkteré z tlaþítek 0-5, do registru zp se vloží pĜíslušná hodnota a pomocí subrutiny posli se odešle do Ĝídícího mikroprocesoru. Tím rutina buttest konþí. PĜi stisku tlaþítka STOP se do registru zp se vloží hodnota z registru ap a po odeslání tím zpĤsobí okamžité zastavení kabiny. Je-li stisknuto tlaþítko ZVONEK, nastaví se do registru TH0 hodnota 255- výchozí hodnota pro timer 0. Dále se do akumulátoru a do registru reload vloží hodnota 1. Ta urþuje frekvenci pulsování generovaného tónu. Nyní se spustí timer 0 a þeká se na uvolnČní tlaþítka. NáslednČ je timer 0 zastaven a rutina konþí. 6.4.2. Odeslání dat Subrutina posli je velmi primitivní. PĜed odesláním se kontroluje zda bylo ukonþeno pĜedchozí vysílání, pĜípadnČ se þeká na toto ukonþení. K tomu je použit pomocný pĜíznak tibit – pĜíznak ukonþeného vysílání. Je-li tedy tento bit nastaven pokraþuje se jeho vynulováním a následnČ se zahájení pĜenos zkopírováním obsahu registru zp do registru sbuf a subrutina konþí. 6.4.3. Subrutina antikmit Pro odstranČní zákmitĤ tlaþítek je realizováno zpoždČní cca 5ms pomocí 3 dekrementaþních nevnoĜených smyþek. ýas 5ms se pĜi testování ukázal jako dostateþný. Do promČnné kmit je vložena hodnota 255, která je postupnČ dekrementována až do hodnoty nula. To se provede celkem 3x což pĜi použitém krystalu 4,0MHz vytvoĜí zpoždČní onČch 5ms. - 27 - © Copyright, Martin Kresta 2008 6.4.4. Obsluha pĜerušení sériové linky Vektorem pĜerušení sériové linky je adresa 23HEX. Z této adresy program counter skáþe stejnČ jako u procesoru MASTER na návČští uart kde je zapsána obsluha pĜerušení. V pĜípadČ pĜerušení vlivem ukonþeného vysílání se pouze vynuluje pĜíznak pĜerušení ti, nastaví se pĜíznak tibit a obsluha konþí. V pĜípadČ pĜíjmu se zkopírují pĜijatá data z registru sbuf do registru statbyte1 a volá se subrutina dekoder pro vyhodnocení právČ pĜijatých dat. Registr statbyte1 se nachází v bitovČ adresovatelné oblasti pamČti, aby bylo možno zjišĢovat stavy jednotlivých pĜíznakových bitĤ. Po ukonþení subrutiny dekoder se vynuluje pĜíznak pĜerušení ri a obsluha pĜerušení konþí. 6.4.5. Subrutina dekoder V této rutinČ se vyhodnocují pĜijatá data a v rámci této rutiny je mimo jiné také generován tón otevĜení dveĜí. Nejprve se dolní tetráda pĜijatého bajtu, tedy dolní tetráda registru statbyte1 zkopíruje do registru ap. Dále se pracuje s pĜíznaky obsažené v horní tetrádČ pĜijatého bajtu. Dle pĜíznaku gf1 se nastaví bit red, ovládající þervenou LED, avšak vzhledem k tomu že LED svítí pĜi log0, je tento bit nejprve negován. Dále se dle rf1 nastaví bit green, opČt s pĜedchozí negací. Posledním pĜíznakem je lf1 dle jehož negace se nastaví bit libit, který ovládá napájení displeje. V pĜípadČ, že pĜi dekódování byla rozsvícena zelená LED, tedy byl vynulován bit green provede se generování tónĤ „a“ a „d“ pomocí subrutin ah a d a subrutina dekoder konþí. Jinak rutina konþí bez generování tónu. 6.4.6. Generování tónĤ Pro akustickou signalizaci dojezdu kabiny do patra a otevĜení dveĜí jsou generovány tóny „a“ a „d“, každý po dobu cca 0,5sekundy. Generování je zajištČno v cyklu s podmínkou na konci. V tomto cyklu se stĜídavČ nastavuje a nuluje bit (pin) piez, který je zapojen na reproduktor. Mezi tČmito zmČnami je realizováno zpoždČní, které urþí délku pĤlperiody signálu a tím i výšku tónu. ZpoždČní je realizováno jednou þi dvČma dekrementaþními smyþkami. V cyklu se také inkrementuje poþítadlo, a po dosažení urþité hodnoty je cyklus ukonþen. Tím je dána doba trvání tónu. Konkrétní hodnoty zpoždČní jsou odvozeny od frekvence tónu „a1“ – 440Hz a tónu „d1“ – 296Hz. 6.4.7. Obsluha pĜerušení timeru 0 Timer 0 slouží pro generování tónu zvonku. Perioda pĜerušení tohoto timeru udává pĤlperiodu výsledného tónu. Obsluha pĜerušení je zapsána za návČštím ton kam je program counter pĜesmČrován z adresy 0BHEX. V obsluze se nejprve neguje bit piez , dekrementuje se akumulátor a v pĜípadČ že po této dekrementaci není nulový, obsluha konþí. V konkrétním pĜípadČ se v akumulátoru nachází hodnota 1, takže po dekrementaci bude vždy 0. V tom pĜípadČ obsluha nekonþí a provede se zvýšení nebo snížení obsahu registru TH0, þímž se mČní perioda pĜerušení timeru 0 a tím i frekvence generovaného tónu. Obsah TH0 nabývá hodnot 0-100. V každé obsluze pĜerušení se hodnota mČní o 1. Po dosažení maximální hodnoty (100) se hodnota snižuje až do dosažení minima(0), pak se opČt zaþne zvyšovat. Viz.vývojový diagram v pĜíloze. - 28 - © Copyright, Martin Kresta 2008 6.5. Výpoþty þasových prodlev Jako zdroj hodinového signálu pro mikroprocesory jsou použity krystaly s frekvencí 4.0Mhz, to odpovídá periodČ 0,25µsec. Délka cyklu je dána jako dvanáctinásobek periody hodinového signálu. V našem pĜípadČ tedy 3µsec. Od této hodnoty se pak odvíjí výpoþty þasových prodlev. t………….zpoždČní n…………poþet cyklĤ Antikmit: Požadované zpoždČní: 5ms t 5,0 ⋅10 −3 n= = = 1666cyklĤ 3 ⋅10 −6 3 ⋅10 −6 Instrukce DJNZ trvá 2 cykly, potĜebujeme tedy instrukci provést 833x. 1666 = 833 x 2 To zajistíme tak, že 3x za sebou dekrementujeme þíslo 255 až do 0. 3 ⋅ 255 = 765 ≈ 833 Skuteþná hodnota jen pĜibližnČ odpovídá požadované, avšak je zcela dostaþující. Skuteþná doba zpoždČní: 4,608ms Wait 4(Timing) Požadované zpoždČní: 4s ZpoždČní 4 sekundy je realizováno pomocí 16-ti bitového timeru. Maximální možná doba þasována tímto timerem je 196,6ms. Proto se v každém pĜerušení dekrementuje registr, jehož výchozí hodnota je 20. Až je tento registr nulový, konþí þasování. t = 20 ⋅ 196,6 = 3932 ms Skuteþná doba zpoždČní: 3,932s - 29 - © Copyright, Martin Kresta 2008 7. ZÁVċR Výsledkem práce je dle pĤvodního plánu funkþní model osobního výtahu. PĜi realizaci bylo použito mnoho znalostí získaných z odborných pĜedmČtĤ nebo samostudiem. Model dobĜe ukazuje možnosti Ĝízení mikroprocesorem s jádrem 8051. PĜi vývoji byla nejvČtším problémem realizace plynulých rozjezdĤ a zastavení. K tomu je možno využít pĜechodového dČje RC þlánku s vhodnou þasovou konstantou IJ a vhodného napČĢového sledovaþe. Toto Ĝešení je sice jednoduché po stránce softwaru Ĝídícího procesoru, avšak není možná pozdČjší softwarová regulace prĤbČhu zastavování þi rozjíždČní. Proto bylo zvoleno modernČjší a efektivnČjší Ĝízení pomocí PFM. V pĤvodním testovacím zapojení byl motor spínán výkonovým tranzistorem pĜímo z procesoru, avšak vzhledem k indukþní zátČži motoru byl tento systém nestabilní. Tento problém byl vyĜešen použitím obvodu L293D, který je pro toto použití urþen, umožĖuje Ĝízení digitálními signály a svou vnitĜní strukturou eliminuje negativní vliv proudových špiþek vinutí motoru. Schéma elektronické pojistky bylo pĜevzato z již neexistující webové stránky. 8. LITERATURA PĜi vývoji elektroniky i softwaru jsem þerpal z katalogových listĤ použitých souþástek a z webových stránek týkajících se této problematiky. Katalogové listy poskytují výrobci souþástek zdarma a jsou k dispozici na pĜiloženém CD-ROM. MORAWIEC, Martin. Kurz assembler, [online] <http://programujte.com/index.php?akce=clanek&cl=2005071301-assembler-uvod> MORAWIEC, Martin. Keil-práce v programu, [online] <http://programujte.com/index.php?akce=clanek&cl=2005121003-keil-prace-v-programu> HANKOVEC, David. Popis 8051, [online] <http://www.dhservis.cz/popis8051.htm> BEZSTAROSTI, JiĜí. Jednochip-to je ono! [online] <http://www.bezstarosti.cz/elec/jednochip/jednochip.htm> ATMEL. Code examples [online] <http://www.atmel.com/dyn/products/tools.asp?family_id=604#1535> - 30 - © Copyright, Martin Kresta 2008 9. PěÍLOHY 9.1. Blokové schéma elektroniky ; . " 5 " < 789#: 1 ; 7=5 $6% $" :- - ; > > " : "?75: ;=15. 1 > : "?75: . .551 - 31 - © Copyright, Martin Kresta 2008 9.2. Elektrotechnická schémata 9.2.1. MASTER (Schéma) - 32 - © Copyright, Martin Kresta 2008 9.2.2. SLAVE (schéma) - 33 - © Copyright, Martin Kresta 2008 9.2.3. Výpis souþástek MASTER: R1-R6………………5k6 R7,R16-R22………..10k R9-R15……………..80R C1,C2……………….33pF T1-T8……………….BC857C Q1…………………..4,000MHz IC1………………….AT89S52 IC2………………….L293D IC3………………….74LS04 SLAVE: R1-R8………………5k6 R9,R18,R19.………..180R R10-R16……………510R R17…………………10k C1,C2……………….33pF T1…………………...BC857C Q1…………………...4,000MHz IC1…………………..AT89S52 DISP………………...HD-A342RD LED1………………..LED2x5mm,zelená LED2………………..LED2x5mm,þervená TL1-TL8…………….tlaþítko, bez aretace, modré - 34 - © Copyright, Martin Kresta 2008 9.2.4. Zdroj (schéma) - 35 - © Copyright, Martin Kresta 2008 9.2.5. Control (schéma) - 36 - © Copyright, Martin Kresta 2008 9.2.6. Sensor (schéma) - 37 - © Copyright, Martin Kresta 2008 9.3. Desky plošných spojĤ 9.3.1. MASTER (DPS) Top: - 38 - © Copyright, Martin Kresta 2008 Bottom: - 39 - © Copyright, Martin Kresta 2008 9.3.2. SLAVE (DPS) Top: Bottom: - 40 - © Copyright, Martin Kresta 2008 9.3.3. Zdroj (DPS) Top: Bottom: - 41 - © Copyright, Martin Kresta 2008 9.3.4. Control (DPS) Top: Bottom: 9.3.5. Sensor (DPS) Top: Bottom: - 42 - © Copyright, Martin Kresta 2008 9.4. Vývojové diagramy Použité symboly: x=y……….……pĜiĜazení x=\x\…………...negace bitu x==y…………...porovnání (x je rovno y) x!=y……………porovnání (x je rĤzné od y) 9.4.1. Vývojový diagram MASTER . $ @. % % %A - B CDDC - 43 - © Copyright, Martin Kresta 2008 9.4.2. Rutina sentest ECDDF DC E8DDF D8 E#DDF D# E(DDF D( E>DDF D> E<DDF D< DC .51 - 44 - © Copyright, Martin Kresta 2008 9.4.3. Rutina zobraz .FD .FGDF DCH< .FGDC DC89 .FGD8 D8FH .FGD# DC(< .FGD( DC#( .FGD> D8F( .FGD< DC<( DCH< .51 - 45 - © Copyright, Martin Kresta 2008 9.4.4. Rutina posli (MASTER) 8D -B8D- B8D B8D BD 8 .51 - 46 - © Copyright, Martin Kresta 2008 9.4.5. Rutina buttest (MASTER) @DDC @DF @CDDC @CDF DC ECDDC DC E8DDC D8 E#DDC D# E(DDC D( E>DDC D> E<DDC D< .51 - 47 - © Copyright, Martin Kresta 2008 9.4.6. Rutina lift B D DF DG DI DDF D JF DC DG DF " " DI JF DDC .51 DDF - 48 - © Copyright, Martin Kresta 2008 9.4.7. Rutina ready DF DC DF DDF DF -DC K( DCCCC CCFF3 #D#LL DC DF .51 - 49 - © Copyright, Martin Kresta 2008 9.4.8. Subrutina jed " B DF -DC D8FF DC DDF B DC D IC .51 D DF BB - 50 - © Copyright, Martin Kresta 2008 9.4.9. Subrutina stuj " B DF DDF DF DC D ?C DD8>> -DF D DF B DC DF .51 BB - 51 - © Copyright, Martin Kresta 2008 9.4.10. Subrutiny on a off BB DC<< CD8 DIC CD CIC DDF CDDF .51 DIC DDF .51 - 52 - © Copyright, Martin Kresta 2008 9.4.11. Subrutina ledka ECDDF ECDF E8DDF E8DF E#DDF E#DF E(DDF E(DF E>DDF E>DF E<DDF E<DF .51 - 53 - © Copyright, Martin Kresta 2008 9.4.12. Subrutina wait4 K( 1MFDF 17FDF D8F 51FDC 1.FDC DDF .51 - 54 - © Copyright, Martin Kresta 2008 9.4.13. Subrutina savetest – 1.þást ECDDC DC E8DDC D8 E#DDC D# E(DDC D( E>DDC D> E<DDC D< C .51 - 55 - © Copyright, Martin Kresta 2008 9.4.14. Subrutina savetest – 2.þást C CDDF GD GD CDC CD DDC CDDF GD GD DDC GDC 8DC 8D CDDF GD GD DDC GDC GD8 #DC #D .51 - 56 - © Copyright, Martin Kresta 2008 9.4.15. Obsluha pĜerušení sériové linky (MASTER) DN 51FDF .ODDC CDB 1ODDC DDC @DC 1ODF 51FDC D PP FFFF CCCC3 DC .ODF 51FDC JD .51O - 57 - © Copyright, Martin Kresta 2008 9.4.16. Obsluha pĜerušení timeru 0 (MASTER) - DN 5DF 1.FDF 1MFDF 1MFDF D IC GDF 5DC 51FDF 5DC 1.FDC JD .51O - 58 - © Copyright, Martin Kresta 2008 9.4.17. Rutina Buttest (SLAVE) ECDDC ECDDC E8DDC E8DDC E#DDC E#DDC DC D8 D# E(DDC E(DDC E>DDC E>DDC E<DDC E<DDC D( D> D< DDC 1MFD8>> DC DC DDC 1.FDC DDC DDC 1.FDF D .51 - 59 - © Copyright, Martin Kresta 2008 9.4.18. Subrutina antikmit D8>> DIC DDF D8>> DIC DDF D8>> DIC DDF .51 - 60 - © Copyright, Martin Kresta 2008 9.4.19. Subrutina posli (SLAVE) DDF DF BD .51 - 61 - © Copyright, Martin Kresta 2008 9.4.20. Obsluha pĜerušení sériové linky (SLAVE) .ODDC CDB 1ODDC 1ODF DC .ODF .51O - 62 - © Copyright, Martin Kresta 2008 9.4.21. Subrutina dekoder D CPP FFFF CCCC3 DQ-BCQ - DQBCQ DQBCQ - DDF .51 - 63 - © Copyright, Martin Kresta 2008 9.4.22. Subrutiny ah a d DF DF DF DF DC DCR9 D8>> D8>> D IC CD8C CD8C D IC D IC DDF DDF CD CIC CD CIC CDDF CDDF DDF D?C DC DCR9 D IC DDF D?C DD88F DDC>F .51 .51 - 64 - © Copyright, Martin Kresta 2008 9.4.23. Obsluha pĜerušení timeru 0 (SLAVE) DQ Q DIC DDF B-DDC B-DC B-DF 1MFD1MF?C 1MFD1MFIC 1MFDDCFF 1MFDDF D .51O - 65 - © Copyright, Martin Kresta 2008 9.5. Zdrojové kódy MASTER a SLAVE - 66 - © Copyright, Martin Kresta 2008 E:\master52.6.asm ;program MASTER pro Ĝízení výtahu pro procesor AT89S52 SE. ;21.10.2007 zaþátek tvorby ;16.11.2007 pĜidán obslužný software pro UART s použítím timeru 2, baudrate = 2400b ;18.1.2008 pĜidáno ovládaní el. pojistky, a þasování pomoci timeru ;19.1.2008 pĜidání rutiny "savetest" - umožĖuje zapamatovat si až 3 patra. ;20.1.2008 komentáĜ zdrojového kódu ;autor: Martin Kresta ;web: www.vytah.chytrak.cz ;email: [email protected] ;icq: 215-360-010 ;-------------------------------------;---deklarace portĤ--disp data p1 ;7mi segmentový displej, port 1 led_1 bit p3.2 ;LED v pĜízemí, port 3.2 led_2 bit p3.3 ;LED v 1. patĜe, port 3.3 led_3 bit p3.4 ;LED v 2. patĜe, port 3.4 led_4 bit p3.5 ;LED v 3. patĜe, port 3.5 led_5 bit p3.6 ;LED v 4. patĜe, port 3.6 led_6 bit p3.7 ;LED v 5. patĜe, port 3.7 lede bit p2.0 ;zapne/vypne všechny LED, port 2.0 cid_1 bit p0.0 ;þidlo v pĜízemí, port 0.0 cid_2 bit p0.1 ;þidlo v 1. patĜe, port 0.1 cid_3 bit p0.2 ;þidlo v 2. patĜe, port 0.2 cid_4 bit p0.3 ;þidlo v 3. patĜe, port 0.3 cid_5 bit p0.4 ;þidlo v 4. patĜe, port 0.4 cid_6 bit p0.5 ;þidlo v 5. patĜe, port 0.5 smer bit p0.6 ;nastaví smČr otáþek motoru, port 0.6 mot bit p0.7 ;zapne/vypne napČtí na motor, port 0.7 tla_1 bit p2.2 ;tlaþítko v pĜízemí, port 2.2 tla_2 bit p2.3 ;tlaþítko v 1. patĜe, port 2.3 tla_3 bit p2.4 ;tlaþítko v 2. patĜe, port 2.4 tla_4 bit p2.5 ;tlaþítko v 3. patĜe, port 2.5 tla_5 bit p2.6 ;tlaþítko v 4. patĜe, port 2.6 tla_6 bit p2.7 ;tlaþítko v 5. patĜe, port 2.7 fuse bit p2.1 ;aktivuje/deaktivuje elektronickou pojistku ;---deklarace promČnných--ap data 30h ;aktuální poloha, adresa 30h zp data 31h ;žádaná poloha, adresa 31h mp data 32h ;poloha v pamČti, addresa 32h mp1 data 33h ;poloha v mezipamČti 1, adresa 33h mp2 data 34h ;poloha v mezipamČti 2, adresa 34h mp3 data 35h ;poloha v mezipamČti 3, adresa 35h puls data 36h ;doba generování log1 (PFM), adresa 36h zero data 37h ;doba generování log0 (PFM), adresa 37h zero1 data 38h ;zkracování doby log0 (PFM), adresa 38h pom data 39h ;pomocná prmČnná (PFM), adresa 39h time data 40h ;doba setrvání v režimu ready (wait3), adresa 4 0h cyk data 41h zdrzi data 42h ;---deklarace SFR--T2MOD RCAP2L RCAP2H TL2 TH2 T2CON TF2 EXF2 RCLK TCLK EXEN2 TR2 C_T2 CP_RL2 F Page: 1 DATA DATA DATA DATA DATA DATA BIT BIT BIT BIT BIT BIT BIT BIT BIT 0C9h 0CAH 0CBH 0CCH 0CDH 0C8H 0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8H 0D5H ; ; ; ; ; ; ;SFR pro timer 2 v režimu baudrate generator ; ;zkopírováno z www.atmel.com ; ; ; ; ; ; E:\master52.6.asm minus bit PSW.7 ;pĜíznak záporného výsledku odþítání, PSW.7 ;---deklarace promČnných v bitovČ adresovatelné oblasti pamČti-;---statbyte1--statbyte1 data 22h ;stavový registr 1 (UART), adresa 22h gf1 bit 14h ;pĜíznak pohybu, 14h rf1 bit 15h ;pĜíznak režimu ready, 15h ;---statbyte2--statbyte2 data 24h ;stavový registr 2 (UART), adresa 24h gf2 bit 24h ;pĜíznak pohybu, 24h rf2 bit 25h ;pĜíznak režimu ready, 25h lf2 bit 26h ;pĜíznak rozsvícení displeje v kabinČ, 26h rebit bit 00h ;pĜíznak režimu ready, 00h gobit bit 01h ;pĜíznak pohybu, 01h libit bit 02h ;pĜíznak rozsvícení displeje v kabinČ, 02h vpatre bit 03h ;pĜíznak zastavení v patĜe, 03h ;---pĜíznaky pamČti--membit1 bit 04h ;pĜíznak obsazené 1. pamČĢové pozice membit2 bit 05h ;pĜíznak obsazené 2. pamČĢové pozice membit3 bit 06h ;pĜíznak obsazené 3. pamČĢové pozice F1 bit 07h ;pĜíznak naplnČní zp z pamČti ;--------------------------------------;--- zdrojový kód--;--------------------------------------org 0h ; jmp setting ;po resetu pokraþuj na setting org 23h ; jmp uart ;po pĜerušení od sériové linky skoþ na uart org 0bh ; jmp timing ;po pĜerušení od þasovaþe 0 skoþ na timing org 30h ; ;--------------------------------------setting: mov ie,#92h ;povolí pĜerušení od UARTu a þasovaþe 0 mov pcon,#00h ;nuluje PCON => poloviþní pĜenosová rychlost mov scon,#50h ;nastaví UART do módu 1 a povolí pĜíjem mov tmod,#01h ;nastavení þasovaþe 0 do módu 1 ;---nastavení timeru 2, zkopírováno z www.atmel.com--ANL T2CON,#0F0h ;EXEN2=0; TR2=0; C/T2#=0; CP/RL2#=0; ORL T2CON,#30h ;RCLK = 1; TCLK=1 MOV TH2,#0FFh ;init value MOV TL2,#0CCh ;init value MOV RCAP2H,#0FFh ;reload value, 2400 Bds at 4.0MHz MOV RCAP2L,#0CCh ;reload value, 2400 Bds at 4.0MHz SETB TR2 ;Timer 2 run ;------------------------------clr setb clr mov acall clr clr clr clr clr setb fuse lede mot ap,#00h posli gobit rebit membit1 membit2 membit3 fuse ;deaktivace el. pojistky ;rozsvícení všech ledek ;zasatvení motoru ;nastavení ap = 0 ( pĜízemí ) acall acall acall acall acall sentest zobraz posli buttest lift ;test þidel ;zobrazení ;odeslání ;test tlaþítek ;pohyb kabiny ;vynulování pĜíznaku gobit ;vynulování pĜíznaku rebit ;vynulování pĜíznaku membit1 ;vynulování pĜíznaku membit2 ;vynulování pĜíznaku membit3 ;aktivace el. pojistky start: Page: 2 E:\master52.6.asm acall jb jmp ready membit1,loading start ;kabina pĜipravena ;je-li nČco v pamČti,skoþ na "loading" ;jinak skoþ na start loading: jb F,start ;je-li požadavek z kabiny, skoþ na "start" clr membit1 ;vynuluj pĜíznak obsazené 1. pamČĢové pozice mov zp,mp1 ;pĜesuĖ hodnotu z pamČti do zp mov c,membit2 ; mov membit1,c ;kopie bitu pĜes c ,membit2 => membit1 mov mp1,mp2 ;pĜesun pamČĢové pozice mp2 => mp1 mov c,membit3 ; mov membit2,c ;kopie bitu pĜes c ,membit3 => membit2 mov mp2,mp3 ;pĜesun pamČĢové pozice mp3 => mp2 clr membit3 ;vynuluj pĜíznak obsazené 3. pamČĢové pozice setb F1 ;nastav pĜíznak požadavku z pamČti jmp start ; skoþ na "start" ;----------------------------------------------------;---rutina pro testování þidel--- (vrací ap, nebo {} ) ;----------------------------------------------------sentest: jnb cid_1,one ;je-li kabina v pĜízemí, skoþ na "one" jnb cid_2,two ;je-li kabina v 1.patĜe, skoþ na "two" jnb cid_3,three ;je-li kabina v 2.patĜe, skoþ na "three" jnb cid_4,four ;je-li kabina v 3.patĜe, skoþ na "four" jnb cid_5,five ;je-li kabina v 4.patĜe, skoþ na "five" jnb cid_6,six ;je-li kabina v 5.patĜe, skoþ na "six" ret ;návrat z rutiny one: mov ap,#01h ;do ap vlož hodnotu 01 (pĜízemí) setb vpatre ;nastav pĜíznak kabiny v patĜe ret ;návrat z rutiny two: mov ap,#02h ;do ap vlož hodnotu 02 (1.patro) setb vpatre ;nastav pĜíznak kabiny v patĜe ret ;návrat z rutiny three: mov ap,#03h ;do ap vlož hodnotu 03 (2.patro) setb vpatre ;nastav pĜíznak kabiny v patĜe ret ;návrat z rutiny four: mov ap,#04h ;do ap vlož hodnotu 04 (3.patro) setb vpatre ;nastav pĜíznak kabiny v patĜe ret ;návrat z rutiny five: mov ap,#05h ;do ap vlož hodnotu 05 (4.patro) setb vpatre ;nastav pĜíznak kabiny v patĜe ret ;návrat z rutiny six: mov ap,#06h ;do ap vlož hodnotu 06 (5.patro) setb vpatre ;nastav pĜíznak kabiny v patĜe ret ;---------------------------------------------------------------------------------;---rutina pro testování tlaþítek--- (trvá tak dlouho dokud není požadavek) ;---------------------------------------------------------------------------------buttest: repete: jb F,flag ;je-li požadavek z kabiny, skoþ na "flag" jb F1,flag1 ;je-li požadavek z pamČti, skoþ na "flag1" jb tla_1,jedna ;je-li stisknuto tla_1, skoþ na "jedna" jb tla_2,dva ;je-li stisknuto tla_2, skoþ na "dva" jb tla_3,tri ;je-li stisknuto tla_3, skoþ na "tri" jb tla_4,ctyri ;je-li stisknuto tla_4, skoþ na "ctyri" jb tla_5,pet ;je-li stisknuto tla_5, skoþ na "pet" jb tla_6,sest ;je-li stisknuto tla_6, skoþ na "sest" jmp repete ;nebyl-li žádný požadavek,skoþ na "repete" jedna: dva: tri: Page: 3 mov ret mov ret mov ret zp,#01h zp,#02h zp,#03h ;do ap vlož hodnotu 01 (pĜízemí) ;návrat z rutiny ;do ap vlož hodnotu 02 (1.patro) ;návrat z rutiny ;do ap vlož hodnotu 03 (2.patro) ;návrat z rutiny E:\master52.6.asm ctyri: mov zp,#04h ;do ap vlož hodnotu 04 (3.patro) ret ;návrat z rutiny pet: mov zp,#05h ;do ap vlož hodnotu 05 (4.patro) ret ;návrat z rutiny sest: mov zp,#06h ;do ap vlož hodnotu 05 (5.patro) ret ;návrat z rutiny flag: clr F ;vynuluj pĜíznak F setb libit ;nastav pĜízank rozsvícení displeje v kabinČ ret ;návrat z rutiny flag1: clr F1 ;vynuluj pĜíznak F1 setb libit ;nastav pĜízank rozsvícení displeje v kabinČ ret ;návrat z rutiny ;----------------------------------------------------------;---rutina pro pohyb kabiny---(trvá tak dlouho dokud zp!=ap) ;----------------------------------------------------------lift: acall sentest ;test þidel clr lede ;rozsvítí všechny LED (þervené) mov a,ap ;pĜesun ap => akumulátor subb a,zp ;odeþte ap-zp jz ok ;pokud ap=zp, skoþ na "ok" jb minus,up ;pokud ap<zp, skoþ na "up" down: clr acall smer jed ;nastav smČr otáþek motoru dolĤ ;rozjezd mov subb jb jnb a,ap a,zp minus,kontrola minus,kontrola2 ;pĜesun ap => akumulátor ;odeþte ap-zp ;pokud ap<zp, skoþ na "kontrola" ;pokud ap>zp, skoþ na "kontrola2" mov acall cjne acall mov cjne acall jmp a,ap sentest a,ap,zmena savetest a,ap a,zp,cont stuj ok ;pĜesun ap => akumulátor ;test þidel ;pokud byla zmČna ap, skoþ na "calling" ;savetest ;provnej ap a zp, ;když ap!=zp vrat se na "cont" ;brzda ;skoþ na "ok" kontrola: jb call jmp smer,res otocka res ;jede-li správným smČrem, skoþ na "res" ;jinak zavolej otocka ;skoþ na "res" kontrola2: jnb call jmp smer,res otocka res ;jede-li správným smČrem, skoþ na "res" ;jinak zavolej otocka ;skoþ na "res" acall acall mov cjne acall zobraz posli a,ap a,zp,cont stuj ;zobraz ;odeslání ;provnej ap a zp, ;když ap!=zp vrat se na "cont" ;brzda acall ret zobraz ;zobrazení ;návrat z rutiny setb acall jmp smer jed cont ;nastav smČr otáþek motoru nahoru ;rozjezd ;skoþ na "cont" cont: res: zmena: ok: up: Page: 4 E:\master52.6.asm ;----------------------------------------------------;---subrutiny pro plynulý rozjezd a zastavení (PFM)--;----------------------------------------------------jed: clr fuse ;deaktivace el. pojistky setb gobit ;nastavení pĜíznaku pohybu acall posli ;odeslání mov zero,#200d ;pĜesun 200 => zero cykl: setb mov jz dec mov acall clr acall jmp mot a,zero jede zero pom,zero on mot off cykl ;pĜipojení napČtí na motor ;pĜesun zero => akumulátor ;je-li zero == 0, skoþ na "jede" ;decrementuj zero ;pĜesun zero => pom ;doba generování impulsu log1 na motor ;odpojení napČtí na motor ;doba generování impulsu log0 na motor ;skoþ na "cykl" jede: setb fuse ;aktivace el. pojistky ret ;návrat ze subrutiny ;--------------------------------------stuj: clr fuse ;deaktivace el. pojistky jnb mot,stoji ;je-li motor odpojen od napČtí, skoþ na "stojí" mov zero,#00d ;pĜesun 200 => zero cykl1: setb inc mot zero ;pĜipojení napČtí na motor ;incrementuj zero mov cjne a,zero a,#255d,dal ;pĜesun zero => akumulátor ;je-li zero rĤzné od 0, skoþ na "dal" clr clr setb ret gobit mot fuse ;vynuluj pĜíznak pohybu ;odpoj napČtí na motor ;aktivuj el. pojistku ;návrat ze subrutiny mov acall clr acall jmp pom,zero on mot off cykl1 ;pĜesun zero => pom ;doba generování impulsu log1 na motor ;odpojení napČtí na motor ;doba generování impulsu log0 na motor ;skoþ na "cykl1" dale: stoji: dal: ;--------------------------------------on: mov puls,#166d ;konstantní þasová smyþka djnz puls,$ ;doba generování impulsu log1 na motor ret ;návrat ze subrutiny off: mov zero1,#2d ;zpoždČní závislé na hodnotČ reg."zero" djnz zero1,$ ;udává dobu generování djnz pom,off ;impulsu log0 na motor, skáþe na "off" ret ;návrat ze subrutiny ;----------------------------------------------;---rutina pro zobrazení na 7mi seg. displeji--;----------------------------------------------zobraz: mov R0,ap ;pĜesun ap => R0 cjne R0,#00h,dal1 ;když R0!=0, skoþ na "dal1" Page: 5 E:\master52.6.asm mov disp,#176d ret dal1: cjne R0,#01h,dal2 mov disp,#81h ret dal2: cjne R0,#02h,dal3 mov disp,#207d ret dal3: cjne R0,#03h,dal4 mov disp,#92h ret dal4: cjne R0,#04h,dal5 mov disp,#86h ret dal5: cjne R0,#05h,dal6 mov disp,#204d ret dal6: cjne R0,#06h,error mov disp,#164d ret error: mov disp,#176d ret ;---------------------------;---rutina pro režim ready--;---------------------------ready: clr vpatre acall sentest setb rebit setb libit jnb vpatre,mimo acall posli ;napíše na displej "E" ;návrat z rutiny ;když R0!=1, skoþ na "dal2" ;napíše na displej "0" ;návrat z rutiny ;když R0!=2, skoþ na "dal3" ;napíše na displej "1" ;návrat z rutiny ;když R0!=3, skoþ na "dal4" ;napíše na displej "2" ;návrat z rutiny ;když R0!=4, skoþ na "dal5" ;napíše na displej "3" ;návrat z rutiny ;když R0!=5, skoþ na "dal6" ;napíše na displej "4" ;návrat z rutiny ;když R0!=6, skoþ na "error" ;napíše na displej "5" ;návrat z rutiny ;napíše na displej "E" ;návrat z rutiny ;vynuluje pĜíznak kabiny v patĜe ;test þidel ;nastaví pĜíznak režimu ready ;nastav pĜíznak rozsvicení displeje v kabinČ ;jestliže kabina není v patĜe, skoþ na "mimo" ;odeslání pokrac: acall acall mov orl setb clr clr acall ret ledka wait4 a,#11111100b p3,a lede rebit libit posli ;zavolej "ledka" ;zavolej "wait4" ;skrze acumulator nastav ;všechny led do 1 = þervená ;zhasni všechny LED ;vynuluje pĜíznak režimu ready ;vynuluje pĜíznak rozsvicení displeje v kabinČ ;odeslání ;návrat z rutiny mimo: clr rebit ;vynuluje pĜíznak režimu setb gobit ;nastav pĜíznak pohybu acall posli ;odeslání jmp pokrac ;skoþ na "pokrac" ;-----------------------------------------------------------;---subrutina pro nastavení pĜíšlušné LED do log0 = zelená--;-----------------------------------------------------------ledka: jnb cid_1,o ;je-li kabina v pĜízemí, jnb cid_2,tw ;je-li kabina v 1.patĜe, jnb cid_3,th ;je-li kabina v 2.patĜe, jnb cid_4,fo ;je-li kabina v 3.patĜe, jnb cid_5,fv ;je-li kabina v 4.patĜe, jnb cid_6,si ;je-li kabina v 5.patĜe, ret ;návrat ze subrutiny o: tw: th: fo: Page: 6 clr ret clr ret clr ret clr led_1 led_2 led_3 led_4 ;v pĜízemí ;návrat ze ;v 1.patĜe ;návrat ze ;v 2.patĜe ;návrat ze ;v 3.patĜe ready skoþ skoþ skoþ skoþ skoþ skoþ rozsvítí zelenou subrutiny rozsvítí zelenou subrutiny rozsvítí zelenou subrutiny rozsvítí zelenou na na na na na na LED LED LED LED "o" "tw" "th" "fo" "fv" "si" E:\master52.6.asm ret clr led_5 ret si: clr led_6 ret ;--------------------------------;---subrutina pro þasování 4sec--;--------------------------------wait4: setb et0 mov th0,#0d mov tl0,#0d mov time,#20d setb tr0 fv: ;návrat ze ;v 4.patĜe ;návrat ze ;v 5.patĜe ;návrat ze ;povolí ;pĜesun ;pĜesun ;pĜesun ;spustí subrutiny rozsvítí zelenou LED subrutiny rozsvítí zelenou LED subrutiny pĜerušení od timeru 0 00 => TH0 00 => TL0 15 => time timer 0 memory: acall mov jz jmp savetest a,time uz memory ;savetest ;jestliže time == 0, ;skoþ na "uz" ;jinak skoþ na "memory" uz: ret ;návrat ze subrutiny ;------------------------------------------------------------;---subrutina pro testování tlaþítek bČhem plnČní požadavku--;------------------------------------------------------------savetest: jb tla_1,mem1 ;je-li stisknuto tla_1, jb tla_2,mem2 ;je-li stisknuto tla_2, jb tla_3,mem3 ;je-li stisknuto tla_3, jb tla_4,mem4 ;je-li stisknuto tla_4, jb tla_5,mem5 ;je-li stisknuto tla_5, jb tla_6,mem6 ;je-li stisknuto tla_6, ret ;návrat ze subrutiny mem1: mem2: mem3: mem4: mem5: mem6: mov jmp mov jmp mov jmp mov jmp mov jmp mov mp,#01h saving mp,#02h saving mp,#03h saving mp,#04h saving mp,#05h saving mp,#06h ;do mp vlož hodnotu ;skoþ na "saving" ;do mp vlož hodnotu ;skoþ na "saving" ;do mp vlož hodnotu ;skoþ na "saving" ;do mp vlož hodnotu ;skoþ na "saving" ;do mp vlož hodnotu ;skoþ na "saving" ;do mp vlož hodnotu skoþ skoþ skoþ skoþ skoþ skoþ na na na na na na mem1 mem2 mem3 mem4 mem5 mem6 01 (pĜízemí) 02 (1.patro) 03 (2.patro) 04 (3.patro) 05 (4.patro) 06 (5.patro) saving: jnb jnb jnb ret membit1,saving1 membit2,saving2 membit3,saving3 ;je-li volná 1.pam. pozice, skoþ na "saving1" ;je-li volná 2.pam. pozice, skoþ na "saving2" ;je-li volná 3.pam. pozice, skoþ na "saving3" mov cjne jb ret cjne ret setb mov ret a,mp a,ap,dif10 mot,dif10 ;je-li mp!=ap ;pak skoþ na "dif10" ;je-li kabina v pohybu, skoþ na "dif10" ;návrat ze subrutiny ;je-li mp!=zp, skoþ na "dif11" ;návrat ze subrutiny ;nastav pĜíznak obsazené 1. pamČĢové pozice ;pĜesun mp => mp1 ;návrat ze subrutiny mov cjne jb a,mp a,ap,dif20 mot,dif20 saving1: dif10: dif11: a,zp,dif11 membit1 mp1,mp saving2: Page: 7 ;je-li mp!=ap ;pak skoþ na "dif20" ;je-li kabina v pohybu, skoþ na "dif20" E:\master52.6.asm dif20: dif21: dif22: ret cjne ret cjne ret setb mov ret a,zp,dif21 a,mp1,dif22 membit2 mp2,mp ;návrat ze subrutiny ;je-li mp!=zp, skoþ na "dif21" ;návrat ze subrutiny ;je-li mp!=mp1, skoþ na "dif22" ;návrat ze subrutiny ;nastav pĜíznak obsazené 2. pamČĢové pozice ;pĜesun mp => mp2 ;návrat ze subrutiny saving3: mov a,mp ;je-li mp!=ap cjne a,ap,dif30 ;pak skoþ na "dif30" jb mot,dif30 ;je-li kabina v pohybu, skoþ na "dif30" ret ;návrat ze subrutiny dif30: cjne a,zp,dif31 ;je-li mp!=zp, skoþ na "dif31" ret ;návrat ze subrutiny dif31: cjne a,mp1,dif32 ;je-li mp!=mp1, skoþ na "dif32" ret ;návrat ze subrutiny dif32: cjne a,mp2,dif33 ;je-li mp!=mp2, skoþ na "dif33" ret ;návrat ze subrutiny dif33: setb membit3 ;nastav pĜíznak obsazené 3. pamČĢové pozice mov mp3,mp ;pĜesun mp => mp3 ret ;návrat ze subrutiny ;-----------------------------------------------;---subrutina pro odeslání dat sériovou linkou--;-----------------------------------------------posli: mov statbyte2,ap ;pĜesun ap => statbyte2 mov c,gobit ; mov gf2,c ;pĜesun gobit => gf2 mov c,rebit ; mov rf2,c ;pĜesun rebit => rf2 mov c,libit ; mov lf2,c ;pĜesun libit => lf2 mov sbuf,statbyte2 ;pĜesun statbyte2 => sbuf (zahájení odesílání) ret ;návrat ze subrutiny ;--------------------------------------------;---subrutina pro zmČnu smČru otáþek motoru--;--------------------------------------------otocka: acall stuj ;zastavení cpl smer ;zmČna smČru otáþek motoru acall jed ;rozjezd ret ;návrat ze subrutiny ;----------------------------------;---obsluha pĜerušení od timeru 0--;----------------------------------timing: push acc clr es ;zakáže pĜerušení od sériové linky clr tr0 ;zastaví timer 0 mov th0,#0d ;pĜesun 00 => TH0 mov tl0,#0d ;pĜesun 00 => TL0 djnz time,estene ;dekrementuj time, je-li 0, skoþ na "estene" clr et0 ;zakáže pĜerušení od timeru 0 setb es ;povolí pĜerušení od sériové linky pop acc reti ;návrat z pĜerušení estene: setb tr0 ;spustí timer 0 setb es ;povolí pĜerušení od sériové linky pop acc reti ;návrat z pĜerušení ;---------------------------------------;---obsluha pĜerušení od sériové linky--;---------------------------------------uart: Page: 8 E:\master52.6.asm push clr jb jb acc et0 ri,prijem ti,vyslano mov jb setb statbyte1,sbuf mot,noF F ;pĜesun sbuf => statbyte1 mov anl mov clr mov setb pop reti a,#0fh a,statbyte1 zp,a ri time,#1h et0 acc ;pĜesun 0000 1111 => akumulátor ;logický souþin a = a*statbyte1 ;pĜesun akumulátor => zp ;vynuluje pĜíznak ri ;pĜesun 01 => time ;povolí pĜerušení od timeru 0 clr setb pop reti ti et0 acc ;zakáže pĜerušení od timeru 0 ;když ri = 1, pak skoþ na "prijem" ;když ti = 1, pak skoþ na "vyslano" prijem: ;nastav pĜíznak požadavku z kabiny noF: ;návrat z pĜerušení vyslano: end Page: 9 ;vynuluje pĜíznak ti ;povolí pĜerušení od timeru 0 ;návrat z pĜerušení ;konec zdrojového kódu E:\slave52.2.asm ;program pro Ĝízení výtahu SLAVE pro procesor AT89S52 SE. ;21.10.2007 zaþátek tvorby ;16.11.2007 pĜidán obslužný software pro UART s použítím timeru 2,baudrate = 2400b ;19.1.2008 úpravy v komunikaci, pamČĢ ;20.1.2008 komentáĜ zdrojového kódu ;autor: Martin Kresta ;web: www.vytah.chytrak.cz ;email: [email protected] ;icq: 215-360-010 ;-------------------------------------;---deklarace portĤ--disp data p0 ;7mi segmentový displej, port 0 green bit p1.1 ;zelená LED, port 1.1 red bit p1.2 ;þervená LED, port 1.2 tla_6 bit p2.0 ;tlaþítko pĜízemí, port 2.0 tla_5 bit p2.1 ;tlaþítko 1. patro, port 2.1 tla_4 bit p2.2 ;tlaþítko 2. patro, port 2.2 tla_3 bit p2.3 ;tlaþítko 3. patro, port 2.3 tla_2 bit p2.4 ;tlaþítko 4. patro, port 2.4 tla_1 bit p2.5 ;tlaþítko 5. patro, port 2.5 zvonek bit p2.6 ;tlaþítko zvonek, port 2.6 stop bit p2.7 ;tlaþítko stop, port 2.7 piez bit p3.7 ;pin ovládajíci piezomČníþ, port 3.7 libit bit p3.2 ;pin ovládající napájení displeje, port 3.2 ;---deklarace promČnných--ap data 30h ;aktuální poloha, adresa 30h zp data 31h ;žádaná poloha, adresa 31h kmit data 32h ;pomocná promČnná(antikmit), adresa 32h poc data 33h ;pomocná promČnná(melody), adresa 33h rel data 34h ;pomocná promČnná(melody), adresa 34h rel1 data 35h ;pomocná promČnná(melody), adresa 35h reload data 36h ;rychlost pulsování tónu, adresa 36(ton) ;---deklarace SFR--T2MOD DATA 0C9h ; RCAP2L DATA 0CAH ; RCAP2H DATA 0CBH ; TL2 DATA 0CCH ; TH2 DATA 0CDH ; T2CON DATA 0C8H ;SFR pro ovládání timeru 2 TF2 BIT 0CFH ;v režimu baudrate generator EXF2 BIT 0CEH ;zkopírováno z www.atmel.com RCLK BIT 0CDH ; TCLK BIT 0CCH ; EXEN2 BIT 0CBH ; TR2 BIT 0CAH ; C_T2 BIT 0C9H ; CP_RL2 BIT 0C8H ; ;---deklarace promČnných v bitovČ adresovatelné oblasti pamČti-;---statbyte1--statbyte1 data 22h ;stavový registr 1 (UART), adresa 22h gf1 bit 14h ;pĜíznak pohybu, 24h rf1 bit 15h ;pĜíznak režimu ready, 25h lf1 bit 16h ;pĜíznak rozsvícení displeje, 26h ;---statbyte2--statbyte2 data 24h ;stavový registr 2 (UART), adresa 24h gf2 bit 24h ;pĜíznak pohybu, 24h rf2 bit 25h ;pĜíznak režimu ready, 25h rebit tflag tibit bit bit bit 00h 02h 39h ;pĜíznak režimu ready ;pĜíznak ;pomocný pĜíznak ukonþeného vysílání ;--------------------------------------;--- zdrojový kód--Page: 1 E:\slave52.2.asm ;--------------------------------------org 0h ;po resetu jmp setting ;skoþ na "setting" org 23h ;po pĜerušení od sériové linky jmp uart ;skoþ na "uart" org 0bh ;po pĜerušení od timeru 0 jmp ton ;skoþ na "ton" org 30h ; ;--------------------------------------setting: mov ie,#92h ;povolí pĜerušení od UART a þasovaþe 0 mov pcon,#00h ;vynuluje registr PCON mov scon,#50h ;nastaví UART do módu 1 a povolí pĜíjem mov tmod,#2h ;nastavení þasovaþe 0 do módu 2 ;---nastavení timeru 2, zkopírováno z www.atmel.com--ANL T2CON,#0F0h ;EXEN2=0; TR2=0; C/T2#=0; CP/RL2#=0; ORL T2CON,#30h ;RCLK = 1; TCLK=1 MOV TH2,#0FFh ;init value MOV TL2,#0CCh ;init value MOV RCAP2H,#0FFh ;reload value, 2400 Bds at 4.0MHz MOV RCAP2L,#0CCh ;reload value, 2400 Bds at 4.0MHz SETB TR2 ;Timer 2 run ;------------------------------mov ap,#0d ;nastavení výchozí aktuální polohy => 0 setb tibit ;nasatví pĜíznak ukonþeného vysílání clr libit ;vynuluje pĜíznak rozsvícení displeje start: acall zobraz ;zobrazení acall buttest ;testování tlaþítek jmp start ;skoþ na "start" ;----------------------------------------------------;---rutina pro test a vyhodnocení požadavkĤ obsluhy--;----------------------------------------------------buttest: repete: jb tla_1,jedna ;je-li tlaþítko pĜízemí=1 skoþ na "jedna" jb tla_2,dva ;je-li tlaþítko 1.patro=1 skoþ na "dva" jb tla_3,tri ;je-li tlaþítko 2.patro=1 skoþ na "tri" jb tla_4,ctyri ;je-li tlaþítko 3.patro=1 skoþ na "ctyri" jb jb jb jb ret tla_5,pet tla_6,sest zvonek,crr stop,stopping ;je-li tlaþítko 4.patro=1 skoþ na "pet" ;je-li tlaþítko 5.patro=1 skoþ na "sest" ;je-li tlaþítko zvonek=1 skoþ na "crr" ;je-li tlaþítko stop=1 skoþ na "stopping" ;návrat z rutiny jedna: acall jb acall mov acall ret acall jb acall mov acall ret acall jb acall mov acall ;zpoždČní antikmit ;þeká na uvolnČní tlaþítka ;zpoždČní antikmit ;nastavení požadované hodnoty do zp ;odeslání poĜadavku do Ĝídícího procesoru ;návrat z rutiny ;zpoždČní antikmit ;þeká na uvolnČní tlaþítka ;zpoždČní antikmit ;nastavení požadované hodnoty do zp ;odeslání poĜadavku do Ĝídícího procesoru ;návrat z rutiny ;zpoždČní antikmit ;þeká na uvolnČní tlaþítka ;zpoždČní antikmit ;nastavení požadované hodnoty do zp ;odeslání poĜadavku do Ĝídícího procesoru dva: tri: Page: 2 antikmit tla_1,$ antikmit zp,#01h posli antikmit tla_2,$ antikmit zp,#02h posli antikmit tla_3,$ antikmit zp,#03h posli E:\slave52.2.asm ctyri: pet: sest: ret acall jb acall mov antikmit tla_4,$ antikmit zp,#04h acall ret acall jb acall mov acall ret acall jb acall mov posli acall ret posli mov mov mov setb jb clr ret th0,#255d a,#1d reload,#1d tr0 zvonek,$ tr0 antikmit tla_5,$ antikmit zp,#05h posli antikmit tla_6,$ antikmit zp,#06h ;návrat z rutiny ;zpoždČní antikmit ;þeká na uvolnČní tlaþítka ;zpoždČní antikmit ;nastavení požadované hodnoty do zp ;odeslání poĜadavku do Ĝídícího procesoru ;návrat z rutiny ;zpoždČní antikmit ;þeká na uvolnČní tlaþítka ;zpoždČní antikmit ;nastavení požadované hodnoty do zp ;odeslání poĜadavku do Ĝídícího procesoru ;návrat z rutiny ;zpoždČní antikmit ;þeká na uvolnČní tlaþítka ;zpoždČní antikmit ;nastavení požadované hodnoty do zp ;odeslání poĜadavku do Ĝídícího procesoru ;návrat z rutiny crr: ;nastavení výchozí hodnoty pro timer 0 ;nasatvení rychlosti pulsování tónu ;nasatvení rychlosti pulsování tónu ;spuštČní timeru 0 ;þeká na uvolnČní tlaþítka ;zastavení timeru 0 ;návrat z rutiny stopping: acall antikmit ;zpoždČní antikmit jb stop,$ ;þeká na uvolnČní tlaþítka acall antikmit ;zpoždČní antikmit mov zp,ap ;zp=ap acall posli ;odeslání poĜadavku do Ĝídícího procesoru ret ;návrat z rutiny ;-----------------------------------------------------------;---subrutina pro odeslání požadavku do Ĝídícího procesoru--;-----------------------------------------------------------posli: jnb tibit,$ ;þeká na ukonþení pĜedchozího vysílání clr tibit ;vynuluje pĜíznak ukonþeného vysílání mov sbuf,zp ;zahájí vysílání nového požadavku ret ;návrat ze subrutiny ;----------------------------------------------;---rutina pro zobrazení na 7mi seg. displeji--;----------------------------------------------zobraz: mov R0,ap ;pĜesun ap => R0 cjne R0,#00h,dal1 ;R0!=0, skoþ na "dal1" mov disp,#81h ;napíše na displej "0" ret ;návrat z rutiny dal1: cjne R0,#01h,dal2 ;R0!=1, skoþ na "dal2" mov disp,#81h ;napíše na displej "0" ret ;návrat z rutiny dal2: cjne R0,#02h,dal3 ;R0!=2, skoþ na "dal3" mov disp,#207d ;napíše na displej "1" ret ;návrat z rutiny dal3: cjne R0,#03h,dal4 ;R0!=3, skoþ na "dal4" mov disp,#92h ;napíše na displej "2" ret ;návrat z rutiny dal4: cjne R0,#04h,dal5 ;R0!=4, skoþ na "dal5" mov disp,#86h ;napíše na displej "3" ret ;návrat z rutiny dal5: cjne R0,#05h,dal6 ;R0!=5, skoþ na "dal6" mov disp,#204d ;napíše na displej "4" Page: 3 E:\slave52.2.asm ret ;návrat z rutiny cjne R0,#06h,error ;R0!=6, skoþ na "error" mov disp,#164d ;napíše na displej "5" ret ;návrat z rutiny error: mov disp,#176d ;napíše na displej "E" ret ;návrat z rutiny ;-----------------------------------------------------------------------------;---subrutina pro softwareové odstaranČní zákmitĤ tlaþítek---(zpoždČní cca 5ms) ;-----------------------------------------------------------------------------antikmit: mov kmit,#255d ;naplnČní registru pro dekrementování djnz kmit,$ ;postupná dekrementac registru (cca 1,5ms) mov kmit,#255d ;naplnČní registru pro dekrementování djnz kmit,$ ;postupná dekrementac registru (cca 1,5ms) mov kmit,#255d ;naplnČní registru pro dekrementování djnz kmit,$ ;postupná dekrementac registru (cca 1,5ms) ret ;návrat ze subrutiny ;---------------------------------------;---obsluha pĜerušení od sériové linky--;---------------------------------------uart: jb ri,prijem ;když ri = 1, pak skoý na "prijem" jb ti,vyslano ;když ti = 1, pak skoý na "vyslano" reti ;návrat z obsluhy pĜerušení dal6: prijem: mov acall clr reti statbyte1,sbuf dekoder ri ;pĜijatý bajt uloží do statbyte1 ;dekoduje pĜijatý bajt ;vynuluje priznak pĜijatého bajtu ;návrat z obsluhy pĜerušení clr setb reti ti tibit ;vynuluje pĜíznak ukonþení vysílání ;nastaví pĜíznak ukonþeného vysílání ;návrat z obsluhy pĜerušení mov anl mov mov cpl mov mov cpl mov mov cpl mov jnb ret a,#0fh a,statbyte1 ap,a c,gf1 c red,c c,rf1 c green,c c,lf1 c libit,c green,melody ;pomocí logického souþinu ;pĜesune dolní tetrádu pĜijatého bajtu ;do registru ap ;pĜeþte bit gf1 ;a jeho negaci ;vloží na pin red ;pĜeþte bit rf1 ;a jeho negaci ;vloží na pin green ;pĜeþte bit lf1 ;a jeho negaci ;loží na pin libit ;je-li green==1, skoþ na "melody" acall acall ret ah d ;zavolej rutinu pro generování tónu a ;zavolej rutinu pro generování tónu d ;návrat z rutiny mov poc,#0d ;vynuluje poþítadlo clr mov djnz inc setb mov djnz mov piez rel,#189d rel,$ poc piez rel,#189d rel,$ a,poc ;vynuluje pin ovládající piezomČniþ ;nastavení konstanty pro ;þasování periody dané délky(þasová smyþka) ;incrementace poþítadala ;nastaví pin ovládající piezomČniþ ;nastavení konstanty pro ;þasování periody dané délky(þasová smyþka) ;jestliže je poþítadlo vyslano: dekoder: melody: ah: ahx: Page: 4 E:\slave52.2.asm cjne ret a,#220d,ahx ;rĤzné od hodnoty 220, skoþ na "ahx" ;návrat z rutiny mov poc,#0d ;vynuluje poþítadlo d: dx: clr piez mov rel,#255d mov rel1,#21d djnz rel,$ djnz rel1,$ inc poc setb piez mov rel,#255d mov rel1,#21d djnz rel,$ djnz rel1,$ mov a,poc cjne a,#150d,dx ret ;----------------------------------;---obsluha pĜerušení od timeru 0--;----------------------------------ton: cpl piez dec a jz relo reti ;vynuluje pin ovládající piezomČniþ ;nastavení konstant pro ;generování periody ;dané délky ;(þasová smyþka) ;incrementace poþítadala ;nastaví pin ovládající piezomČniþ ;nastavení konstant pro ;generování periody ;dané délky ;(þasová smyþka) ;jestliže je poþítadlo ;rĤzné od hodnoty 150, skoþ na "dx" ;návrat z rutiny ;zneguje pin ovládající piezomČniþ ;dekrementuje hodnotu v akumulátoru ;a pokud je nulová, skoþí na "relo" ;návrat z obsluhy pĜerušení relo: jb tflag,incre ;je-li nastavan bit tflag, skoþ na "incre", ;jinak pokraþuj na "decre" clr dec mov jz mov reti tflag th0 a,th0 incre a,reload ;vynuluje "tflag" ;sníží TH0 =>zvýší frekvenci ;je-li TH0 = 0, ;skoþí na "incre" ;do akumulátoru naþte konstantu reload ;návrat z obsluhy pĜerušení setb inc mov cjne jmp tflag th0 a,th0 a,#100d,dale decre ;nastaví "tflag" ;zvýší TH0 =>sníží frekvenci ;je-li TH0 rĤzné od 100 ;skoþí na "dale" ;jinak skoþí na "decre" mov reti a,reload ;do akumulátoru naþte konstantu reload ;návrat z obsluhy pĜerušení decre: incre: dale: end Page: 5 ;konec zdrojového kódu
Podobné dokumenty
List1 Stránka 1 TYP,C,40 ZAVADA,C,40 OSAZENÍ,C,40 JVC
závitů na VN trafu. Poduška vadný fet IRF630(IRF740) ,tlumivka vypálená a kond.
modulátoru CL035 M51/400V, schema neodpovídá, jde na GND a na tlumivku.
Svod C50M/50V na PIN 57 TEA8659AN(klíčování...
PIC 12F675
Tento dokument je urþen k nekomerþnímu využití. Veškeré komerþní šíĜení, poĜizování kopií nebo pĜebírání jakékoli þásti textu je
bez pĜedchozího souhlasu zakázáno.
Informace jsou zveĜejnČny bez ohl...
BIG BUGS 1
Výslovnost je zjednodušena pro potřeby žáků 1. stupně. V případě
zájmu o přesnou výslovnost navštivte macmillandictionary.com
Podtržené slabiky nesou přízvuk (větší důraz, než první slabika).
ɜː = ...
stress management
uvedené události podle intenzity a délky þasu, kterou potĜebují k tomu, aby se té které
události pĜizpĤsobili, a to vše bez ohledu na to, zda tato událost byla þi nebyla žádoucí – vše
v prĤbČhu po...
Kontrolní otázky ke zkoušce MIP
Jak může být uspořádána paměťová matice pamětí o organizaci N x 8 bitů (např. 27256).
Paměťová buňka paměti ROM, EPROM, EEPROM, FLASH ROM. Čím se rozlišuje
informační obsah buňky pro log. 0 a log. ...