Dìjiny pøenosu Z dìjin vìdyzpráv dálku ana techniky ROÈNÍK XII/2007. ÈÍSLO 4
Historie elektøiny a magnetizmu Lev Davidoviè Landau
ROÈNÍK LVI/2007. ÈÍSLO 4
V TOMTO SEITÌ Z dìjin vìdy a techniky ...................... 1 MODERNÍ MIKROKONTROLÉRY Pøehled mikrokontrolérù .................... 3
Atmel AT89S2051, AT89S4051 ............. 4 Atmel AT89LP2052, AT89LP4052 ......... 5 Atmel ATtiny2313 .................................. 6 Atmel ATtiny24 a ATtiny84 ................ 10 Atmel ATtiny25 a ATtiny85 ................ 16 Atmel ATmega48 a ATmega168 ........ 18 Atmel ATmega640 a ATmega2560 .... 22 Atmel AT91SAM7S64 ......................... 24 Co bude dál? ....................................... 28
Trocha praxe .................................. 29
Ladicí rozhraní pro MC68HC908QY ..... 29 Interfejs pro digitální posuvné mìøítko .. 32
Závìr .............................................. 34 ZAJÍMAVÁ A PRAKTICKÁ ZAPOJENÍ Technika v domácnosti ................... 35 Mìøicí technika ................................ 38 KONSTRUKÈNÍ ELEKTRONIKA A RADIO Vydavatel: AMARO spol. s r. o. Redakce: Zborovská 27, 150 00 Praha 5, tel.: 2 57 31 73 11, tel./fax: 2 57 31 73 10. éfredaktor ing. Josef Kellner, sekretáøka redakce Eva Marková, tel. 2 57 31 73 14. Roènì vychází 6 èísel. Cena výtisku 36 Kè. Roziøuje PNS a. s., Transpress spol. s r. o., Mediaprint & Kapa a soukromí distributoøi. Pøedplatné v ÈR zajiuje Amaro spol. s r. o. - Michaela Hrdlièková, Hana Merglová (Zborovská 27, 150 00 Praha 5, tel./fax: 2 57 31 73 13, 2 57 31 73 12. Distribuci pro pøedplatitele také provádí v zastoupení vydavatele spoleènost Mediaservis s. r. o., Zákaznické Centrum, Moravské námìstí 12D, P. O. BOX 351, 659 51 Brno; objednávky tel: 541 233 232; fax: 541 616 160; e-mail:
[email protected]; reklamace - tel.: 800 800 890. Objednávky a predplatné v Slovenskej republike vybavuje MAGNET-PRESS Slovakia s. r. o., ustekova 8, 851 04 Bratislava, tel.: 00421 2 / 6720 1931 - 33 email:
[email protected] ; www.press.sk Podávání novinových zásilek povoleno Èeskou potou - øeditelstvím OZ Praha (è.j. nov 6005/96 ze dne 9. 1. 1996). Inzerci v ÈR pøijímá redakce, Zborovská 27, 150 00 Praha 5, tel.: 2 57 31 73 11, tel./fax: 2 57 31 73 10. Inzerci v SR vyøizuje MAGNET-PRESS Slovakia s. r. o., ustekova 8, 851 04 Bratislava, tel.: 00421 2 / 6720 1931 - 33 ; www.press.sk Za pùvodnost a správnost pøíspìvkù odpovídá autor (platí i pro inzerci). Nevyádané rukopisy nevracíme.
http://www.aradio.cz; E-mail:
[email protected] ISSN 1211-3557, MK ÈR E 7443
© AMARO spol. s r. o.
Narodil se v Baku dne 22. ledna 1908 v rodinì naftaøského inenýra; matka byla lékaøem-fyziologem. Od ranného mládí jej zajímala hlavnì matematika a velmi snadno se uèil - støední kolu napø. ukonèil ji ve tøinácti letech a sloil zkouky na univerzitu. Rodièe vak takovýto rychlý postup pøíli nepodporovali, a tak Lev napøed zaèal navtìvovat ekonomicko-technickou kolu. Na univerzitu se zapsal o rok pozdìji a hned zaèal studovat nìkolik oborù, mimo své oblíbené matematiky také fyziku a chemii. Po dvou letech odeel studovat do Leningradu a tam v roce 1927 promoval. Ve stejném roce pak uveøejnil svou první vìdeckou práci z oboru kvantové fyziky. Pracoval pak na leningradském fyzikálnì-technickém institutu. V roce 1929 se vydal díky Rockefellerovì nadaci na delí cestu po Evropì, procestoval Nìmecko (Göttingen, Lipsko), výcarsko (u V. Pauliho v Curichu), Anglii (Cambridge), Holandsko, Dánsko, Holandsko, Belgii a vude tam sbíral cenné vìdecké poznatky na pièkových pracovitích. Napø. v Kodani nìjakou dobu pracoval v Institutu pro teoretickou fyziku Nielse Bohra. Ve svých 21 letech se s ním setkal poprvé a dostal jeho pøièinìním hlavní impuls ke svému dalímu profesnímu zamìøení. Ji tehdy ovem spoleènost èasto okoval svou zvlátní povahou - rád provokoval napø. jen tím, e nosil rudou koili; byl toti v té dobì pøesvìdèeným komunistou a obhajoval sovìtský systém pøesto, e za jeho zahranièního pobytu byl jeho otec zatèen, obvinìn ze sabotáe a odsouzen na 10 let do vìzení. V roce 1932 se Landau vrátil do Lenigradu a zaèal spolupracovat s Ukrajinským fyzikálnì-technickým institutem v Charkovì. Tam mu nakonec nabídli místo v oboru teoretické fyziky na Institutu mechanického inenýrství. Pøestìhoval se tam v roce 1934 a získal záhy doktorát fyzikálních a matematických vìd. V roce 1935 se stal profesorem fyziky na Charkovské univerzitì Gorkého a vedl katedru obecné fyziky. Landau postupnì tento ústav promìnil na centrum teoretické fyziky v celém tehdejím SSSR. Jedním z jeho prvních poèinù v Charkovì bylo zorganizování mezinárodního vìdeckého sympozia o teoretické fyzice, jeho se také zúèastnil Bohr. Landau sympoziu pøedsedal a Bohr vedl diskuse o projednávaných vìdeckých problémech. Landau sám
o Bohrovi prohlásil, e to byl jeho první a jediný uèitel teoretické fyziky a stali se velkými pøáteli. Landau byl v této dobì nesmírnì produktivní, prùmìrnì kadých est týdnù zveøejnil nìjakou svou vìdeckou práci; kadá byla zamìøena k jinému tématu, kadá pøinesla nové otázky a pøíslunou èást vìdeckého svìta okovala zcela originálními úvahami a pojetím. Seznámil se také s Kapicou (viz KE 5/06) a ten jej pøemluvil, aby pøijal místo v Moskvì. V roce 1937 se oenil a stal se vedoucím teoretického oddìlení fyzikálního institutu Akademie vìd SSSR. Tam se vìnoval teorii kolize atomù, atomové a nukleární fyzice veobecnì, kvantové elektrodynamice, kinetické energii plynù, astrofyzice, teorii polí, plazmové fyzice atd. Po roce 1935 ale Landau pod vlivem stalinských politických procesù postupnì zmìnil své smýlení a po sepsání protistalinského letáku byl 28. dubna 1938 zatèen. V letáku, který mìl být roziøován na oslavách 1. kvìtna, napsal, e stalinisté v Rusku uskuteènili faistický pøevrat, Stalina pøirovnával k Hitlerovi a Mussolinimu, NKVD prohlásil za tyranskou organizaci. Nakonec byl obvinìn, e je nìmecký pion. Postavil se za nìj tehdy neohroenì Kapica, který napsal Stalinovi osobní dopis, a také Bohr ádal pro velkého vìdce svobodu, aby mohl pokraèovat ve své teoretické práci. Landau byl po dalí intervenci Kapici v roce 1939 proputìn a znovu zaèal pracovat v Institutu fyzikálních problémù. Je s podivem, e i jeho spoleèníci, se kterými byl zatèen, unikli popravì, i kdy byli vìznìni déle - pøitom tehdy byli lidé v Rusku popravováni za daleko mení prohøeky. Za práce z té doby vìnované supratekutosti u tekutého helia byl odmìnìn v roce 1962 Nobelovou cenou za fyziku. Kdy se tekuté helium naleje do sklenice, která bude ponoøena do vìtí nádoby také naplnìné tekutým heliem, helium se po vnìjí èi vnitøní stranì sklenice vyplhá smìrem vzhùru a pøetéká tak dlouho, a se hladiny vnì i uvnitø sklenice vyrovnají! Teorii tohoto jevu publikoval v roce 1941 a pozdìji se skuteènì potvrdila. Za války se vìnoval teoretickým pracem, které mìly souvislost s vojenskou technikou, a po válce z obav pøed dalími represáliemi proti své osobì pracoval spolu s dalími vìdci na vývoji vodíkové pumy. Po Stalinovì smrti vak svùj výzkum v této oblasti ukonèil a prohlásil - teï u mohu skonèit, u se nebojím.
Konstrukèní elektronika A Radio - 4/2007
1
Landau mìl 7. 1. 1962 tìkou autohavárii a v prùbìhu následujících esti týdnù u nìj lékaøi nìkolikrát diagnostikovali klinickou smrt. Mìl na jedenácti místech zlomené kosti a natípnutou lebeèní kost. Mnoho specialistù z ciziny se snailo zachránit mu ivot, co se nakonec podaøilo. Zotavoval se vak velmi pomalu a ji nikdy se jeho stav nevrátil k normálu. Po esti letech, 1. 4. 1968 v Moskvì zemøel. Jeho syn Igor, který se narodil v roce 1946, el v jeho lépìjích a vìnoval se experimentální fyzice. V pováleèné dobì Landau získal mimo ji zmínìné Nobelovy ceny i mnohá ocenìní od rùzných vìdeckých institucí, mj. i od americké Akademie vìd. Od roku 1946 byl èlenem Akademie vìd SSSR, pozdìji se stal èlenem Královské spoleènosti v Londýnì, získal medaili Maxe Plancka atd. Jeho nezapomenutelným dílem je desetidílný Kurs teoretické fyziky, na kterém pracoval spolu se svým pøítelem a ákem E. M. Liftshitsem, který jej dokonèil. Ten byl pøeloen do vech svìtových jazykù. el, jeho dalí zámìry (mìli v plánu napsat jetì Kurs obecné fyziky a sérii pojednání Fyzika pro kadého) se po jeho havárii ji neuskuteènily. Jak se o nìm vyjádøili uèenci, byl to poslední univerzální fyzik - vichni následovníci se ji vìnovali jen urèitému výseku z fyzikální teorie. Mimo vìdeckých prací také pøednáel - jako pedagog byl výborný, ale u studentù byl postrachem, ponìvad znal jen dvojí ocenìní: umí - neumí (a uspìl jen málokdo). Vyadoval, aby jeho studenti ovládli dokonale matematiku døíve, ne li studovat k nìmu. Mìl zálibu v aforismech, jeho oblíbeným byl fyzik musí sloité vìci uèinit jednoduchými, zatím co básník je povolán k tomu, aby z jednoduchých vymýlel sloité. Práce ostatních vìdcù neèetl celé - vdy jen tak, aby zjistil, zda dokázali správnì popsat problém, a byl-li zajímavý, jakým zpùsobem se jej pokoueli vyøeit. Jako správný vìdec byl mylenkami èasto vzdálen od reality. Jeho ena vzpomínala na záitek z doby jejich zaèínající známosti. Kdy k ní jednou pøiel detìm úplnì promoèený, zeptala se jej zda venku prí. Odpovìdìl: Ale ne - je tam nádhernì. Kdy pøevleèený a zutý poodeel od dveøí a uvidìl loui, která tam po nìm zbyla, prohlásil: Venku asi skuteènì prí. Dokázal vak pøemýlet i o vìcech s vìdou pøíli nesouvisejících - unikátní jsou napø. jeho úvahy zveøejnìné pod názvy Jak ít a Teorie tìstí, ve kterých uplatnil svou schopnost logického uvaování a pøesné kategorizace.
Karl Guthe Jansky a radioastronomie Jansky se narodil 22. 10. 1905 ve státì Oklahoma - USA. Jeho otec Cyril Janský byl dìkanem na univerzitì v Oklahomì a byl potomkem èeských pøistìhovalcù. Od svých estnácti let (!)
2
byl Cyril uèitelem na základní kole v Michiganu. Jeho manelka byla potomkem francouzsko-anglického páru. Cyril Jansky jako uèitel cítil, e má na víc a vstoupil na Michiganskou univerzitu, kde graduoval z fyziky a elektrotechniky a zaèal pracovat pod vedením Dr. Karla Gutheho. Byl to známý fyzik nìmeckého pùvodu a Cyril Jansky jej nesmírnì obdivoval. Kdy se zakládal Americký úøad pro normalizaci ve Washingtonu, oba se stali jeho èleny. V roce 1905 se rodina, která v té dobì ji mìla dva syny, pøestìhovala do Normanu v Oklahomì, kde otec získal místo na univerzitì a pøednáel tam elektrotechniku. Zakrátko se jim narodil tøetí syn, který dostal jméno po Dr. Guthovi. Karl Jansky se pozdìji s rodinou stìhoval dále, do Madisonu ve Wisconsinu, kde navtìvoval základní kolu a pozdìji také univerzitu, kde byl jeho otec èlenem jedné fakulty. Vystudoval tam v roce 1927 s vyznamenáním fyziku a pozdìji získal i doktorát. Ale nebyl to ádný knihomol, byl vynikajícím hráèem tenisu a hokeje v univerzitním týmu. Také jeho starí bratr se zabýval radiotechnikou, stal se profesorem radiotechniky na univerzitì v Minnesotì a úèastnil se na stavbì prvního rozhlasového vysílaèe v Minnesotì. V roce 1928 se Karl pøihlásil a získal místo v Bellových laboratoøích. Jeho úkolem bylo zkoumat ruivé jevy, které se vyskytovaly na dlouhých radiotelefonních trasách. Aby se zhostil svého úkolu, postavil velký smìrový anténní systém, ladìný na vlnovou délku 14,6 m (asi 20,5 MHz), který bylo moné otáèet kolem dokola. Soustava mìla délku 30 m a otáèet s ní bylo moné díky kruhové dráze, po které pojídìly ètyøi kola z tehdy populárního automobilu Ford T propojená døevìnou konstrukcí. Jeho replika je nyní postavena v Green Bank. Záhy zjistil, e existují prakticky tøi zdroje ruivých signálù. Nejsilnìjím byla bouøková èinnost - pøi kadém blesku zaznamenal silné prasknutí. Dále to byly odrazy silných ruivých signálù od ionosféry a pak se ruivì projevoval jetì um. Ponìvad jeho anténa se trvale pomalu otáèela, zjistil, e um, o kterém se domníval, e vzniká v pøijímaèi, periodicky vzroste vdy, kdy je anténa otoèená pøiblinì jiním smìrem, a tento um e má zvlátní charakter. To bylo první zjitìní, které nasvìdèovalo, e nìkde v tom smìru existuje zdroj rádiového umu. Zprvu se domníval, e tímto zdrojem je slunce. Dalím poznatkem bylo, e kdy anténu ponechá otoèenou k jihu, periodicky se intenzita pøijímaných signálù mìní, ale nikoliv po 24 hodinách, ale s periodou o 4 min kratí, èili za tzv. hvìzdný den. Z toho usoudil, e se jedná o umový signál pøicházející z vesmíru (je to mj. také dalí dùkaz, e nae zemì se otáèí kolem slunce). Nakonec zjistil, e maximum tohoto umu pøichází ze souhvìzdí Luèitníka (Støelce) a vyslovil domnìnku, e pùvod tohoto umu je v mezihvìzdných ionizovaných plynech.
Svá pozorování sepsal s názvem Directional Studies of Atmospherics at High Frequencies ji ve svých 26 letech a pøednesl na zasedání Mezinárodní vìdecké unie pro rádio v dubnu 1932 ve Washingtonu. Posléze svá pozorování veøejnì publikoval v New York Times ze dne 5. 5. 1933. Bohuel, konstatování, která zformuloval, prakticky nikoho nezaujala, nebo astronomové se pøíli o objevy v oblasti radiotechniky nezajímali. Sám mìl zájem svùj výzkum prohloubit a dal návrh Bellovým laboratoøím na zhotovení solidního anténního systému - radioteleskopu o prùmìru 30 m. Jene takový výzkum nepatøil do jejich komerèních zájmù vyplývajících ze zakázek, take neuspìl. Byl pak pøeøazen na výzkum v jiné oblasti. Významné ocenìní jeho práce se mu dostalo na jednom z astronomických kongresù a posmrtnì - zemøel 14. února 1950 v Red Bank, ve státì New Jersey. Na jeho poèest byla pojmenována jednotka rádiového záøení jansky (1 Jy = 10-26 W/m2·Hz), která se pouívá k mìøení intenzity rádiových signálù pøicházejících z vesmíru. V jeho díle pak pokraèoval dalí americký vìdec Rote Reber, který se radioastronomií zabýval víceménì jako svým koníèkem. Sestrojil si ji v roce 1937 radioteleskop o prùmìru cca 9 m a zkoumal spíe umy na kratích vlnových délkách, mezi 9 a 33 cm. Kdy vak pøeel na vlnovou délku cca 1,5 m potvrdil to, na co pøiel ji Jansky. Mìl v té dobì ji velmi citlivý pøijímaè a v jeho výzkumech jej ruily signály, které vysílaly okolojedoucí motory automobilù (jejich neodruené zapalovací systémy), a proto svá pozorování provádìl pøevánì v noci. Zjistil, e hlavní zdroj umu leí v oblasti hvìzdy Cassiopea. Od 40. let se astronomové ji zaèali zabývat i signály, které pøicházely z mezihvìzdného prostoru. V pováleèné dobì získali ke svým pozorováním øadu pøístrojù, které døíve slouily ve válce - vyøazené radary apod. Jednou z prvních byla laboratoø Jodrel Bank. V roce 1955 pak ji bylo zjitìno a popsáno 23 rùzných zdrojù rádiového záøení ve vesmíru i mimo nai galaxii, byly zjitìny odrazy rádiových signálù od meteorických stop, na zajímavé poznatky pøili vìdci zkoumáním spektrálních èar v oblasti rádiového spektra pøi akceptování Dopplerova efektu. Byla objevena spektrální èára vodíkového atomu na délce asi 21 cm, jak bylo pøedtím pøedpovìzeno teoreticky. Ale to jsme ji prakticky v souèasné dobì.... QX
Literatura [1] Sbornik Nauènoe tvorèestvo L. D. Landau, Znanie, Moskva 1963. [2] Abrikosov, A. A.: Akademik L. D. Landau. Nauka, Moskva 1965. [3] Bessarab, M.: Landau - stranicy izni. Moskovskij raboèij, Moskva 1971.
Konstrukèní elektronika A Radio - 4/2007
MODERNÍ MIKROKONTROLÉRY Ing. Jiøí Kopelent Kdy jsem pøed zhruba ètyømi lety psal pro tento èasopis pojednání týkající se stavu mikroprocesorové techniky se zamìøením na oblast osmibitových mikrokontrolérù dostupných na trhu v ÈR, snail jsem se naznaèit i moné trendy. Vývoj v této oblasti jde vak neuvìøitelnì rychle, a tak u zde máme nepøeberné mnoství nových a jetì výkonìjích mikroprocesorù a mikrokontrolérù. Obsah tohoto èísla èasopisu bude více ménì stejný, ale na základì ohlasù na minulé pojednání, které bylo spíe teoretické, bude obsah tohoto èísla èasopisu rozíøen o praktické aspekty a jedna èást bude vìnována praktickým konstrukcím èi øeením nìkterých situací, se kterými se mùe konstruktér v praxi setkat. Doufám tedy, e pro vìtinu ètenáøu bude obsah jetì zajímavìjí ne bylo minulé èíslo o osmibitových mikrokontrolérech. Protoe vak se u jednotlivých typù mikrokontrolérù objevují zajímavé periferie èi nové mylenky, bude na to pøi popisu upozornìno tím, e popis vlastnosti èi periferie bude podrobnìjí. Poslední èást bude vìnována praktickým návrhùm zaøízení od úplného zaèátku a po vlastní realizaci. Výsledkem tìchto návrhù budou pøístroje èi zaøízení, která mohou najít uplatnìní v leckteré dílnì elektronika, èi je moné je pouít jako èást dalích konstrukcí. V pøípadì, e nìkdo ze ètenáøù bude mít konstruktivní pøipomínku, budu rád, kdy mi ji pole na emailovou adresu
[email protected]. Díky této zpìtné vazbì od ètenáøù bude zajisté moné napsat dalí a jetì lepí èíslo tohoto èasopisu.
Pøehled mikrokontrolérù V prvním pøehledu mikrokontrolérù v KE 1/2003 a KE 3/2003 byly popsány zástupci ètyø výrobcù, kteøí mìli nejvìtí zastoupení (èi byli nejznámìjí) na tehdejím trhu. Jak ji bylo øeèeno, vývoj v této oblasti mikroelektroniky jde neuvìøitelnì rychle kupøedu a tak se z ètveøice stala pìtice: 1 - ATMEL, 2 - FreeScale, 3 - Microchip, 4 - Texas Instruments, 5 - STMicroelectronics. Vzhledem k prostoru v èasopisu si v tomto èísle KE popime pouze nejzajímavìjí mikrokontroléry ATMEL.
ATMEL O této firmì a jejích mikrokontrolérech se v podstatì nedá øíci nic jiného, ne e úspìnì pokraèují v roziøování úspìných typù. Aby sortiment mikrokontrolérù nebyl pøíli iroký, firma postupnì pøestává vyrábìt staré typy. Pøíkladem mohou slouit mikrokontroléry øadyAT89Cxx, které byly nahrazeny mikrokontroléry øady AT89Sxx. Take napø. velmi populární AT89C2051 byl nahrazen typem AT89S2051, AT89C51 byl nahrazen
AT89S51, AT89C52 má svého následníka AT89S52. I nìkteøí starí zástupci øady AT89S pomalu mizí, take u tìko seeneme AT89S8252, který se pøestal vyrábìt. Místo tohoto typu vak mùeme pouít bez problému AT89S8253, který má vìtí pamì programu. Takto bychom mohli pokraèovat dále. Nìkteré typy mají dokonce i více následníkù. Pøíkladem nech je AT89C2051 se svými dvìma následníky, a to výe ji zmínìným AT89S2051 a typem AT89LP2052, který má jednocyklové jádro. Oznaèení jednocyklové jádro znaèí, e základní instrukce typu akumulátor-registr je vykonána bìhem jednoho cyklu systémových hodin (více viz popis AT89LP2052/4052). V tab. 1 jsou uvedeny zastaralé mikrokontroléry rodiny AT89C s jejich doporuèenými náhradami. Jak je vidìt, vìtina mikrokontrolérù má svoji pøímou náhradu, pouze u málo pouívaných typù byla ukonèena produkce bez pøímé náhrady. Za poznámku stojí jetì typy z rodiny T89C. Znaèení T89C bylo pøevzato od firmy TEMIC, kterou firma ATMEL koupila. V rámci jednotného znaèení byly typy pøejmenovány tak, aby zapadly do standardního znaèení firmy ATMEL.
Podobnì, jako zástupci pùvodní øady AT89C, dopadli i zástupci rodiny AT90Sm, a dokonce u i nìkteøí starí zástupci rodin ATtiny a ATmega. Tato Tab. 1. Zastaralé mikrokontroléry rodiny AT89C a jejich doporuèené náhrady
1) Není náhrada
Konstrukèní elektronika A Radio - 4/2007
3
Tab. 2. Zastaralé mikrokontroléry rodiny AT90S a jejich doporuèené náhrady
2) Pin to pin náhrada 3) AT90S4414 = AT90S8515 s mení pamìtí 4) AT90S4434 = AT90S8535 s mení pamìtí øada stála u poèátku veleúspìného taení rodiny mikrokontrolérù s jádrem RISC oznaèované jako AVR mikrokontroléry. S rozvojem technologií a kvùli nároènosti udrovat iroký sortiment typù byla tato øada postupnì utlumena. Jednotlivé mikrokontroléry mají vìtinou vhodné nástupce v perspektivních øadách ATtiny a ATmega. Pro lepí pøedstavu jsou v tab. 2 uvedeny staré typy spolu s náhradami nebo typy, které jsou jim nejblíe. Podívejme se na nejmení zástupce rodiny AT89, tedy na AT89S2051/ /AT89S4051 a AT89LP2052/AT89 LP4052 trochu dùkladnìji. Vzhledem k faktu, e se jedná o vylepené notoricky známé mikrokontroléry AT89C2051/ /AT89C4051, bude popis zamìøen na rozdíly.
AT89S2051/AT89S4051 Kdy firma ATMEL uvádìla na trh mikrokontroléry AT89C1051/AT89 C2051/AT89C4051, zøejmì netuila, jak budou úspìné. Vdy jejich vzor 83C751/87C751 byl zamìøen na aplikaci ve spotøební elektronice a mimo ní nebyl íøeji pouíván. Tento osud vak mikrokontroléry AT89Cx051 firmy ATMEL nepostihl. Díky technologii Flash, která umoòovala pøepis programového vybavení mikrokontroléru, a lacinému plastovému pouzdru získala rodina AT89Cx051 velkou popularitu. A to takovou, e i kdy jsou k dispozici jiné výkonnìjí mikrokontroléry, øada uivatelù je stále ráda pouívá. To donutilo firmu ATMEL, aby se zamyslela, a pokud mono uvedla pokraèovatele této rodiny. Podíváme-li se na blokové schéma mikrokontrolérù, které je na obr. 1, neobjevíme oproti AT89Cx051 nic nového. Pøesto zmìn je více ne dost.
4
Obr. 1. Blokové schéma mikrokontrolérù AT89S2051/AT89S4051 První zmìnou je vlastní návrh CPU, který je udìlán jako esticyklový, tj. základní instrukce akumulátor-registr je vykonána bìhem esti taktù. Aby se mikrokontrolér choval stejnì jako jeho vzory, které mají 12 taktù na instrukci, je systémový kmitoèet dìlen dvìma a teprve pak distribuován. Pokud je vak potøeba, dá se tato dìlièka vypnout. Vlastní pøepínání je vyøeeno velmi elegantnì. Pøi programování mikrokontroléru je moné urèit stav, ve kterém se má nacházet mikrokontrolér po nábìhu napájecího napìtí. Toto se dìje naprogramováním bitu X2 clock ve stavovém slovì (zde jsou napø. známé bity chránící pamì programu pøed neoprávnìným vyètením uloeného programu). Tento zpùsob vak není jediný, nebo bit X2 clock neovládá interní dìlièku pøímo, ale pøi power-up mikrokontroléru se obsah tohoto bitu zkopíruje do bitu 0 stavového slova CLKREG na adrese 8FHEX. Z toho plyne, e programátor má monost tento bit jednodue ovládat i programovì, tj. mùe ho mìnit bìhem bìhu programu podle potøeby, a tím mìnit výkon i spotøebu mikrokontroléru! Dalí dvì zmìny se týkají monosti programování vnitøní pamìti programu. Tu je moné programovat jednak klasicky v klasickém programátoru, jako pùvodní AT89Cx051 (paralelní mód), ale novì té i sériovì pøes piny P1.5 (serial data in - MOSI), P1.6 (serial data out - MISO) a P1.7 (serial clock - SCK). Pokud tedy návrháø pamatuje pøi návrhu na to, aby bylo moné tyto piny
pouít té pro programování, bude moné jednodue nahrávat nové programové vybavení bez toho, aby bylo nutné mikrokontrolér vyjímat z aplikace. Zmiòovanou dalí zmìnou, pojící se k pamìti Flash, je vyí poèet garantovaných pøepisù této pamìti, který se zvìtil z 1000 na 10 000 pøepisù. Zmìna nastala i u velikosti vnitøní pamìti dat. U obou mikrokontrolérù je 256 bytù. To je jistì chvályhodné, nebo se jednak algoritmy stávají sloitìjími, jednak mnoho programátorù píe i malé programy ve vyích programovacích jazycích, a ty, jak známo, jsou nároènìjí na objem programové i datové pamìti. Dalí odliností nové rodiny je integrovaný jednoduchý generátor PWM signálu. Pøi jeho pouití si vak musíme dát pozor. Proè si musíme dát pozor, zjistíme, kdy se pozornì podíváme na blokové schéma PWM generátoru, které je na obr. 2. Z nìho je jasné, e v pøípadì vyuití monosti generovat PWM, rázem pøijdeme o jediné dva èítaèe/èasovaèe, které mikrokontroléry této rodiny mají! To je jistì velmi nemilé, ale v øadì pøípadù je to moné akceptovat. V první øadì je nutné si uvìdomit, e pokud chceme pouít sériový port pro komunikaci, musíme ho provozovat v módu 2, kdy jako øídicí frekvence je pouit kmitoèet získaný nezávislou dìlièkou 32 (èi 64). Druhým problémem se mùe jevit získání systémového èasu vzhledem k obsazení obou èítaèù generátorem PWM.
Konstrukèní elektronika A Radio - 4/2007
Celá situace je vidìt na obr. 3, kde se v prvním pøípadì pøíznak CF nenastaví, nebo sputìní èítaèe/èasovaèe 1 bylo vyvoláno falenou hranou signálu z analogového komparátoru. Druhá aktivní hrana z komparátoru je vak ta správná, nebo signál z komparátoru má v okamiku druhého pøeteèení správnou úroveò. V tomto okamiku se pøíznak CF nastaví.
Obr. 2. PWM generátor v mikrokontrolérech AT89S2051/ /AT89S4051
Pozitivní se mùe jevit implementace kvalitnìjího sériového portu, který je schopen automaticky hardwarovì detekovat chybu rámce a je té schopen automaticky rozpoznat svoji nadefinovanou adresu. Výrobce el pøi implementaci tohoto rozhraní jetì dál a myslel i na pøípad, kdy bude potøeba oslovit více èi vechna zaøízení pøipojená na jednu sbìrnici. Proto kadý sériový port má dva registry, SADDR a SADEN, které definují adresy, na které daný mikrokontrolér reaguje. Obsah registru SADDR definuje vlastní adresu portu, zatímco hodnota v registru SADEN definuje bity, které jsou porovnávány a které jsou nevýznamné. Jinými slovy, pokud nìkterý bit v registru SADEN má hodnotu 1, je významný, a hodnota stejného bitu z registru SADDR se porovnává s dolou hodnotou. V opaèném pøípadì, kdy bit má hodnotu 0, na pøijaté hodnotì stejného bitu nezáleí (neporovnává se). Pro lepí pøedstavu zde uvedeme pøíklad nastavení: Slave A:
SADDR:1111 0001b SADEN:1111 1010b ---------------Given 1111 0X0Xb
Slave B:
SADDR:1111 0011b SADEN:1111 1001b ---------------Given 1111 0XX1b
Slave C:
Brown-out detektor Slave A:
SADDR:1111 0001b SADEN:1111 1010b ---------------Broadcast 1111 1X11b
Slave B:
SADDR:1111 0011b SADEN:1111 1001b ---------------Broadcast 1111 1X11b
Slave C:
SADDR:1111 0011b SADEN:1111 1101b ---------------Broadcast 1111 1111b
Pokud tedy chceme komunikovat se vemi zaøízeními, musíme pouít adresu 1111 1111b, nebo u zaøízení A a B je bit 2 nevýznamný, tj., mùe nabývat hodnoty jak log. 0 tak i log. 1, ale u zaøízení jsou významné vechny bity. Po power-on resetu oba registry nabývají hodnot 00HEX, take mikrokontroléry reagují na vechny adresy. Toto zajiuje zpìtnou kompatibilitu se starími typy mikrokontrolérù, které nemají automatické rozpoznání adresy. Právì popsaný zpùsob získávání adres zaøízení se jeví jako komplikovaný, ale nabízí velkou flexibilitu, která je potøebná v mnoha aplikacích.
Analogový komparátor
SADDR:1111 0011b SADEN:1111 1101b ---------------Given 1111 00X1b
Pro zaøízení A jsou nevýznamné bity 0 a 2, pro zaøízení B bity 1 a 2 a pro zaøízení C není významný bit 1. Pokud tedy chceme komunikovat pouze se zaøízením A, musíme pouít adresu 1111 0000b. Pokud chceme komunikovat se zaøízeními B a C, musíme pouít adresu 1111 0011b. Pokud chceme komunikovat se zaøízeními A, B i C, musíme pouít adresu 1111 0001b. Tzv. broadcast adresa je u sériového portu dána logickým souètem obsahu obou registrù, tj.:
Analogový komparátor, známý i od pøedchùdcù, proel té úpravami. Pro øadu aplikací, kde je tento komparátor pouit, je typická pomalá zmìna analogové hodnoty na vstupu komparátoru. To zapøíèiòuje vznik zákmitù na výstupu komparátoru. Díky monosti hardwarové funkce odruení zákmitù je programátor zbaven nutnosti toto øeit programovì. Nová hardwarová funkce vyuívá èítaè/èasovaè 1, který je sputìn pøi prvním výskytu aktivní hrany. V okamiku, kdy èítaè/èasovaè podruhé pøeteèe a na výstupu je oèekávaný stav, je nastaven bit CF. V opaèném pøípadì zùstane bit CF nenastavený.
Významným rozíøením, èi chcete-li zdokonalením mikrokontrolérù AT89S 2051/4051 je implementace tzv. Brown -out detektoru. Tento detektor má za úèel sledovat pracovní podmínky mikrokontroléru, pøesnìji velikost napájecího napìtí, a v pøípadì neregulérních podmínek zajistit reset mikrokontroléru. Znovusputìní nastane a po nábìhu napájecího napìtí na urèenou hodnotu. Tímto zpùsobem mùeme pøedejít neregulérnímu bìhu programu v mikrokontroléru. Chování Brown-out detektoru za rùzných okolností je moné vidìt na obr. 4. Z tohoto obrázku mùeme vidìt, e pro mikrokontrolér jsou dùleité tøi úrovnì. Mikrokontrolér pracuje normálnì, kdy je napájecího napìtí vìtí ne min Ucc, které je 2,7 V. V pøípadì, e napájecí napìtí klesne pod tuto úroveò, lze díky interním registrùm zjistit, zda napájení mikrokontroléru pouze pokleslo nebo zda se jedná o úplný výpadek napájecího napìtí. Nezanedbatelnou pøedností nových mikrokontrolérù je té jejich pøeruovací systém, který je, na rozdíl od pùvodního systému, ètyøúrovòový. Ten, kdo intenzivnì pracoval s pùvodními typy, jistì bude potìen, nebo pùvodní dvouúrovòový pøeruovací systém obèas byl nedostateèný, a dalí úroveò musela být øeena za pomoci programového vybavení, co stálo výpoèetní výkon mikrokontroléru a to tím více, èím bylo pøeruení èastìjí. I kdy inovací, které rozíøily monosti vyuití tìchto mikrokontrolérù, bylo udìláno hodnì, výpoèetní výkon u právì pøedstavené rodiny je stále nedostaèující. Proto firma ATMEL pøedstavila nový model AT89LPx052.
AT89LP2052/AT89LP4052 Porovnáme-li pøedchozí model s rodinou AT89LP, je moné s trochou nadsázky øíci, e mikrokontroléry
Broadcast Address = SADDR or SADEN To znamená, e významné bity musí mít alespoò v jednom z obou registrù hodnotu log.1. V naem pøedcházejícím pøípadì tedy platí:
Obr. 3. Analogový komparátor v debounce módu
Konstrukèní elektronika A Radio - 4/2007
5
Obr. 4. Brown-Out detektor AT89S2051/4051 byly jakýmsi mezikrokem mezi pùvodními AT89C2051/4051 a AT89LP2052/4052. Svìdèí o tom napø. nový ètyøúrovòový pøeruovací systém nebo pokus o redesign vlastní jednoty CPU. Na této jednotce je toti závislý celkový výpoèetní výkon mikrokontroléru. Aby se zpøístupnily dalí aplikace pro tyto mikrokontroléry, návrháøi pøepracovali jádro tak, e standardní operace akumulátorregistr je vykonána bìhem jednoho (!) taktu systémového kmitoètu. Výrobce uvádí, e pøiblinì 70 % vech instrukcí potøebuje ke svému vykonání tolik hodinových taktù, kolik má instrukce bytù. I pro konstruktéra, který nepotøebuje tak vysoký výpoèetní výkon, mùe být tento mikrokontrolér velmi zajímavý. Vysvìtlení je velmi prosté - pokud pouijeme nový mikrokontrolér s jednotaktovým jádrem na místì klasického mikrokontroléru, mùeme AT89LP2052/ 4052 provozovat na mnohem nií pracovní frekvenci ne pùvodní typ se zachováním stejného výpoèetního výkonu. Jeliko je spotøeba obvodù CMOS pøímo závislá na øídicí frekvenci, s poklesem pracovní frekvence se nutnì sníí odbìr. Zmìny se nevyhnuly ani ostatním èástem mikrokontroléru. Z hlediska komunikaèních schopností mikrokontroléru je nejzajímavìjím pøidaný SPI port s bufferem. I kdy jeho monosti z hlediska nastavení pøenosových rychlostí jsou malé, potìujícím zjitìním je fakt, e port nepotøebuje ádný èítaè/èasovaè pro generování pøenosové rychlosti. Jeliko v prùmyslových aplikacích je základním poadavkem spolehlivost bìhu, nikoho nepøekvapí, e na èipu se objevil i klasický èasový watchdog. Dobu, za kterou watchdog zpùsobí reset, je moné nastavit v osmi krocích, a to od 16 384 tikù systémových hodin do 2 097 152 tikù. Pokud nìkoho zaráí, e doba je udaná v tikách systémových hodin a ne v sekundách èi milisekundách, je to tím, e watchdog je také taktován kmitoètem systémových hodin, a ten mùe být od 0 Hz do 20 MHz podle potøeby té které aplikace.
6
A se zmìnou øídicího kmitoètu se mìní i doba do resetu. Ostatní rozíøení známé u AT89S 2051/4051 zde zùstaly. Jedná se pøedevím o iroké monosti reimù se sníenou spotøebou a oetøení restartu mikrokontrolérù AT89LP2052/4052 z tìchto reimù. Závìrem lze øíci, e uvedené nové mikrokontroléry opìt znaènì prodlouily dobu ivota legendárního jádra C51. Druhou øadou, se kterou firma ATMEL slavila a slaví velké úspìchy, jsou mikrokontroléry s architekturou AVR. Zajímavostí této architektury je fakt, e nejdøíve bylo analyzováno mnoho programù a na základì této analýzy byl navren instrukèní soubor tak, aby byl optimální a zároveò vhodný pro pøeklad z vyích programovacích jazykù (jazyk C). Od prvních nesmìlých krùèkù s prvními èleny nové rodiny mikrokontrolérù AT90S dospìl vývoj a k dnes stabilním dvìma øadám. Mikrokontroléry urèené pro nejmení aplikace nesou v oznaèení název ATtiny, mikrokontroléry urèené pro vìtí a komplexnìjí aplikace nesou oznaèení ATmega. Jejich monosti se prolínají, take pro kadou aplikaci je moné najít vhodného zástupce. Pùvodní øada AT90S je ji umrtvována. Pro nové aplikace jsou tedy vhodné pouze øady ATtiny a ATmega. V povídání o mikrokontrolérech v pøedchozích èíslech KE byly pøedstaveny vesmìs zástupci øady AT90Sxx a první zástupci øad ATtiny i ATmega. Vývoj jde vak velmi rychle kupøedu, a tak v tehdejí dobì pièkové mikrokontroléry jsou ji pøekonány novými èleny øad ATtiny a ATmega. Pøedstavme si dva/tøi zástupce øady ATtiny.
ATtiny2313 Z názvu tohoto mikrokontroléru je jasné, jaký vzor poslouil pro tento typ. Popularita pùvodního typu AT90S2313 donutila výrobce pokraèovat ve výrobì, a tak se na trhu objevil ATtiny2313. Jeho blokové schéma je obr. 5.
Prvními vylepeními, se kterými se u nového typu setkáme, jsou dvojnásobný maximální kmitoèet, který je 20 MHz (verze ATtiny2313V má maximální kmitoèet 10 MHz, ale je schopna pracovat u od napájecího napìtí 1,8 V) a vìtí poèet garantovaných pøepisù pamìti programu z pùvodních 1000 cyklù zápis/mazání na 10 000 cyklù. Jistì si øada ètenáøù klade otázku, proè je zvìtený poèet pøepisù vzpomínán hned na poèátku, kdy 1000 cyklù je dostateèný poèet pro pøípadný upgrade programového vybavení v mikrokontroléru. Je to zcela jistì pravda, ale pro zamýlený úèel je to velmi malý poèet. Tím novým úèelem, novou mylenkou, je poskytnutí monosti ladit programové vybavení pøímo v aplikovaném mikrokontroléru pomocí rozhraní debugWIRE®. Tato mylenka byla pøevzata od vìtích, vyspìlejích, a z toho dùvodu i draích mikrokontrolérù. Vìtí mikrokontroléry mají v sobì vestavìno standardní rozhraní JTAG, díky nìmu jsou pøístupné registry mikrokontrolérù, je øídí jejich èinnost. Toto rozhraní má vak jednu velkou nevýhodu, která je tím vìtí, èím má mikrokontrolér mení poèet pinù. Ano, tím problémem je potøebný poèet signálù pro vlastní rozhraní. A v pøípadì malých pouzder jde omezení velmi citelné. Proto návrháøi navrhli specielnì pro malé a jednoduché mikrokontroléry nové rozhraní, které potøebuje nejmení poèet pinù, který je moný - pouhý 1 pin! Aby i toto omezení bylo co nejmení, jedná se o pin, který se pouívá pro vnìjí reset. Toto nové rozhraní, pouité u nových perspektivních mikrokontrolérù s malým poètem pinù, se nazývá debugWIRE®. Zároveò s uvedením nového rozhraní debugWIRE® byl dán na trh i inovovaný typ emulátoru AVR JTAG ICE mkII, který toto rozhraní podporuje. S jedním, a pomìrnì laciným emulátorem, je moné obsáhnout obì perspektivní øady mikrokontrolérù ATtiny a ATmega. Ostatní vylepení mikrokontroléru ATtiny2313 oproti svému vzoru AT90S2313, budou v porovnání s novým rozhraním debugWIRE® vypadat jako malá, pøesto jde mnohdy o pøíjemná vylepení.
Zdroje øídicího kmitoètu Pozitivní zmìnou je monost vyuít vnitøní oscilátor RC jako zdroj systémového kmitoètu pro celý mikrokontrolér. Mnozí, kteøí pouívali AT90S2313, si urèitì mnohokrát posteskli, proè návrháøi neumonili vyuít tento vnitøní oscilátor RC, který byl urèen pro watchdog. V novém typu tato monost ji je, a tak je moné volit mezi vnitøním a vnìjím zdrojem øídicího kmitoètu. Oproti pùvodnímu oscilátoru 1 MHz je kmitoèet nového pouze 128 kHz. Aby monosti výbìru interních frekvencí byly vìtí, najdeme na èipu jetì jeden oscilátor, tentokráte kalibrovaný,
Konstrukèní elektronika A Radio - 4/2007
V øadì pøípadù tedy aplikace vystaèí s interním oscilátorem a dva piny by mohly být uvolnìny, co v pøípadì pouzdra s malým poètem pinù mùe rozhodnout o vhodnosti èi nevhodnosti daného mikrokontroléru pro aplikaci. Proto návrháøi pøidali do vnitøní struktury port A. Tento nový tøíbitový port nabízí v pøípadì nevyuití vnìjího oscilátoru monost vyuít jeho dva piny jako klasické I/O piny. Tøetím pinem, který mùe být èasto uvolnìn, je pin pro signál externí Reset. Dvojí funkce pinù portu A je vidìt na obr. 5. Obrame svoji pozornost jetì zpìt na obvod watchdogu, který je na obr. 7. Porovnáme-li tento obvod s obvodem z pùvodního typu, zjistíme, e je tento obvod ponìkud rozíøen. Co je ale dùleité, výrobce zachoval zpìtnou kompatibilitu, take obsluha by mìla být stejná. Jeliko kmitoèet vlastního oscilátoru je 8x nií, zmenily se dìlicí pomìry dìlièù tak, aby délka periody obvodu watchdog zùstala stejná.
Napìová reference Protoe pro øadu aplikací je potøebná napìová reference, umístil výrobce tuto napìovou referenci takté na èip vlastního mikrokontroléru. Referenèní napìtí má typicky velikost 1,1 V. Díky takto nízkému napìtí je moné referenci pouít v celém rozsahu napájecích napìtí. I kdy typická spotøeba napìové reference je pouhých 15 µA, myslel výrobce na konstruktéry bojující s kadou µA, take v pøípadì, e není napìová reference potøebná, lze ji vypnout. Po zapnutí je nutno poèkat maximálnì 70 µs, ne se referenèní napìtí ustálí.
USART
Obr. 5. Blokové schéma mikrokontroléru ATtiny2313 který dokáe poskytnout dva kmitoèty, a to 4 a 8 MHz. Kalibrace oscilátoru se provádí zapsáním kalibraèní hodnoty do registru OSCCAL. Vnitøní logika mikrokontroléru zajistí po resetu automatické dosazení kalibraèní hodnoty pro frekvenci 4 MHz. Kalibraèní hodnoty jsou ve skuteènosti dvì, první pro 4 MHz, druhá pro 8 MHz, a jsou umístìny v oblasti pamìti urèené pro identifikaci mikrokontroléru (signature codes). Blokové schéma, jak je øídicí kmitoèet distribuován do vech èástí èipu, je na obr. 6. Díky monosti zapisovat do registru OSCCAL lze v irokém rozsahu mìnit øídicí kmitoèet mikrokontroléru. Je nutné si vak uvìdomit, e èasování zápisu do interních pamìti EEPROM a FLASH je odvozeno právì od kmitoètu tohoto oscilátoru. Pokud je v aplikaci pouit zápis do jedné z tìchto pamìtí, nemìl by uivatel nastavovat kmitoèet jiný ne 8 MHz ±10 %, jinak není zaruèena správná funkce zápisu do tìchto pamìtí.
Dalí èástí, která doznala úprav, je sériový kanál UART, ze kterého se stal kanál USART. Jeho blokové schéma je na obr. 8. Øada vlastností pùvodního kanálu UART byla té zdokonalena.
Obr. 6. Distribuce hodinového kmitoètu v ATtiny2313
Konstrukèní elektronika A Radio - 4/2007
7
ru mùeme pøeèíst jen jednou. Druhé ètení je pak smìrováno do druhého registru, tøetí pak zase do prvního. Z pøedchozího textu je patrné, e v uvaovaných cílových aplikacích je kladen dùraz na komunikaci s ostatními èástmi systému. Pøedpokládá se, e aplikace jsou ji tak nároèné, e se mnohdy mikrokontrolér neobejde bez podpory dalího nebo nìkolika dalích mikrokontrolérù. Jeliko se mikrokontroléry musí spolu domluvit, je nutné mít k tomu patøièné technické prostøedky. To, e tento sériový kanál má slouit pro meziprocesorovou komunikaci, je vidìt i z toho, e nìkteré módy jsou pro tuto komunikaci pøímo pøedurèeny.
Obr. 7. Blokové schéma obvodu WatchDog v ATtiny2313
Rozhraní USI
Obr. 8. Blokové schéma kanálu USART v ATtiny2313 Jak název ji napovídá, kanál je schopen pracovat jak v pùvodním asynchronním módu, tak novì i synchronním módu. Pøenáené datové slovo mùe být nyní i kratí ne 8 bitù, a to konkrétnì 5, 6 èi 7 bitù. Parita, sudá èi lichá, je v novém USARTu generována pomocí hardware a je tímto hardwarem i kontrolována. Zdokonalená logika sériového kanálu je schopna detekovat i nìkteré chyby sériového pøenosu - Data Overrun Error a Framming Error. Dalí zmìnou, akceptovatelnou pro 99 % programù, je zdvojený pøijímací buffer. Jinými slovy, jedná se o dva registry, které se støídají ve funkci, a to, který z nich bude èten a který z nich je pro program neviditelný. Toto se nastavuje právì pøi ètení z uvedeného zdvojeného registru. To znamená, e hodnotu z tohoto zdvojeného regist-
8
USART vak není na novém èipu osamoceným sériovým rozhraním, nebo zde najdeme jetì druhé, nazvané USI. Pod tímto, pro mnohé záhadným názvem, se skrývá univerzální sériový interface s bohatými monostmi komunikace. Jeho blokové schéma je na obr. 9. V podstatì se jedná o synchronní sériové rozhraní, které je moné konfigurovat do dvou rùzných módù. Prvním módem je dvoudrátový mód, kdy pro pøenos jsou pouity dva vodièe. Jeden z nich je urèen pro pøenos dat (SDA), druhý je synchronizaèní (SCL). Blokové schéma rozhraní USI v dvoudrátovém reimu je na obr. 10. Podle názvu signálù ji urèitì øada ètenáøù poznala, e se jedná o rozhraní nazývané firmou ATMEL té TWI (two wire interface), které je podobné rozhraní I2C. I kdy princip a základní módy jsou velmi podobné rozhraní I2C, nedisponuje implementované rozhraní vemi monostmi rozhraní I2C. Pokud vak potøebujeme komunikovat s externí sériovou pamìtí EEPROM èi FLASH nebo dalími mikrokontroléry v aplikaci, splní toto rozhraní svùj úèel velmi dobøe. Výhodou je nízká programová reie mikrokontroléru, tj. komunikace zatìuje vlastní mikrokontrolér velmi málo.
Obr. 9. Blokové schéma rozhraní USI v ATtiny2313
Konstrukèní elektronika A Radio - 4/2007
Obr. 10. Blokové schéma rozhraní USI v dvoudrátovém reimu S tímto módem kanálu USI jsou spojeny dvì zajímavosti. První nich mùeme vidìt na blokovém schématu na obr. 10 v poli oznaèeném MASTER. Tou zajímavostí je fakt, e signál SCL je vytváøen programovì (!) pomocí zmìny hodnoty bitu USCK (port PB bit 7). Vlastní posun vysílaných dat v posuvném registru je dìlán vak hardwarovì. Druhou zajímavostí je fakt, e podøízené zaøízení mùe vloit pøi komunikaci tzv. wait states, neboli èekací stavy. Tato monost pøichází do úvahy napø. v okamiku, kdy se oslovené zaøízení, tedy mikrokontrolér v reimu SLAVE, nachází v módu sníené spotøeby,
Obr. 11. Obvod pro vloení èekacích cyklù
a potøebuje delí èas na probuzení hlavního oscilátoru a start programového vybavení. Podøízený mikrokontrolér (mikrokontrolér v reimu SLAVE) vloí potøebnou dobu pro probuzení tím, e v okamiku detekce stavu (podmínky) START podrí øídicí hodinový kmitoèet (signál SCL) na úrovni log. 0. Jeliko v tomto okamiku nebìí program, je ve udìláno hardwarovì. Jedná se o velmi jednoduchý obvod, který je na obr. 11. Od nadøízeného mikrokontroléru se tedy oèekává, e tento stav bude programovì oetøen tak, e MASTER bude testovat úroveò signálu SCL po vloení úrovnì log. 1. Pokud úroveò signálu zùstane na log. 0, jedná se o stav, kdy podøízený mikrokontrolér ádá o wait state. Pro úplnost dodejme, e je moné o èekací cykly ádat i na konci pøenosu. Druhým módem, ve kterém se mùe rozhraní USI nacházet, je reim tøídrátového rozhraní, které je kompatibilní s rozhraním SPI mód 0 a 1 (bez monosti hw volby Slave Select). Blo-
kové schéma rozhraní USI v tøídrátovém módu je na obr. 12. Tento mód je velmi podobný pøedchozímu. V tomto reimu jsou registry nadøízeného a podøízeného mikrokontroléru propojeny do kruhu. To znamená, e po osmi hodinových cyklech øídicího signálu jsou obsahy obou registrù prohozeny. Stejnì jako v pøípadì dvoudrátového rozhraní je posun vysílaných i pøijímaných dat udìlán hardwarovì, zatímco øídicí hodinový signál musí být generován softwarovì. Z pøedchozího popisu je vidìt, e uvedené sériové rozhraní mùe být vhodným rozhraním pro meziprocesorovou komunikaci èi komunikaci s externími periferními obvody, jako napø. externími sériovými pamìmi EEPROM èi FLASH pro úschovu namìøených dat. I kdy toto rozhraní má mnoho pøedností, má té jednu nevýhodu. Podíváme-li se na obr. 9 pozornì, uvidíme, respektive neuvidíme, ádné buffery pro data. To znamená, e data z pøijímacího registru musí být uklizena døíve, ne zaène pøíjem nového byte. Absence pøijímacího bufferu bude tím citelnìjí, èím budou pøenosové rychlosti vyí. V pøípadì, e v aplikaci není potøeba implementovat ádné z výe zmínìných sériových rozhraní, je moné nìkteré hw prostøedky rozhraní pouít pro jiné úèely. Za pomoci posuvného registru mùeme emulovat dalí asynchronní port (half-duplex), a to mnohem efektivnìji ne v pøípadì èistì softwarové emulace. Velké monosti alternativního vyuití nabízí ètyøbitový èítaè. Tento èítaè (na obr. 9 je u registru USISR) je moné pouít jako nezávislý ètyøbitový èítaè schopný generovat pøeruení. Pøi jeho pouití je nutné si uvìdomit, e tento èítaè inkrementuje svoji hodnotu pøi kadé zmìnì externího vstupního signálu, tj. reaguje jak na vzestupnou, tak i na sestupnou hranu externího hodinového signálu. Tento èítaè mùe být prodlouením osmibitového èítaèe/èasovaèe 0. Spojením obou èítaèù máme k dispozici dvanáctibitový èítaè/èasovaè. V tom pøípadì je tento ètyøbitový èítaè inkrementován pøi pøeteèení èítaèe/èasovaèe 0. Ètyøbitový èítaè nám mùe té pomoci v pøípadì, e nám schází jedno externí pøeruení. Tento èítaè lze toti pøednastavit na hodnotu 0FHEX. V tom pøípadì èítaè pøeteèe pøi první zmìnì úrovnì vstupního signálu a bude tedy hned generovat pøeruení. Vzhledem k faktu, e je moné generovat øídicí hodinový signál pro tento èítaè té softwarovì zmìnou hodnoty bitu USICLK èi USITC (viz registr USICR - USI clock registr v originálním manuálu ATtiny2313), lze tento èítaè pouít pro softwarový interrupt.
Nové instrukce Obr. 12. Blokové schéma rozhraní USI v tøídrátovém módu
Poslední novinkou, kterou dali vývojáøi do vínku zmodernizovanému mikrokontroléru, je monost ètení a zápisu
Konstrukèní elektronika A Radio - 4/2007
9
do programové pamìti pomocí instrukcí LPM a SPM. Díky tìmto instrukcím je mono provádìt update programového vybavení v hotovém zaøízení i na dálku. Jak je i z výe uvedeného krátkého popisu vidìt, vylepený typ ATtiny2313 je více ne dùstojným následníkem svého vzoru AT90S2313. Díky tìmto úpravám se okruh cílových aplikací, pro které je tento malý, ale výkonný mikrokontrolér vhodný, velmi rozíøil. Závìrem tohoto krátkého pøedstavení nového mikrokontroléru si dovolím upozornit na jednu vìc na kterou bychom nemìli zapomenout. Tato vìc souvisí s rozhraním debugWIRE® (èi JTAG) a sám výrobce ji na mnoha místech pøipomíná. Jedná se o to, e pokud jsme mikrokontrolér pouili k ladìní programového vybavení, tak tento mikrokontrolér by nemìl být pouit ve finálním výrobku. I kdy programová pamì FLASH má povolený poèet pøepisù 10 000 cyklù zápis/mazání, bude v horí kondici ne pamì, která pro toto ladìní nebyla pouita. Tento fakt nabývá na významu pøedevím v takových pøípadech, jako jsou aplikace, které pracují v irokém teplotním rozsahu èi za zhorených podmínek napájení (napájení se pohybuje na okrajích povoleného rozsahu).
ATtiny24/ATtiny44/ /ATtiny84 I kdy se jedná o tøi typy, lze na nì pohlíet jako na typ jeden, nebo se opìt lií pouze velikostí pamìtí - programové FLASH (2 kB/4 kB/8 kB), datové SRAM (128 Byte/256 Byte/512 Byte) a datové EEPROM (128 Byte/256 Byte/ /512 Byte). Mikrokontrolér mùe být zapouzdøen do celkem tøí rùzných pouzder - do DIL14, SOIC14 a QFN/MLF20. Blokové schéma tìchto mikrokontrolérù je na obr. 13. Na první pohled zde není nic výjimeèného, ale pokud se podíváme pozornìji, zjistíme, e novinky z typu ATtiny2313 zde zùstaly zachovány.
debugWIRE® Asi nejvìtím zdokonalením nových mikrokontrolérù øady ATtiny je zajisté rozhraní pro ladìní programového vybavení v cílové aplikaci nazvané firmou ATMEL debugWIRE®. Je více ne potìující, e toto rozhraní najdeme i u tohoto mikrokontroléru.
Varianty mikrokontrolérù Stejnì jako u pøedchozího typu, mikrokontroléru ATtiny2313, i zde existují dvì verze kadého typu, které se lií sufixem V, napø. ATtiny44 a ATtiny44V. Typ bez sufixu V je urèen pro uí rozsah napájecího napìtí (2,7 a 5,5 V), ale je schopen pracovat s øídicím kmitoètem a 20 MHz. Druhý typ se sufi-
10
Obr. 13 . Blokové schéma mikrokontrolérù ATtiny24/44/84 xem V je urèen pro irí rozsah napájecího napìtí, konkrétnì 1,8 a 5,5 V, ale maximální kmitoèet, na kterém je mikrokontrolér schopen pracovat, je 10 MHz. Typy se sufixem V jsou tedy pøedurèeny pro aplikace, kde je kladem hlavní dùraz na nízkou spotøebu, nebo typický odbìr pracujícího mikrokontroléru s øídicím kmitoètem 1 MHz a napájením 1,8 V èiní 380 µA (active mode). Pokud nìkomu pøipadá kmitoèet 1 MHz nízký, mìl by si uvìdomit, e výpoèetní výkon pøi této frekvenci je obdobný výpoèetnímu výkonu legendárních mikrokontrolérù 80C51 (klasické jádro s dvanácti takty na instrukci) pracujících na kmitoètu 12 MHz! V reimu sníené spotøeby (power-down mode) je odbìr mikrokontroléru se stejným napájecím napìtím pouhých 100 nA.
Nové instrukce Nech jsou návrháøi tìchto mikrokontrolérù pochváleni, nebo i u tìchto malých mikrokontrolérù existuje monost ètení a zápisu do programové pamìti pomocí instrukcí LPM a SPM. Díky tìmto instrukcím je mono provádìt update programového vybavení v hotovém zaøízení i na dálku èi pouívat velké tabulky konstant, které svojí velikostí pøesahují velikost pamìti EEPROM.
Zdroje øídicího kmitoètu Dalím potìujícím faktem jsou bohaté monosti taktování mikrokontroléru. Blokové schéma systému distribuce øídicích kmitoètù je na obr. 14. Z tohoto obrázku mùeme vidìt, e kromì externího oscilátoru jsou zde monosti, jak taktovat mikrokontrolér z vnitøních oscilátorù. Tyto monosti pøijdou u mikrokontroléru s pouhými ètrnácti piny jistì v øadì pøípadù vhod, nehledì na fakt, e vyuitím vnitøních oscilátorù sniujeme náklady na aplikaci. Jak je z obr. 14 zøejmé, je moné vyuívat celkem dva interní zdroje kmitoètu. Prvním z nich je kalibrovaný oscilátor 8 MHz, který je moné kalibraèní konstantou zkalibrovat a na pøesnost ±1 %, co je pro øadu aplikací více ne dostateèné. Kalibraèní konstanta pro napájecí napìtí 3 V a teplotu okolí 25 °C je opìt èástí pamìti urèené pro identifikaci mikrokontroléru (signature codes). Touto hodnotou je automaticky pøi studeném startu mikrokontroléru inicializován registr OSCCAL. Tento registr je dostupný i za bìhu mikrokontroléru. I kdy je moné tento oscilátor ladit v relativnì irokém rozsahu, výrobcem doporuèený rozsah frekvencí je 7,3 a 8,1 MHz. V tomto rozsahu lze toti nastavit poadovanou frekvenci s pøes-
Konstrukèní elektronika A Radio - 4/2007
zovat pro práci v pomìrnì irokém rozsahu kmitoètù (od 0,4 MHz výe) pomocí konfiguraèních bitù CKSEL1..3. Mikroprocesor lze té taktovat pomocí tzv. hodinkového krystalu s kmitoètem 32 kHz. Pro tento typ krystalu zde existuje speciální interní oscilátor (Low Frequency Oscilator). Lze tedy konstatovat, e monosti taktování mikrokontrolérù ATtiny24/44/ /84 jsou podstatnì bohatí ne u ATtiny2313. Lze jen doufat, e toto uspoøádání se bude objevovat i v dalích nových typech mikrokontrolérù øady ATtiny.
Módy se sníenou spotøebou
Obr. 14. Distribuce øídicích kmitoètù v ATtiny24/44/84
Obr. 15 - Závislost fRC na hodnotì OSCCAL v ATtiny24/44/84 ností ±1 %. Druhým dùvodem je fakt, e kmitoètem tohoto oscilátoru je øízen i zápis do interní pamìti FLASH a EEPROM (viz obr. 14). Pokud nastavíme kmitoèet oscilátoru vyí ne 8,8 MHz, není zaruèeno, e zápis do tìchto pamìtí probìhne bezchybnì. Dalí zajímavostí nastavování kmitoètu pomocí hodnoty registru OSCCAL je fakt, e rozsah ladìní je rozdìlen do dvou podrozsahù. Oba podrozsahy se vak èásteènì pøekrývají, take kmitoèet pøi hodnotì 0x7F (=07FHEX) v registru OSCCAL bude vyí ne kmitoèet pøi hodnotì 0x80 (=080HEX). Na to je nutno pøi vlastní kalibraci nezapomenout. Popsanou situaci ukazuje obr. 15. Idea kalibrovaného interního oscilátoru vak byla oproti ATtiny2313 pozmìnìna, nebo zde existuje pouze oscilátor 8 MHz (a watchdog oscilátor 128 kHz, který je nekalibrovaný). Pøi pouití 8 MHz oscilátoru je nutné si dát pozor na povolený maximální kmitoèet pøi daném napájecím napìtí. Pokud je povolený kmitoèet nií, je nutné pouít interní pøeddìliè, který sníí taktovací kmitoèet pro mikrokontrolér na 1 MHz (dìlicí pomìr 8, konfiguraèní bit CKDIV8, více dále).
Tím vak monosti nastavení taktování nekonèí. Návrháøi implementovali do mikrokontroléru monost zvolit si pro taktování kmitoèet zvoleného zdroje vydìlený 1x, 2x, 4x, 8x, 16x, 32x, 64x, 128x nebo 256x (registr CLKPR - Clock Prescale Register). Tento dìlící pomìr je moné mìnit i za bìhu (!) mikrokontroléru, take uivatel má monost dynamicky optimalizovat výpoèetní výkon mikrokontroléru a tím i jeho spotøebu. Tento pøeddìliè je pouit i ve výe zmiòovaném pøípadì uití konfiguraèního bitu CKDIV8. Princip je stejný jako v pøípadì kalibraèní konstanty pro interní RC oscilátor, tj. hodnota bitu je automaticky nahrána do pøísluného bitu registru CLKPR pøi studeném startu mikrokontroléru. Pøi pouití oscilátoru 128 kHz jako zdroje øídicího kmitoètu nesmíme zapomenout na to, e tento oscilátor nelze kalibrovat a jeho kmitoèet je více závislý na teplotì a napájecím napìtí. Kromì dvou interních oscilátorù lze taktovat mikrokontroléry ATtiny 24/44/ /84 té i z externího zdroje kmitoètu èi pouít interní oscilátor, který je øízen externím krystalem èi keramickým rezonátorem. Tento oscilátor lze optimali-
Dalí oblastí, kde je moné vidìt velký pokrok oproti starím typùm, jsou módy se sníenou spotøebou. I na vlastních módech je vidìt, e návrháøi navrhli módy velmi peèlivì. Díky tomu jsou jednotlivé reimy se sníenou spotøebou v mnoha pøípadech velmi uiteèné. Najdeme zde mód, kdy je zastavena centrální jednotka mikrokontroléru a programová pamì, ale i standby mód, kdy mikroprocesor je zastaven úplnì a reaguje pouze na vnìjí pøeruení. Mezi velmi uiteèné módy bude urèitì patøit reim oznaèený jako ADC noise reduction mode, tj. mód se sníeným ruením. Jak u z názvu vyplývá, mikroprocesor, respektive jeho pøísluné èásti, jsou vypnuty tak, aby ruivé signály, které mohou ovlivnit pøesnost pøevodu interního analogovìdigitálního (A/D) pøevodníku, byly omezeny na minimum. Díky tomu je moné snadnìji vyuít pøesnosti interního desetibitového A/D pøevodníku. Fakt, e to výrobce myslí vánì s úspornými módy, které pøijdou vhod napø. v bateriovì napájených aplikacích, je poznat i z toho, e nìkterým periferiím je moné, v pøípadì e nejsou potøebné, odpojit napájení a dále tak sníit pøíkon mikrokontroléru. Celkem lze zakázat funkci pìti periferiím: A/D pøevodníku, analogovému komparátoru, Brown-out detektoru, interní napìové referenci a watchdogu. I kdy se nìkomu mùe zdát, e se v praxi jedná o témìø zanedbatelné odbìry, v øadì pøípadù jsou tyto odbìry rozhodující. Vdy napø. pokud v powerdown modu necháme zapnutý jen obvod watchdog, bude mikrokontrolér odebírat typicky 10 µA pøi napájení 3 V. Za stejné situace, avak s vypnutým obvodem watchdog, bude odbìr typicky pouhý 1 µA ! Jak je z pøedchozího krátkého popisu moností reimù se sníenou spotøebou vidìt, je tìmto reimùm u nových mikrokontrolérù vìnována velká pozornost. Díky uvedeným reimùm se oblast moného nasazení tìchto nových mikrokontrolérù znaènì rozíøila, a to zejména do oblasti bateriovì napájených aplikací.
Watchdog Chce-li výrobce se svým mikrokontrolérem uspìt i v prùmyslových aplikacích (a nejen tìch), musí být
Konstrukèní elektronika A Radio - 4/2007
11
a o nìco sloitìjí obvodové øeení. Z hlediska uivatele jsou nevýhodou pouze pevnì dané priority, nebo obvodové øeení øadièe pøeruení je záleitostí výrobce. Pevnì dané priority jednotlivých událostí nemusí být velkým problémem, pokud uivatel provede peèlivì analýzu øeení a pøípadnì vhodnì upraví øeení podle daných priorit.
Èítaè/Èasovaè0
Obr. 16. Obvody watchdog v ATtiny24/44/84 mikrokontroléry vybaveny co moná nejdokonalejím systémem, který hlídá regulérní bìh programu a v pøípadì problémù resetuje vlastní mikrokontrolér. I tady byl udìlán velký pokrok v porovnání se standardními mikrokontroléry 89C51. Schéma obvodù hlídajících mikrokontrolér je na obr. 16. Hlídací obvody lze rozdìlit do dvou kategorií - na obvody hlídající napájecí napìtí a na obvody èasové. Co se týká napájecího napìtí, nejzajímavìjí je obvod Brown-out, který má na starosti detekci krátkodobých poklesù napájecího napìtí mikrokontroléru pod nastavenou mez. Zachytit vèas pokles napájecího napìtí je velmi dùleité. Pokud tento pokles zachytíme vèas a úroveò detekce poklesu je správnì nastavena, máme dostatek èasu na uloení vech dùleitých hodnot do nonvolatilní pamìti (napø. EEPROM) a vypnutí periférií. Poté vìtinou program ji èeká, zda se napájecí napìtí vrátí na normální úroveò nebo poklesne a na nulu. Pokud nìkoho zaráí, proè je vhodné periferie pøi poklesu napájecího napìtí vèas uvést do klidového stavu, je toto pøinejmením vhodné u výkonových souèástek. Napø. tranzistory mohou být pøi poklesu málo buzeny, co zapøíèiní jejich nedokonalé otevøení. Na nedokonale otevøených tranzistorech bude vìtí úbytek napìtí, co pøi protékajícím proudu znamená i zvýenou výkonovou ztrátu. Pokud tento výkon, mìnící se na tranzistoru na teplo, pøekroèí urèitou mez, následuje znièení výkonového prvku, a u je to bipolární èi MOSFET tranzistor. Obvod Power-On Reset se stará o øádný start mikrokontroléru pøi nábìhu napájecího napìtí. Stejnou funkci má i odvod Watchdog Timer. Tento timer musí být pravidelnì v urèitém intervalu uivatelským programem resetován, jinak je vyvolán opìt klasický studený restart mikrokontroléru. Tímto jednoduchým zpùsobem je zaruèeno, e kdy program zabloudí a s nejvìtí pravdìpodobností pak nebude resetovat obvod
12
watchdog, bude po nastavené dobì vyvolán reset mikrokontroléru. Reset obvodu watchdog se provádí urèitou sekvencí, která minimalizuje monost faleného resetování tohoto obvodu.
Pøeruení U vìtiny mikrokontrolérù mùe být bìh programového vybavení pøeruen tzv. pøeruením. Mikrokontroléry AVR, tedy i ATtiny 24/44/84, jsou pøedstavitelé øeení vektorového systému pøeruení. To znamená, e kadé události, napø. pøeteèení èítaèe/èasovaèe, vnìjímu pøeruení èi dokonèení A/D pøevodu, je pøiøazen samostatný vektor pøeruení, nebo, chcete-li, adresa, na které se nachází obsluný program pro danou událost. Výhodou tohoto øeení je rychlá reakce na pøeruení, nebo není nutno programovì zjiovat, která událost ádá o pøeruení. Samozøejmì toto øeení, stejnì jako kadá jiná vìc, má i svá negativa. Tìmito negativy jsou pevnì dané priority,
I kdy se jedná pouze o osmibitový èítaè, jsou jeho monosti velmi iroké, co lze posoudit i z pouhého blokového schématu na obr. 17. Na obrázku mùeme napø. vidìt, e tento èítaè disponuje dvìma jednotkami (kanály) PWM. Základem tohoto v pravdì multifunkèního bloku je osmibitový èítaè TCNTn, který dokáe èítat jak vnitøní hodinový kmitoèet (reim èasovaèe) z pøedøazeného pøeddìlièe, tak i vnìjí kmitoèet (reim èítaèe). Dùleitým faktem je také to, e èítaè umí èítat jak nahoru, tak i dolù. To je, jak uvidíme pozdìji, dùleité v jednom módu generování PWM signálu (tzv. phase correct PWM mode). Hodnota výstupu èítaèe je porovnávána dvìma jednotkami komparátorù. Pøi dosaení shody uloené hodnoty s hodnotou v registru èítaèe mùe být generováno pøeruení a/nebo zmìnìn stav výstupního bitu (generování signálu PWM). Hodnota z registru OCRnA (n=0) mùe být v jednom z implementovaných módù brána jako vrchní mezní hodnota pro krácení cyklu èítaèe. V tomto módu, nazvaném CTC (Clear Timer on Compare match), mùeme tedy mìnit frekvenci generovaného PWM signálu i jeho støídu, co vak vyaduje programovou obsluhu. Situaci ilustruje obr. 18. Zmìna støídy nastala v periodì 2 následkem zmìny hodnoty registru OCRnA (n=0).
Konstrukèní elektronika A Radio - 4/2007
Obr. 17. Blokové schéma èítaèe/èasovaèe0 v ATtiny24/44/84
Obr. 18. Reim CTC v ATtiny24/44/84
vaný mód (COM0x1:0=2). Popsanou situaci ilustruje obr. 20. Pokud se podíváme na uvedený obrázek pozornì, uvidíme, e signál PWM je symetrický okolo bodu dosaení hodnoty BOTTOM, tj. okolo bodu, ve kterém èítaè mìní smìr èítání ze sestupného na vzestupné. V tomto bodì je té nastaven pøíznak TOVn. Aby byla tato symetrie zachována, je nutné zapisovat novou hodnotu do registru OCRnx v bodì dosaení hodnoty TOP , tj. v bodì, ve kterém se mìní smìr èítání ze vzestupného na sestupné. Je zde té nastavován pøíznak OCnx. Tento reim má sice maximální frekvenci výstupního signálu polovièní, ne je maximální frekvence v módu Fast PWM, ale díky symetrii generovaných impulsù je vhodný pro øízení motorù.
Èítaè/Èasovaè1
Obr. 19. Reim Fast PWM v ATtiny24/44/84
Obr. 20. Reim Phase Correct v ATtiny24/44/84 Druhým reimem PWM, ve kterém mùe pracovat èítaè/èasovaè0, je tzv. Fast PWM (obr. 19.). Základním rozdílem tohoto módu oproti pøedchozímu je fakt, e èítaè pøi dosaení shody s hodnotou v registru OCRnA, pøípadnì OCRnB (n=0), není nulován, ale je pouze ovlivnìn pøísluný výstupní bit, a to tak, e pøi dosaení shody hodnoty èítaèe s hodnotou v registru OCRnA èi OCRnB (n=0) je výstupní bit vynulován. Výstupního bit se nastaví do úrovnì log. 1 pøi pøeteèení èítaèe. Zmiòované hodnoty platí pro standardní mód (COMnx1:0=2), v pøípadì negovaného výstupu jsou opaèné (COMnx1:0=3). Hodnota v registrech OCRnA a/nebo OCRnB urèuje tedy jen støídu, a nikoli frekvenci generovaného signálu PWM. Èítaè je vynulován a po dosaení hodnoty TOP. Aby bylo moné mìnit i periodu (resp. frekvenci) výstupního signálu, a ne jenom støídu, je moné vyuít registr OCRnA jako registr urèující periodu výstupního signálu. Pro generování
signálu PWM nám tedy zbude v tomto pøípadì pouze jeden kanál. Výhodou tohoto reimu je dvojnásobná frekvence oproti módu Phase Correct. Je tudí vhodný pro výkonové aplikace typu regulace výkonu, støídaèe, pøevodníky D/A a dalí. Díky vyím frekvencím jsou potøebné filtraèní indukènosti a kapacity mení, a tudí i souèástky jsou ménì rozmìrné. Posledním módem generování PWM signálu je ji zmiòovaný Phase Correct mód (obr. 20). Pøi tomto módu èítaè èítá nejdøíve nahoru. Pøi dosaení hodnoty TOP poène èítat smìrem dolù. Pøi dosaení hodnoty BOTTOM zaène èítat opìt smìrem nahoru. Výstupní bit OCn se opìt mìní pøi dosaení shody hodnoty registru èítaèe s hodnotou v registru OCRnx, a to tak, e výstupní bit OCn se nastaví do stavu log. 1, pokud èítaè èítá smìrem dolù. Kdy èítaè èítá smìrem nahoru, pøi dosaení shody se nastaví výstupní bit OCn do stavu log. 0. Toto platí pro neinverto-
Podíváme-li se na blokové schéma (obr. 21) tohoto èítaèe/èasovaèe, zjistíme, e se velmi podobá pøedchozímu èítaèi/èasovaèi a hardwarovì se lií pouze pøidanou jednotkou Input Capture Unit. Dalí zmìnou, která nemùe být na obr. 21 vidìt, je pøidaný mód Phase and Frequency Correct PWM. Nejvìtí zmìna, opìt neviditelná na obr. 21, se týká bitové íøky vech registrù, které jsou estnáctibitové! To dává uivateli monost mnohem pøesnìji generovat signály PWM. Na stranì druhé, je obsluha estnáctibitových registrù o trochu sloitìjí, nebo datová sbìrnice mikrokontroléru je pouze osmibitová. Problém úzké datové sbìrnice byl vyøeen, a to elegantnì, pøidáním doèasného registru pro vyí byte estnáctibitového slova a zápis èi ètení do estnáctibitového registru probìhne dvoufázovì. Pøi zápisu je nutné nejdøíve zapsat vyí byte, pak nií byte. Pøi zápisu vyího byte dat je tento byte vlastnì zapsán do doèasného registru. Operace zápisu niího byte provede nejenom vlastní zápis hodnoty do niího byte registru, ale té zpùsobí pøepis hodnoty z doèasného registru do vyího byte. Tímto jednoduchým a elegantním zpùsobem je oetøena situace zápisu estnáctibitové hodnoty. Pøi vlastním zápisu je nutné si uvìdomit dvì fakta. Prvním faktem je, e doèasný registr je v mikrokontroléru jenom jeden, co znamená, e tento registr je spoleèný pro vechny estnáctibitové registry periferií. Druhý fakt vyplývá z prvního, nebo vlastní zápis do estnáctibitového registru se sestává ze dvou instrukcí. Nebezpeèí se nazývá pøeruení. Musíme si uvìdomit, e pøeruení mùe být vyvoláno mezi první a druhou instrukcí zápisu, a pokud se ve vyvolaném pøeruení pøepíe hodnota doèasného registru, bude po návratu z pøeruení do vyího byte zapsána jiná hodnota, ne byla v doèasném registru pøed pøeruením. Proto je nutné pøed vlastním zápisem zakázat vechna pøeruení a po vlastním zápisu pøeruení hned povolit.
Konstrukèní elektronika A Radio - 4/2007
13
Obr. 21. Èítaè/èasovaè1 v ATtiny24/44/84 Uveïme si pøíklad zápisu do registru TCNT1 v jazyku symbolických adres, neboli v assembleru: Write_TCNT1: in r18,SREG cli out
TCNT1H,r17
out
TCNT1L,r16
out
SREG,r18
ret
cli in
r16,TCNT1L
in
r17,TCNT1H
out
SREG,r18
ret
return i; }
;uschovej stav ;registru pøeruení ;zaka vechna pøe;ruení ;zapi vyí byte do ;doèasného registru ;zapi nií byte ;registru + vyí ;byte z doèasného ;registru ;obnov stav registru ;pøeruení
Obdobnì je nutné provádìt i ètení z estnáctibitových registrù: Read_TCNT1: in r18,SREG
SREG = sreg;
;uschovej stav re;gistru pøeruení ;zaka vechna pøe ;ruení ;èti nií byte re;gistru + vyí byte ;do doèasného regis;tru ;èti vyí byte z ;doèasného registru ;obnov stav registru ;pøeruení
/* obnov stav registru pøeruení */ /* vra hodnotu registru TCNT1 */
Analogicky bude vypadat zápis: void Write_TCNT1(unsigned int i ) { unsigned char sreg; sreg = SREG; /* uschovej stav registru pøeruení */ _CLI(); /* zaka vechna pøeruení */ TCNT1 = i; /* Zapi hodnotu do registru TCNT1 */ SREG = sreg; /* obnov stav registru pøeruení */ return; /* konec */ }
Pokud se nìkdo diví, proè je nutné provádìt zápis èi ètení do estnáctibitových registrù takto sloitì, mìl by si
uvìdomit, e øada registrù mìní svoji hodnotu prùbìnì. Pøíkladem nech je právì registr TCNT1, který mùe být inkrementován èi dekrementován kadý hodinový takt, take pokud bychom provádìli zápis èi ètení do/ze estnáctibitového registru dvìma samostatnými instrukcemi, nemusí si pøeètené èi zapsané hodnoty odpovídat (druhý byte mùe být mezitím inkrementován èi dekrementován), co mùe vést k nedefinovaným výsledkùm. Novou èástí, která se u osmibitového èítaèe/èasovaèe0 nevyskytuje, je vstupní záchytný registr (Input Capture Register). Tento registr je schopen zachytit stav èítaèe/èasovaèe1 (èas) v okamiku výskytu události na pinu ICP1 nebo zmìnì stavu interního napìového komparátoru. Blokové schéma popisované jednotky ICR1 je na obr. 22. Tato jednotka je vhodná napø. pro mìøení èasové vzdálenosti dvou událostí, co je napø. uiteèné pro reciproké mìøení frekvence. Jak ji bylo øeèeno, dalí odliností èítaèe/èasovaèe1 oproti èítaèi/èasovaèi 0 je pøidaný jeden nový mód umoòující generovat PWM. Tento mód je pokraèováním Phase Correct módu a nazývá se Phase and Frequency Correct Mode. Tento mód zachovává správné nejen fázové pomìry výstupního signálu, ale té i frekvenci. Výstupní signál generovaný v tomto módu je na obr. 23. Obsah registru pøi tomto reimu je aktualizován v okamiku dosaení hodnoty BOTTOM. K pøíjemným vlastnostem èítaèe/èasovaèe1 je moné poèítat i monost definice hodnoty TOP nejenom registrem OCR1A, ale té registrem ICR1, take v pøípadì pouití ICR1 pro hodnotu TOP nám zbývají pro generování signálu signálù PWM stále dva kanály.
Analogový komparátor Protoe reálný svìt je v podstatì analogový, je v mnoha pøípadech potøebné snímat èi mìøit nìjakou analogovou velièinu. V té chvíli pøijde vhod A/D pøevodník, avak v celé øadì pøípadù staèí pouhý analogový komparátor.
Pokud nìkdo píe programy v jazyku C, ètení by vypadalo následovnì: unsigned int Read_TCNT1( void ) { unsigned char sreg; unsigned int i; sreg = SREG; /* uschovej stav registru pøeruení */ _CLI(); /* zaka vechna pøeruení */ i = TCNT1; /* Preèti obsah registru TCNT1 a uschovej ho v i */
14
Obr. 22. Jednotka Input Capture v ATtiny24/44/84
Konstrukèní elektronika A Radio - 4/2007
Obr. 23. Reim Phase a Frequency Correct Mode v ATtiny24/44/84 Obr. 24. Analogový komparátor v ATtiny24/44/84
Tento komparátor najdeme integrován i v právì pøedstavovaném mikrokontroléru. Blokové schéma je na obr. 24. I kdy svým zapojením velmi pøipomíná mnoho podobných komparátorù, pøesto proel nìkolika pozitivními zmìnami. První zmìnou je interní napìová reference 1,1 V (typicky), která mùe, ale nemusí být pøipojena na neinvertující vstup komparátoru. Na negativní vstup komparátoru lze pøivést buï signál z pinu AN1 nebo, co je pøínosem, ze vstupního analogového multiplexeru pøeøazeného internímu A/D pøevodníku, take mùeme porovnávat napìtí z celkem osmi externích vstupù. Komparátor lze nakonfigurovat tak, e pøi definované zmìnì (sestupná hrana, vzestupná hrana èi jakákoliv zmìna) na výstupu vyvolá pøeruení. Výstup komparátoru je té zaveden do èítaèe/èasovaèe1, pøesnìji do Input Capture Unit. Tato jednotka je schopna zachytit do záchytného registru stav volnì bìícího èítaèe této jednotky a tím vlastnì urèit èas zmìny výstupu komparátoru.
Vlastnosti pøevodníku jsou dány pouitou metodou. Doba pøevodu se mùe pohybovat v rozsahu 13 a 260 µs, tj. pøevodník je schopen provést maximálnì 76 900 pøevodù/s. Pokud nìkoho zaráí, e je uvedena i dolní mez (nejdelí doba pøevodu), která je 260 µs, je to jednak z dùvodù ruení analogové
èásti èástí digitální, jednak proto, e pøevodník je navren jako dynamický a nikoliv statický. Pøi pozorném studiu datasheetu lze narazit na údaje o pøesnosti pøevodu a o rùzných chybách v závislosti na dobì pøevodu. Podle oèekávání jsou chyby pøevodu minimální v oblasti støedních dob pøevodu. Optimální taktovací kmitoèet pro pøevodník je øádovì 200 kHz (A/D pøevodník má svoji dìlièku, take je moné volit rychlost pøevodu celkem z celkem sedmi moností, viz obr. 26), pøièem plná pøesnost pøevodu je zachována do asi 15 ks/s (15 000 pøevodù/s). Vlastnímu pøevodníku je pøedøazen obvod S&H a analogový multiplexer, který dovoluje vyuít a vech osm pinù brány A jako analogových vstupù pøevodníku. Výrobce udává, e mikrokontrolér disponuje a 8 SE vstupy nebo a 12 diferenèními vstupy. Pokud je v aplikaci zapotøebí mìøit malá napìtí, ani pak není nutné pouívat externí zesilovaè, nebo A/D pøevodník disponuje moností zesílit signál 20x. Vstupní analogový multiplexer má vak kromì osmi externích vstupù jetì dalí tøi interní. Jeden má potenciál analogové zemì, druhý je pøipojen na interní teplotní senzor, který mùe mìøit teplotu èipu, a na zbylý tøetí je pøipojena napìová reference 1,1 V. Jako napìovou referenci lze pouít buï právì jmenovanou interní referenci 1,1 V, nebo externí referenci, èi pøímo napájecí napìtí mikrokontroléru.
A/D pøevodník Jak ji bylo øeèeno, je v mnoha aplikacích tøeba mìøit analogové velièiny, a protoe je mikrokontrolér nedokáe zpracovat v této formì, musí se pøevést do formy èíslicové. Nìkde staèí pouhý komparátor, jinde se neobejdeme bez A/D pøevodníku. Proto v tomto mikrokontroléru najdeme pomìrnì kvalitní desetibitový A/D pøevodník pracující metodou postupné aproximace (tzv. successive approximation), jeho schéma je na obr. 25.
Konstrukèní elektronika A Radio - 4/2007
Obr.25. Blokové schéma A/D pøevodníku v ATtiny24/44/84
15
Obr. 26. Pøeddìlièka A/D pøevodníku v ATtiny24/44/84
Obr. 27. Analogový vstup A/D pøevodníku v ATtiny24/44/84 Pøevodník mùe pracovat v jednom ze dvou módù - jednorázovém nebo kontinuálním. Aby se zmenilo ruení pøi vlastním pøevodu, lze uvést mikrokontrolér do reimu se sníenou spotøebou nazvaného ADC Noise reduction mode, pøi kterém je ruení digitální èástí zanedbatelné. Pøevodník tak má daleko lepí podmínky pro mìøení a tudí vlastní pøevod by mìl být pøesnìjí. Pøi návrhu zaøízení, ve kterém budeme vyuívat pøevodník, si musíme dát pozor na nìkolik vìcí, je mohou negativnì ovlivnit mìøení. V první øadì je to vhodný návrh desky s plonými spoji. Dále je to vzpomínaný vysoký nebo nízký øídicí kmitoèet pøevodníku. Takté nesmíme zapomenout na to, e nìjakou dobu trvá nabití vzorkovacího kondenzátoru, take pokud je vstupní kmitoèet pøíli vysoký, mùeme dojít pøi mìøeních k úplnì chybným výsledkùm. Podobné problémy mùe zpùsobit velký vnitøní odpor objektu, jeho napìtí chceme mìøit. Problémová místa mùeme odhalit, podíváme-li se na náhradní zapojení analogového vstupu A/D pøevodníku. V první øadì jsou to proudy IIH a IIL. I kdy jsou malé (kolem 0,05 µA), mohou vyvolat falený úbytek na vnitøní impedanci zdroje signálu. Chyba vyvolaná tìmito proudy bude tím vìtí, èím bude impedance zdroje mìøeného signálu vìtí. Druhým problémovým místem, ve kterém mùe vyí impedance zdroje mìøeného signálu sehrát roli, je doba vzorkování. Èím je impedance vyí, tím musí být doba vzorkování delí. Aby bylo moné vyuívat plnì schopností popisovaného A/D pøevodníku, musí být impedance zdroje signálu rovna nebo nií ne 10 kΩ. Pokud bude impedance vyí, mùe chyba mìøení narùstat díky faktu, e se vzorkovací kondenzátor nestaèí nabít na napìovou úroveò mìøeného zdroje signálu.
16
Dalím zdrojem chyb mùe být nevhodný návrh desky s plonými spoji. Pokud chceme mìøit s co nejvyí pøesností, mìli bychom analogové spoje dìlat co nejkratí. Analogová zem by mìla být spojena s digitální v jednom místì. Vechny analogové èásti by mìly být vzdáleny co moná nejvíce od digitálních signálù s vyí frekvencí. Tyto signály jsou vìtinou obdélníkového tvaru, take obsahují øadu harmonických, a èím vyí frekvenci má signál, tím lépe se pøenáí pøes parazitní kapacity mezi plonými spoji. Z tohoto dùvod by analogový a digitální signál nemìly mít spoje blízko u sebe a tyto spoje by nemìly být soubìné. V neposlední øadì je dobré pamatovat na to, e ruení je generováno i samotným èipem (hodinový signál, øídicí kmitoèty pro periferie atd.), a je tudí vhodné pouívat pøi mìøení pomocí A/D pøevodníku mód se sníenou spotøebou, ve kterém je ruení èipem minimalizováno (ADC Noise reduction mode). Pøi pouívání tohoto módu si je nutné uvìdomit, e i jakýkoliv jiné povolené pøeruení mùe ukonèit tento mód. Popis tohoto mikrokontroléru ukonèeme uvedením jeho spotøeby, která èiní typicky 6 mA pøi napájení 5 V a frekvenci 8 MHz. Pokud provozujeme mikrokontrolér pøi napájecím napìtí 3 V a frekvenci 4 MHz, bude jeho spotøeba èinit pouhé 2 mA. Pøi tomto napájení je
v reimu Power-down mode pøi zapnutém WDT odbìr pouhé 4 µA a odbìr mùe dále klesnout na 0,15µA v pøípadì, e funkci obvodu WDT zakáeme. Závìrem lze tedy konstatovat, e tento mikrokontrolér je vhodný pro iroké spektrum aplikací vèetnì aplikací napájených z baterií, kdy velkou roli hraje i spotøeba.
ATtiny25/ATtiny45/ /ATtiny85 U jen velmi podobný název by mohl svádìt k mylence, e jde pouze o mikrokontrolér shodný s ATtiny24/44/ /84 v osmivývodovém pouzdru. Toto je pravdivé pouze èásteènì, jak mùeme vidìt na blokovém schématu na obr. 28a. Pøednì zde najdete pouze jediný I/O port, pøièem kadý z pinù má nìkolik funkcí (kromì dvou napájecích pinù) - viz obr. 28b. Na toto je nutné pamatovat, nebo i kdy je tento mikrokontrolér co do poètu periferií vybaven velmi dobøe, mùeme se dostat do situace, kdy potøebujeme funkce, které jsou sdíleny na jednom pinu. Zde je nìkolik pøíkladù. Na pinu 7 (I/O bit PB2) najdeme následující funkce - SCK, USCK, SCL, ADC1, T0, INT0 a PCINT2. To znamená, e pokud chceme pouívat externí vstup èítaèe/ /èasovaèe 0, oznaèený jako T0, NEMÙ-
Obr. 28a. Blokové schéma mikrokontrolérù ATtiny25/45/85
Konstrukèní elektronika A Radio - 4/2007
Obr. 28b. Zapojení vývodù mikrokontrolérù ATtiny25/45/85 a ATtiny15 Tab. 3. Pøeruení v mikrokontrolérech ATtiny24/44/84 a ATtiny25/45/85
EME ji pouít sériový port USI, nebo tento bit portu je jím vyuívám pro synchronizaèní signál (hodiny). Jako dalí pøíklady mohou slouit piny 6 a 5 (I/O bity PB1 a PB0), na kterých jsou, kromì jiných signálù, sdíleny výstupy generátorù PWM signálu. Na pinu 6 to je signál OC0B (èítaè/èasovaè0) a OC1A (èítaè/èasovaè1), na pinu 5 to je pak OC0A a nOC1A. I kdy to mùe být nìkdy velmi nepøíjemné, nezbývá, ne se s tím smíøit, nebo se jedná o mikrokontrolér s velmi malým poètem pinù. Dalím nepøíjemným zjitìním, kdy bychom hovoøili o tomto mikrokontroléru jako následníkovi ATtiny24/ /44/84, je fakt, e priority jednotlivých pøeruení u obou mikrokontrolérù nejsou stejné. Situace je zøejmá z tab. 3. V tab. 3 jsou edivým podkladem zvýraznìny nìkteré moné problematické zmìny v prioritì pøeruení. Napø. pøeruení EE_RDY má u mikrokontrolérù ATtiny24/44/84 jednu z nejniích priorit, zatímco u ATtiny25/45/85 je priorita tohoto pøeruení mnohem vyí. Pøi pøenosu programového vybavení z jednoho mikrokontroléru na druhý je dùleité na tento fakt pamatovat, jinak se mùe stát, e programové vybavení
bìící bezchybnì na jednom typu bude po pouhém pøenesení na typ druhý pracovat chybnì. Samozøejmì, kromì zmiòovaných problematických míst, má mikrokontrolér mnoho zajímavých vlastností a periferií.
Jako pøíklad uveïme podobnost se starím mikrokontrolérem stejné rodiny, a to s ATtiny15. Srovnáme-li zapojení vývodù, zjistíme, e je totoné, pouze ATtiny25/45/85 má na jednotlivých pinech více periferií. Je tedy více ne jasné, e konstruktéøi se mají orientovat na nový typ ATtiny25/45/85 a ATtiny15 pravdìpodobnì nebude do budoucna perspektivní. Této úvaze napovídá i monost pøepnout èítaè/èasovaè do reimu kompatibility s ATtiny15. Jeliko mnoho funkcí je podobných s pøedchozím typem, a tento popis nemá nahrazovat datasheet výrobce, nebudou zde popsány do detailù monosti periferií, ale bude pouze upozornìno na zajímavé vlastnosti. Zájemce o podrobný popis funkcí jednotlivých periferií odkazuji laskavì na webové stránky výrobce www.atmel.com. Jednou ze zajímavých periferií mikrokontroléru je tzv. Dead Time Generator, jeho funkce navazuje na generování signálu PWM, a jeho ideové schéma je na obr. 29. O co vlastnì jde a k èemu lze tento generátor vyuít? Posláním tohoto generátoru je umonit správné buzení výkonových tranzistorù ve spínaných zdrojích. Jak kadý ví, spínací tranzistory potøebují jistý èas na to, aby pøely z vodivého stavu do vypnutého. Teprve pak mùe být zapnut druhý tranzistor z páru (v zapojení Half-bridge, buzení komplementárními signály OC1A a nOC1A èi OC1B a nOC1B). Pokud nedáme prvnímu tranzistoru èas na uzavøení a zapneme druhý, budou po jistou krátkou dobu zapnuty oba, co pøedstavuje zkrat napájení. Kromì vyí spotøeby budou oba tranzistory namáhány velkými proudy. Abychom tomu pøedeli, nesmí být oba zmiòované výstupy pouhou vzájemnou negací, ale musí být mezi jednotlivými pøechody jistá krátká doba, která poskytne vodivému tranzistoru èas na to, aby pøeel do nevodivého stavu. Prùbìhy takovéhoto signálu jsou na obr. 30. Je zde vidìt, e obì doby mohou byt rùzné, co je vhodné, nebo èasové kon-
Obr. 29. Ideové schéma obvodu Dead Time Generator v ATtiny25/45/85
Obr. 30. Signály z Dead Time generátoru
Konstrukèní elektronika A Radio - 4/2007
17
stanty rùzných tranzistorù a pomocných obvodù se mohou navzájem liit. Z uvedeného pøíkladu zajímavé periferie je vidìt, kde vude mohou být pouity nové mikrokontroléry s malým poètem pinù - i v inteligentních spínaných zdrojích. e je to dobrá mylenka je patrné i z toho, e èítaè/èasovaè1 je schopen pracovat v asynchronním módu na frekvenci a 64 MHz. Pøi práci v tomto reimu si musíme dát pozor, nebo díky nìkolikerým bufferùm nastává urèité zpodìní. Stejný èítaè/èasovaè1 byl ji pouit v ATtiny26L, take ètenáøe odkazuji na popis, který byl uveden v KE 1/2003 na stranì 18, obr. 1.37. Struèné pøedstavení tohoto malého, ale jistì výkonného mikrokontroléru zakonèeme konstatováním, e i zde výrobce implementoval monost Self-programming, tj. najdeme zde instrukce LPM a SPM. Pamì Flash pro program lze díky tìmto instrukcím pouít jako velikou pamì konstant èi kalibraèních dat.
ATmega48/ATmega88/ /ATmega168 I kdy øada mikrokontrolérù ATtiny je iroká, její monosti jsou omezené, a to zejména v oblasti aplikací, kde je potøeba více pinù a více periferií, tedy v pøípadì sloitìjích aplikací. Obì øady, ATtiny a ATmega, se nepøekrývají, ale témìø plynule na sebe navazují. Pøedstavme si tedy nejmení nové zástupce rodiny ATmega, ve kterých jsou implementovány zkuenosti získané od uivatelù prvních mikrokontrolérù AVR ATmega (napø. ATmega103,
). ATmega48/88/168 tvoøí jakousi malou øadu mikrokontrolérù liících se velikostí pamìtí Flash, EEPROM a SRAM. Pøeèteme-li si v originálním katalogovém listu alespoò základní vlastnosti, a známe-li historii mikrokontrolérù AVR, budou nám tyto mikrokontroléry pøipadat, jako kdybychom je u nìkde vidìli. Tento pocit je správný, nebo za vzor poslouila ATmega8. ATmega8 byl svého èasu nejmení zástupce øady ATmega. Jeho výhodou byla cena, nevýhodou absence rozhraní JTAG pro ladìní programù. Zøejmì na tlak uivatelù firma ATMEL pøila s novou verzí a to ne s jednou, ale hned se tøemi. Blokové schéma mikrokontrolérù je na obr. 31. Co není vidìt na tomto obrázku, ale co jistì potìí vývojáøe, je fakt, e rozloení vývodù periferií, je u ATmega8 a u tìchto nových mikrokontrolérù totoné. Stejnì jako v pøípadì poslednì jmenovaných zástupcù øady ATtiny, mají nové mikrokontroléry na jednotlivých pinech slouèeno mnohem více periferií ne ATmega8.
rovaného oscilátoru 8 MHz. Oscilátor je výrobcem kalibrován pøi napájecím napìtí 3 V a okolní teplotì 25 °C. Pøesnost nastavení je ±10 % s tím, e je moné tuto pøesnost zvìtit dostavením tohoto oscilátoru na pøesnost ±2 % pomocí kalibraèní konstanty OSCCAL. Pøi pouívání této konstanty pro nastavení je nutné nezapomenout na skokovou zmìnu kmitoètu v oblasti hodnoty 128 (viz obr. 15 a popis u mikrokontroléru ATtiny24/44/84).
debugWIRE® I kdy tyto mikrokontroléry patøí do rodiny ATmega, je u nich, kvùli nízkému poètu pinù, implementováno ladící rozhraní debugWIRE®, pouívané u øady ATtiny.
Èítaè/èasovaè0 I kdy se jedná pouze o osmibitový mikrokontrolér, jsou jeho monosti oproti ATmega8, kde byl èítaè schopen èítat pouze modulo 256, podstatnì rozíøeny. Jedná se pøedevím o monost generovat signál PWM. Jeliko se schopnosti tohoto èítaèe/èasovaèe0 shodují se stejným èítaèem/èasovaèem0 mikrokontroléru ATtiny24/44/84 (obr. 17), odkazuji ètenáøe na tento popis.
Èítaè/èasovaè1 Tento estnáctibitový èítaè/èasovaè nedoznal ádných zmìn oproti svému
vzoru u ATmega8 èi ATtiny24/44/84. Vzhledem k jeho univerzálnosti a schopnostem lze øíci, e je to jen dobøe.
Èítaè/èasovaè2 Tento èítaè je opìt osmibitový, ale má schopnost pracovat v asynchronním módu. To je dùleité napø. pro situace, kdy chceme èítaè vyuít jako obvod RTC. Ostatnì k tomuto úèelu vybavil výrobce mikrokontrolér oscilátorem s malým pøíkonem urèeným pro krystaly 32 768 Hz. Monosti èítaèe/èasovaèe2 jsou velmi iroké, nebo zde najdeme dvì jednotky output compare, které jsou schopny generovat signál PWM. Asynchronní mód pøedstavuje zdroj moných problémù, nebo zápis do registrù èítaèe neprobìhne hned, ale se zpodìním daným vyrovnávacími registry. Pokud tedy nedodríme doporuèení výrobce, mùe být tento èítaè/èasovaè2 v asynchronním módu zdrojem nestabilního a nepredikovatelného chování celé aplikace.
Sériové rozhraní SPI Toto sériové rozhraní je velmi èasto vyuíváno i u jiných mikrokontrolérù a bylo o nìm ji mnoho øeèeno, take bude pøedstaveno pouze struènì. Je to plnì duplexní tøívodièové rozhraní pouívané vìtinou pro komunikaci mezi øídicím mikrokontrolérem a
Zdroje øídicího kmitoètu Potìujícím faktem jsou bohaté monosti taktování jak z externích zdrojù, tak i ze dvou interních zdrojù kmitoètu - z oscilátoru 128 kHz a kalib-
18
Konstrukèní elektronika A Radio - 4/2007
Obr. 31. Blokové schéma mikrokontrolérù ATmega48/ /88/168
periferiemi, i kdy je moné jej pouít i pro komunikaci mezi mikrokontroléry navzájem. U implementované verze jsou podporovány vechny ètyøi pracovní módy, mùeme si vybrat ze sedmi pøenosových rychlostí, mùeme generovat pøeruení pøi ukonèení pøenosu, rozhraní je schopné vzbudit mikrokontrolér z Idle reimu. Zajímavostí tohoto rozhraní je fakt, e je pouito pro programování vnitøních pamìtí FLASH a EEPROM pøi sériovém programování (zápis i ètení).
Sériové rozhraní USART Zcela urèitì nejvíce bylo psáno v literatuøe o asynchronním sériovém pøenosu a dodnes patøí toto rozhraní ke stále hojnì vyuívanému pøi pøenosu dat. Pøesto se u tohoto rozhraní, èi spíe zpùsobu, jak bylo toto rozhraní implementováno v tomto mikrokontroléru, na chvíli zastavíme. Blokové schéma rozhraní je na obr. 32. První pøíjemnou zprávou je, e USART má dedikovaný generátor pøenosové rychlosti. Díky tomuto dvanáctibitovému generátoru je schopen sériový port pracovat v irokém rozsahu pøenosových rychlostí. Napø. pøi hodinovém taktu 16 MHz je rozsah pøenosových rychlostí od 244 Bd do 1 MBd. Blokové schéma generátoru pøenosových rychlostí je na obr. 33. Dalí pozitivní zprávou pro konstruktéry a programátory je vlastní zpracování signálu pøicházejícího signálu, které pamatuje na zhorené podmínky pøi pøenosu. Pøijímaný signál je vzorkován nìkolikrát bìhem doby jednoho bitu tak, aby bylo maximálnì potlaèena moná chyba nesprávného vyhodnocení úrovnì pøijímaného bitu. Prvním krokem úspìného pøíjmu vyslaných dat pøes asynchronní sériový kanál je kvalitní detekce tzv. start bitu. Pro kvalitní detekci se stav start bitu testuje celkem v estnácti (nebo v osmi) okamicích. Vzorkování ve více okamicích má za úkol odstranit monost chybné detekce start bitu pøi ruení sériové linky. Zmiòovaný zpùsob detekce start bitu je znázornìn na obr. 34. Pokud je linka ve stavu High (Idle, klid), vlastní èítaè poètu vzorkù je stále nulován. V okamiku, kdy je detekován pøechod z úrovnì High do Low, poène èítaè èítající vzorky vstupního signálu èítat. Pro uznání start bitu jako platného jsou rozhodující vzorky 8, 9 a 10 (pøi reimu U2X to jsou vzorky 4, 5 a 6). Pokud dva a více vzorkù bude mít hodnotu High, jedná se s vìtí pravdìpodobností o ruení na lince (glitch) ne o skuteèný start bit. Logika sériového portu poène tedy èekat na nový pøechod z úrovnì High na Low. Pokud vak dva a více vzorkù mají hodnotu Low, je uznán tento stav jako regulérní start bit a logika poène pøijímat jednotlivé datové bity. Pokud byl pøechod High na Low vyhodnocen jako start bit, pøichází na
Obr. 32. Rozhraní USART v ATmega48/88/168 øadu vlastní pøíjem dat. Dekódování dat má na starosti stavový automat, který má celkem 16 vnitøních stavù (v reimu U2X jen 8 stavù). Díky synchronizaci na start bit a faktu, e doba trvání vech 16 stavù je rovna bitové rychlosti, je moné dekódovat pøijímaná data velmi jednodue. Pro rozhodnutí, zda pøijímaný bit bude mít hodnotu 1 èi 0, jsou, jak jinak, rozhodující tøi vzorky, a opìt to jsou vzorky 8, 9 a 10 (pøi reimu U2X to jsou vzorky 4, 5 a 6). Jeliko máme tøi vzorky, rozhodnutí provedeme podle vìtiny - bit bude mít hodnotu, kterou má vìtina vzorkù.
I stop bit je vyhodnocován ze stejných vzorkù. Pokud je vyhodnoceno, e stop bit má hodnotu log. 0, jedná se o chybu rámce, tzv. Frame Error. Aby program mohl tuto skuteènost vyhodnotit, je vnitøní logikou nastaven bit FEn. Dalí prùbìh mùe být od jiných bitù rozdílný, nebo stop bit nemusí mít plnou bitovou délku. V pøípadì, e pracujeme v normálním módu, mùe sestupná hrana pøijímaného signálu pøijít u v okamiku (A), viz obr. 35, ani by byla chybnì vyhodnocena. V pøípadì reimu U2X mùe sestupná hrana signálu pøijít ponìkud pozdìji, a v oka-
Obr. 33. Baud rate generátor v ATmega48/88/168
Obr. 34. Detekce start bitu v ATmega48/88/168
Konstrukèní elektronika A Radio - 4/2007
19
Obr. 35. Detekce Stop Bitu a následných stavù v ATmega48/88/168 miku (B). Pro srovnání je plná délka stop bitu naznaèena na obr. 35 písmenem (C). Z pøedchozího popisu je zøejmé, e pro pøijímací logiku sériového kanálu je plnì postaèující jeden stop bit, a k tomu jetì nemusí být celý. Jeliko synchronizace vnitøní logiky sériového kanálu probíhá vdy pøi start bitu, nemá pøípadné pøípustné zkrácení stop bitu ádné vedlejí úèinky na kvalitu pøenosu. Monost pøenáet data rychlostí a 1 MBd dovoluje pouít tento sériový kanál i v rozsáhlejích systémech pro meziprocesorovou komunikaci, kdy jednotlivé mikrokontroléry øeí dílèí úkoly a pomocí tohoto portu si pøedávají potøebná data. Jeliko vak na jedné sbìrnici mùe být i více mikrokontrolérù ne dva, je vhodné mít nástroj, jak rozliit konkrétního pøíjemce, adresáta, od ostatních. Toto rozliení se dìje adresou, a mód sériového kanálu se nazývá multiprocesorový. Pro tento reim je doporuèen devítibitový formát dat, kdy 9. bit nese informaci, zda pøedchozích 8 bitù jsou data èi adresa. Pokud je 9. bit nulový, jedná se o data, pokud je roven log.1, jedná se o adresu. Aby obsluha sériového kanálu v tomto módu byla co nejjednoduí, lze nastavit sériový port do reimu, kdy pakety jiné ne adresové ignoruje (viz popis významu MCMPn bitu v registru UCSRnA). Toto uspoøádání, i kdy velmi jednoduché, dokáe uetøit mnoho strojového èasu pøi obsluze sériového portu v multiprocesorovém reimu, take zbude více èasu pro ostatní úlohy. Nepøekvapil-li nás zatím tento mikroprocesor ádnou ze svých moností, ji dalí informace tento stav mùe zmìnit, nebo sériový port USART lze u tìchto mikrokontrolérù nastavit do módu SPI. V tomto reimu jsou dokonce podporovány vechny 4 módy tohoto rozhraní! Dále je moné urèit, zda má být jako první vysílán nejnií nebo nejvyí bit datového slova. Velkou pøedností tohoto sériového zpùsobu pøenosu dat je jeho velká rychlost, která mùe být a 0,5·fOSC! Monosti tohoto portu nejsou vak úplnì shodné se standardním SPI portem. Nìkdy se jedná o rozíøení, za které mùe být povaován datový buffer, na druhé stranì v nìkterých aplikacích mùe scházet vyvedený pin SSnon. Pøes vechny omezení lze øíci, e monost pøepnout sériový port USART do reimu SPI je velkým pozitivem, nebo v øadì aplikací není port USART potøebný, ale konstruktér potøebuje rychlé rozhraní pro komunikaci s perife-
20
riemi, jakými jsou napø. sériové pamìti FLASH øady AT45DB. Rozhraní SPI je sice moné celkem jednodue simulovat programovì, ale tato simulace si vyaduje nezanedbatelný výpoèetní výkon mikrokontroléru nehledì na fakt, e programová simulace nebývá vdy zcela pøesná a korektní.
Sériové rozhraní TWI Sériové porty USART a SPI nejsou jediné, které jsou implementovány v tomto mikrokontroléru. Dalím portem, který zde najdeme, je rozhraní TWI (Two Wire Interface). Podíváme-li se do originálního datasheetu pozornì, zjistíme, e se zde píe o dvojvodièovém sériovém rozhraní, které pouívá signály SDA a SCL, pøièem prvnì jmenovaný signál/vodiè je pouit pro pøenos dat a druhý pro pøenos synchronizaèního signálu. Pokud nejsme v oblasti digitální techniky a mikrokontrolérù nováèky, mìly by nám tyto signály být povìdomé. Názvy jsou toti shodné se signály, které pouívá populární a velmi rozíøené rozhraní I2C. I kdy se rozhraní nejmenuje I2C, je s ním témìø plnì kompatibilní. Slovo témìø má vyjadøovat tu skuteènost, e rozhraní TWI nemá implementovány vechny vlastnosti standardu I2C, který vytvoøila firma Philips (pozn.: existují tøi verze/definice I2C, a to verze 1.0 z roku 1992, verze 2.0 z roku 1998 a verze 2.1 z roku 2000). Návrháø by na to mìl pamatovat a v pøípadì uití tohoto rozhraní by si mìl ovìøit, e pouité obvody budou schopny mezi sebou komunikovat. Struènì si proto vyjmenujme vlastnosti TWI: - rozhraní je schopno data vysílat i pøijímat, - rozhraní je schopno pracovat jako Master i Slave,
- rozhraní je schopno pøevzít i pøedat øízení sbìrnice (Multi-Master mód), - rozhraní podporuje POUZE sedmibitovou adresu, reim desetibitové adresy není podporován, - rozhraní podporuje rychlost pøenosu a 400 kbit/s (Fast-Mode), ale není podporován HS-mód (a 3,4 Mbit/s), - výstupní budièe mají omezenu rychlost pøebìhu (strmost hran) kvùli ruení, - vstupy disponují funkcí potlaèení umu/ruení vstupního signálu, - automatická detekce adresy umoòuje vzbuzení mikrokontroléru ze Sleep módu. Jak je z pøedchozího výètu patrné, základní funkce, vèetnì reimu MultiMaster, jsou v rozhraní TWI implementovány, take spolupráce vìtiny obvodù by mìla být bezproblémová. Za malá omezení lze pokládat podporu pouze sedmibitové adresy, která umoòuje umístit 128 obvodù na jedné sbìrnici, a absenci reimu HS, který je vhodný pro pøenos velkého objemu dat. Avak ani jedno omezení není zásadní.
Analogový komparátor Co by to bylo dnes za mikrokontrolér, který by nemìl vestavìno na èipu alespoò základní rozhraní umoòující zpracování analogového signálu. Protoe mikrokontroléry ATmega48/88/168 patøí mezi ty vydaøené, najdeme na jejich èipu jak analogový komparátor, tak i A/D pøevodník. Blokové schéma analogového komparátoru je na obr. 36. Ze schématu je vidìt, e komparátor mùe porovnávat napìtí pøivedená na vstupy AIN0 a AIN1 mezi s sebou. Dalí moností je vyuít vnitøní referenci a porovnávat s ní napìtí ze vstupu AIN1 nebo z nìkterého vstupu analogového multiplexeru, který pùvodnì pøísluí A/D pøevodníku. U komparátoru je moné definovat stav (smìr zmìny), kdy bude generováno pøeruení, a pøi zmìnì stavu komparátoru je moné zachytit stav èítaèe/èasovaèe1 (capture). V pøípadech, kdy není komparátor potøebný a je nutné bìhem nìkterého reimu sníené spotøeby sníit spotøebu mikroprocesoru na minimum, je moné úplnì jednotku komparátoru internì odpojit od napájení. V pøípadì, e není zapotøebí ani A/D pøevodník, je moné odpojit i vnitøní re-
Obr. 36. Analogový komparátor v ATmega48/88/168
Konstrukèní elektronika A Radio - 4/2007
Obr. 37. Interní A/D pøevodník v ATmega 48/88/168 ferenci. I kdy se to nemusí na první pohled zdát, je spotøeba mikroprocesoru v reimech se sníenou spotøebou, zvlátì pak u reimù Power Down a Power Safe, øádovì srovnatelná se spotøebou napìové reference a analogového komparátoru. Sníení spotøeby vypnutím této nepouívané èásti mikrokontroléru mùe hrát velkou roli u bateriovì napájených aplikací, ve kterých je kladen dùraz na co nejdelí dobu provozu na jedno nabití akumulátorù èi jednu náplò baterií.
A/D pøevodník Jak ji bylo nìkolikráte øeèeno, svìt kolem nás je analogový, a pokud chceme, aby mikrokontrolér zpracovával data získaná mìøením reálného svìta, získává je pøeváné vìtinì v ananalogové formì. Proto je velkou výhodou, kdy mikrokontrolér, který chceme v aplikaci pouít, má integrován na èipu té A/D pøevodník s dostateènou pøesností pro uvaovanou aplikaci. Výjimku tvoøí pøístroje, u kterých je poadována maximální pøesnost. Zde je vìtinou pouit externí A/D pøevodník s mnohem vìtí pøesností ne mají interní A/D pøevodníky u souèasných mikrokontrolérù. Existuje mnoho dùvodù, proè interní A/D pøevodníky na èipech mikrokontrolérù mají mení pøesnost ne samostatné pøevodníky. Jmenujme alespoò dva z tìchto dùvodù. Prvním dùvodem je cena takových A/D pøevodníkù. Platí, e èím má pøevodník vyí pøesnost, tím je draí, a cena roste velmi rychle s poètem bitù.
Aby byl mikrokontrolér pro uivatele zajímavý, musí být pøevodník laciný, ale pøitom musí vyhovìt co nejvìtímu poètu uivatelù. Proto se u souèasných mikrokontrolérù setkáme s pøevodníky s poètem bitù mezi 8 a 12. Druhým dùvodem, se kterým se potýkají návrháøi mikrokontrolérù, je ruení analogové èásti mikrokontrolérù èástí digitální. Nesmíme zapomenout, e souèasné mikrokontroléry pracují s pomìrnì vysokým øídicím taktem, a èipy mikrokontrolérù jsou velmi malé. Signály v digitální èasti mají velmi strmé hrany (obdélníkové prùbìhy) a proto, jak známo, obsahují mnoho vyích harmonických. Vyí harmonické se pak velmi dobøe íøí (napø. pøeslechy) po celém èipu a v pøípadì analogové èásti mohou negativnì ovlivnit pøesnost A/D pøevodu. Proto se u pøedstavovaných mikrokontrolérù ATmega48/88/168 setkáme s interním desetibitovým pøevodníkem, který je dobrým kompromisem mezi cenou a pøesností. Jeho blokové schéma je na obr. 37. Jak je z obrázku vidìt, jedná se o klasický A/D pøevodník pracující na principu postupné aproximace. Aby bylo moné mìøit více analogových signálù, je vlastnímu pøevodníku
pøedøazen analogový multiplexer s osmi SE vstupy (SE = Single Ended) u pouzder TQFP a QFN a se esti SE vstupy u pouzdra DIL. Na multiplexeru najdeme jetì dva pomocné vstupy. Jeden z nich je pøipojen na zemní potenciál, druhý na interní referenèní napìtí. Maximální rychlost pøevodu pøi zachování plného rozliení pøevodníku je 15 ksps (15 000 pøevodù/s). Pokud poadujeme vìtí poèet pøevodù, musíme se spokojit s mením rozliením. Nejkratí doba pøevodu je asi 13 µs, tj. pøevodník dokáe provést asi 76 800 pøevodù/s. Protoe je pøevodník dynamický, je výrobcem stanovena i nejdelí doba pøevodu, která je 260 µs. Aby bylo mono nastavit øídicí kmitoèet pøevodníku podle potøeby, nalezneme zde sedmistupòový binární dìliè kmitoètu s multiplexerem - viz obr. 26 (shodná pøeddìlièka jako u ATtiny24/ /44/84). Aby byl poèet souèástek pøi pouití interního pøevodníku minimální, implementoval výrobce na èip i potøebnou napìovou referenci. Referenèní napìtí, vzhledem k rozsahu napájecího napìtí, je 1,1 V. Pokud toto napìtí z nìjakého dùvodu nevyhovuje, je moné pouít buï pøímo napájecí napìtí analogové èásti, nebo je moné pøivést na pin oznaèený AREF napìtí z externí reference. Pro vìtinu aplikací vak bude interní reference postaèovat, nebo se jedná o relativnì stabilní napìtí, jak ostatnì mùeme vidìt na obr. 38. Pokud se budeme dívat na graf na obr. 38 pozornì, lze z nìho vyèíst, e pokud uvaujeme o aplikaci, která má pracovat v irokém rozsahu teplot, je vhodné napájet mikrokontrolér napìtím kolem 2,75 V (pokud je to moné). Pøi tomto napájecím napìtí je teplotní závislost referenèního napìtí velmi malá, jinými slovy, reference je teplotnì témìø nezávislá. Jeliko napìová reference pøímo ovlivòuje pøesnost A/D pøevodu, je vhodné jí vìnovat jetì trochu pozornosti. Podíváme-li se na obr. 37, zjistíme, e pin AREF slouí jednak pro pøivedení externí napìové reference, ale také, v pøípadì, e pouijeme interní
Obr. 38. Interní napìová reference v ATmega48/88/168
Konstrukèní elektronika A Radio - 4/2007
21
Obr. 39. Doporuèená topologie DPS pro ATmega48/88/168 napìovou referenci 1,1 V, bude na nìm napìtí této reference, nebo tento pin je pøímo spojen s referenèním vstupem D/A pøevodníku. Tohoto mùeme vyuít pro zlepení podmínek pro A/D pøevodník tím, e na pin AREF pøipojíme filtraèní kondenzátor, který pomùe sníit pøípadné ruení referenèního napìtí. K filtraci tohoto napìtí té pøispívá okolnost, e interní napìová reference má velký vnitøní odpor. Proto pøi volbì filtraèního kondenzátoru musíme dát pozor na jeho vlastnosti, pøedevím na svodový proud. Jeliko chceme odstranit i vf sloky ruení, musí mít kondenzátor té velmi dobré vf vlastnosti, tj. malou parazitní impedanci. Pøi volbì velikosti reference nesmíme té zapomenout, e vechna napìtí pøivedená na mìøicí vstupy, která jsou vìtí ne tato reference, jsou pøevedena na hodnotu 03FFHEX, tj. pøevodník tzv. pøeteèe (overflow). Ze zajímavých vlastností interního A/D pøevodníku stojí za to upozornit na monosti spoutìní pøevodu. Vedle klasických reimù jednorázový pøevod (Single conversion mode) a volnì bìící pøevody (Free running mode) tu najdeme monost spoutìt pøevod od urèitých událostí.
Tìmito událostmi mùe být pøeklopení interního analogového komparátoru, externí událost na vstupu External Interrupt Request 0, pøeteèení èítaèe/ /èasovaèe0, shoda A èítaèe/èasovaèe0 (Timer/Counter0 Match A), pøeteèení èítaèe/èasovaèe1, shoda B èítaèe/èasovaèe1 (Timer/Counter0 Match B) a událost zachycení stavu èítaèe/èasovaèe1 (Timer/Counter1 Capture). Díky tamto módùm je moné spoutìt pøevody tehdy, kdy je potøeba, velmi jednodue od rùzných událostí bez èi jen s malou programovou podporou. Tím se etøí výpoèetní výkon mikrokontroléru a klesá jeho spotøeba. S ozíøenými monostmi spoutìní A/D pøevodníku se pojí i otázka vhodného okamiku volby mìøeného kanálu. Aby programátor pøedeel moným chybným výsledkùm, je bezpodmíneènì nutné, aby zachovával doporuèení výrobce. Takté je více ne vhodné zachovávat doporuèení výrobce týkající se návrhu desky s plonými spoji (DPS) a chování pøi A/D pøevodu. Doporuèený návrh DPS je na obr. 39. Výrobce doporuèuje, aby analogová zem byla rozprostøena nejen pod vývody u vlastního IO, ale té pod vemi analogovými spoji. Tyto analogové spoje by nemìly vést v blízkosti digitálních spojù a u vùbec by nemìly být s nimi soubìné. Pokud mùeme návrh DPS podøídit potøebám analogových signálù, mìly bychom se snait dìlat tyto spoje co nejkratí. Napájení analogové èásti mùe být odvozeno od napájení digitální èásti. Pro filtraci ruení íøícího se po napájení podle výrobce postaèuje klasický èlánek LC, tlumivka 10 µH s kondenzátorem 100 nF, jak je ostatnì vidìt na obr. 39. Jeliko piny mají vìtinou nìkolik funkcí, mìli bychom si pøi návrhu zapojení dát také velký pozor, aby vedle pinù pouívaných pro A/D pøevodník nebyly na sousedních pinech digitální výstupy, je mìní èasto svùj stav. Toto platí zejména pro piny ADC0 a ADC3, kdy výrobce nabádá k tomu, aby pøípadné digitální signály na tìchto pinech nemìnily svùj stav bìhem A/D pøevodu. Vý-
Tab. 4. Módy sníené spotøeby u ATmega48/88/168
Poznámky: (1) Vhodný pouze s externím krystalovým oscilátorem. (2) Pokud je èítaè/èasovaè2 v asynchronním módu. (3) Pouze v pøípadì, e INT0 èi INT1 jsou nastaveny na pøeruení od úrovnì.
22
jimku tvoøí piny SCL (PC5) a SDA (PC4), které by podle výrobce nemìly mít vliv na pøesnost A/D pøevodu. Pro odstranìní moného ruení pocházejícího z digitální èásti mikrokontroléru je také moné pouít reim ADC Noise Reduction Mode nebo Idle Mode. V obou pøípadech je digitální èást mikrokontroléru bìhem A/D pøevodu uspaná a zaène pracovat v okamiku, kdy A/D pøevodník dokonèí A/D pøevod a poádá o pøeruení. Z tohoto dùvodu nesmíme toto pøeruení mít zakázané. Pøi aplikaci tohoto zpùsobu pøevodu je nutné mít na pamìti, e: - reim A/D pøevodníku je Single conversion (jeden pøevod), - musí být povoleno pøeruení od dokonèení A/D pøevodu, - musí být pokud mono zakázána ostatní pøeruení, které mohou zpùsobit ukonèení reimu ADC Noise Reduction Mode èi Idle Mode. Jinak mùe jiné pøeruení vzbudit mikrokontrolér døíve, ne je vhodné, - aktivací reimu ADC Noise Reduction Mode nebo Idle Mode pøejde mikrokontrolér do tohoto reimu a následnì je sputìna vlastní sekvence A/D pøevodu (odbìr vzorku vstupního napìtí a následnì pøevod do èíslicové formy), - ostatní reimy sníené spotøeby (s výjimkou obou výe jmenovaných) nelze pouít, nebo pøi nich je A/D pøevodník vypnutý (viz tab. 4). Módy sníené spotøeby, definice aktivních periferií pøi rùzných tìchto módech a monosti ukonèení módù sníené spotøeby jsou uvedeny v tab. 4. Jak je patrné z tab. 4, disponují nové mikrokontroléry ATmega48/88/ /168 celou øadou módù se sníenou spotøebou. Díky nim se oblast moných aplikací, pro které jsou tyto mikrokontroléry vhodné, podstatnì roziøuje, a to do oborù, ve kterých je vyadována velmi malá spotøeba.
ATmega640/1280/ /2560/ Malé mikrokontroléry jsou zcela jistì zajímavé jak pro zákazníky, tak i pro výrobce, ale svìt elektroniky si pro sloité aplikace ádá té sloitìjích mikrokontrolérù. Jeliko architektura mikrokontrolérù AVR® rodiny ATmega takovýto rùst umoòuje, objevily se v této øadì i modely s velkým poètem pinù, velkými pamìmi a bohatými periferiemi. Jejich blokové schéma je na obr. 40. Pole vybarvené tmavou edivou barvou jsou dostupné pouze u verzí ve stopinovém pouzdru. Pole vybarvené svìtlou edivou barvou, tj. A/D pøevodník, èítaè/èasovaè4 a èítaè/èasovaè5 mají v meních pouzdrech omezeny nìkteré funkce. U jenom pohled na blokové schéma budí respekt, zvlátì pak monosti komunikace s okolím u stopinových
Konstrukèní elektronika A Radio - 4/2007
Obr. 40. Blokové schéma mikrokontrolérù ATmega640/1280/2560 verzí. U nejvìtího pøedstavitele této skupiny, mikrokontroléru ATmega2560, najdeme na èipu celkem 256 kB pamìti Flash pro program, 4 kB pamìti EEPROM pro konfiguraèní data a 8 kB pamìti SRAM pro data. Pokud by pamì SRAM nestaèila, je moné pøipojit vnìjí pamì o maximální velikosti 64 kByte. U takto velkého mikrokontroléru je samozøejmostí podpora rozhraní JTAG. Ladìní programového vybavení je dále podporováno jednotkou Break point Unit, která usnadòuje a roziøuje monosti ladìní programového vybavení. Díky této jednotce je moné definovat a 4 adresy, které mají zpùsobit zastavení bìhu programu. Adresy se mohou nacházet jak v programové pamìti, tak i pamìti datové (ètení èi zápis na danou adresu). Pomocí jedné dvojice adres lze vytvoøit tzv. interval. To znamená, e bìh programu se zastaví v pøípadì, kdy vznikne poadavek na vykonání instrukce, která se nachází v tomto intervalu, èi program zapisuje èi ète z definované oblasti v datové pamìti. I kdy by mìlo být mono definovat celkem dva intervaly, touto moností jednotka bohuel nedisponuje. Pøi vyuívání této jednotky mùe nastat situace, ve které není moné vyuít
vechny 4 breakpointy v jednotce, nebo vývojové prostøedí AVR Studio® mùe vyuívat nìkterý èi nìkteré breakpointy pro svoji potøebu. Na druhé stranì je moné pro programové breakpointy vyuít instrukci BREAK, take v podstatì lze mít neomezený poèet programových breakpointù. Pouívání programových breakpointù se významnì lií od breakpointù, které definujeme pomocí jednotky Breakpoint Unit. U programových breakpointù nelze definovat breakpoint na rozsah adres, a také se pøepisuje instrukce v programové pamìti FLASH. I kdy poèet povolených pøepisù programové pamìti je udáván na 10 000 cyklù zápis/mazání, výrobce doporuèuje nepouívat mikrokontroléry, na kterých probíhal vývoj programového vybavení do sériové výroby, resp. tyto obvody by nemìly být prodány ve finálních výrobcích. Na toto bychom mìli pamatovat nejenom pøi vývojo, ale i pøi servisu zaøízení. Pøi servisu bychom tedy mìli pouívat pouze hardwarové breakpointy. Jak u bylo uvedeno, pøi vyuívání programových breakpointù se pøepisuje obsah pamìti. Z toho vyplývá, e rozhraní JTAG je moné pouít i k progra-
mování interních pamìtí FLASH a EEPROM. Pøestoe se jedná o nejvìtí mikrokontroléry øady AVR, periferie jsou standardní, take jejich popisu nebude zde vìnováno místo, nebo byly ji popsány u pøedchozích typù mikrokontrolérù. Výjimku tvoøí plnì estnáctibitové èítaèe/èasovaèe.
Èítaèe/èasovaèe1, 3, 4, 5 Jejich blokové schéma je na obr. 41. Nejvìtím pøínosem je monost generovat a tøi PWM signály jedním èítaèem/èasovaèem. Díky spoleèné èasové základnì budou tyto PWM signály zcela synchronní. Protoe stopinové verze mikrokontrolérù disponují ètyømi èítaèi/èasovaèi, mohou generovat úctyhodných 12 signálù PWM s a estnáctibitovým rozliením! Rozliení je moné sníit, èím na oplátku získáme kratí periodu výstupního signálu PWM. Kratí perioda, neboli vyí základní kmitoèet, znamená snadnìjí filtrování neádoucích produktù ve výstupním signálu PWM. Pro úplnost je vhodné pøipomenout správný pøístup k estnáctibitovým registrùm èítaèù èasovaèù vzhledem k faktu, e aè zde mluvíme o velkém
Konstrukèní elektronika A Radio - 4/2007
23
Obr. 41. Blokové schéma èítaèù/èasovaèù 1, 3, 4 a 5 v ATmega640/1280/2560 mikrokontroléru, jeho interní datová sbìrnice má stále íøku pouze 8 bitù (více viz popis èítaèe/èasovaèe1 u mikrokontrolérù ATtiny24/44/84, obr. 21). O skuteènosti, e se jedná o mikrokontrolér vhodný do sloitìjích aplikací svìdèí té to, e na èipu najdeme mnoho komunikaèních rozhraní. Rozhraní TWI a SPI jsou urèena pro komunikaci s periferními obvody, které nejsou pøímo na èipu. Za pøíklad mùe slouit pøipojení mikrokontroléru k pamìti DataFlash® napø. AT45DB161 (kapacita 16 Mbit) pøes rychlé sériové rozhraní SPI. Tyto pamìti jsou vhodné napø. pro uloení velkého mnoství namìøených dat. Pøes velkou kapacitu jsou to pamìti laciné, napø. pamì 45DB011 s kapacitou 1 Mbit stála v záøí u firmy GM Electronic 29 Kè/kus s DPH, pamì 45DB081 s kapacitou 8 Mbit stála 80 Kè/kus s DPH. Jeliko u sloitých aplikací málokdy bývá hlavní mikrokontrolér osamocen a je tøeba, aby zde byla monost rychlé komunikace s dalím èi dalími mikrokontroléry, najdeme na èipu a 4 rozhraní typu USART, jejich maximální pøenosová rychlost je 2 Mbps. To, e je toto rozhraní pøedurèeno pro meziprocesorovou komunikaci, je moné poznat i podle podpory devítibitového formátu dat a stavového bitu MCPMn (registr UCSRnA). Pokud je devátý bit nulový, je pøijmutý byte ignorován. V pøípadì pøíjmu byte, který má devátý bit roven log. 1, je vyvoláno pøeruení, mikrokontrolér zkontroluje, zda pøijatá
24
adresa patøí k tìm, na které má reagovat. V pøípadì, e ne, ukonèí svoji dalí èinnost a dalí pøeruení bude tedy generováno a v okamiku pøíjmu dalího byte nesoucího adresu. Pokud vak má mikrokontrolér následující data pøijímat, je bit MCPMn nastaven na log. 0 a pøeruení bude generováno od kadého pøijatého byte. Tímto jednoduchým zpùsobem je podstatnì zmírnìna zátì procesoru vyplývající z obsluhy sériového kanálu. Pro pøípad, kdy je potøeba více kanálù SPI, disponují kanály USART moností pøepnutí do reimu SPI. V tomto reimu jsou podporovány vechny ètyøi módy tohoto rozhraní. Co øíci závìrem o právì pøedstavených mikrokontrolérech AT89 a AVR? Firma ATMEL by mohla být díky uvedeným úspìným mikrokontrolérùm spokojena. Pøesto vak v jejím portfoliu najdeme dalí mikrokontroléry.
AT91 neboli ARM7® TDMI Pravdìpodobnì prvním typem, se kterým se firma ATMEL pøedstavila na trhu tøicetidvoubitových mikroprocesorù, byly typy se standardizovaným jádrem ARM7 TDMI, nazvané AT91SAM7. V souèasnosti najdeme v portfoliu firmy ATMEL celkem ètyøi rodiny tìchto mikrokontrolérù, liících se zamýlenou oblastí pouití.
Za prvé je to øada AT91SAM7S, která má relativnì malý poèet vývodù (48 èi 64), a mìla by být obecnì pouitelná (general purpose micros). K této øadì by se mìli obrátit uivatelé hledající výkonnìjí varianty k osmibitovým mikrokontrolérùm, jako je napø. øada ATmega èi podobné ostatních výrobcù. Druhá øada je tvoøena mikrokontroléry AT91SAM7A1, AT91SAM7A2 a AT91SAM7A3. Tato øada je zamìøena na øídicí aplikace, kde je poadována monost komunikace po sbìrnicích CAN. Dalím charakteristickým rysem je velký poèet pinù od 100 a po 176. Tøetí øada AT91SAM7X, není opìt smìrována na konkrétní oblast pouití, pøestoe u ní najdeme rozhraní CAN. Od pøedchozích øad se lií implementací rozhraní Ethernet MAC 10/100 T base. Posledními zástupci jsou mikrokontroléry øady AT91SAM7XC. Ji z oznaèení vyplývá, e za vzory poslouila pøedchozí øada. K pøidaným vlastnostem zástupcù nové øady patøí implementovaný kryptovací akcelerátor AES128 a Triple DES, take tyto mikrokontroléry najdou uplatnìní v aplikacích, kde je kladen dùraz na bezpeènost a bezpeèný pøenos dat. Do rodiny mikrokontrolérù s unifikovaným jádrem ARM7 TDMI patøí i mnoho dalích typù, napø. AR91RM3400 èi AT91M55800A, ale tyto mikrokontroléry jsou svým zamìøením pøíli vzdáleny zamìøení èasopisu. Jako zástupce mikrokontrolérù s jednotným jádrem ARM7 TDMI si dále pøedstavíme jeden z typù první øady.
AT91SAM7S64 Na obr. 42 je blokové schéma tohoto mikrokontroléru von Neumannovy koncepce. Jednotlivé typy se lií hlavnì velikostí interních pamìtí, take blokové schéma je moné povaovat za platné pro celou øadu AT91SAM7. Tato øada je zaloena na témìø nejstarí a stále podporované architektuøe ARMv4T. Tato architektura se lií od nejstarí architektury ARMv4 pouze písmenem T, které znamená pøidání estnáctibitových instrukcí do instrukèní sady. Díky zkrácení èasto vyuívaných instrukcí se uspoøí a 35 % pamìového místa potøebného pro program. Díky mechanizmu dekomprese instrukcí, která probíhá v reálném èase bìhem naèítání instrukce, se pøi dekompresi instrukcí nesniuje výkon mikrokontroléru. Pøesto je vak doporuèeno pro kritické èásti programu vyuívat standardní tøicetidvoubitové instrukce, které poskytují vìtí flexibilitu. Dùsledkem vyí flexibility je pak rychlejí kód programu. Klasickým pøíkladem, kde je vhodné vyuívat vech výhod tøicetidvoubitových instrukcí, jsou podprogramy pro obsluhu pøeruení. Vhodným vyuíváním estnáctibitových i tøicetidvoubitových instrukcí dosáhneme jak rychlého bìhu kritických èástí programu, tak pøimìøené velikosti programu. Vysokému výpoèetnímu výkonu pøedstavovaných
Konstrukèní elektronika A Radio - 4/2007
mikrokontrolérù napomáhá i tøíúrovòové pøekrývání fází provádìní jednotlivých instrukcí (naètení instrukce, dekódování instrukce, vykonání instrukce). Protoe detailní popis mikrokontroléru zde není moný, pøedstavme si alespoò nìkteré zajímavé periferie a vlastnosti, které nenalezneme u døíve popisovaných typù. Prvním nápadným rozdílem je vnitøní architektura. Nejedná se ani tak o íøku sbìrnic ani o instrukèní sadu, ale o spojení jednotlivých èástí tvoøících mikrokontrolér. Zadíváme-li se na jakýkoliv døíve uvedený typ z øad osmibitových, zjistíme, e jednotka CPU byla na stejné sbìrnici jako periferie. U rodiny AT91 s jádrem ARM7TDMI tomu je vak jinak! Dùvodem k takovému uspoøádání je na jedné stranì snaha o maximální rychlost, na stranì druhé stojí snaha o malou spotøebu. Proto v mikrokontrolérech AT91 najdeme dvì sbìrnice. První z nich, která je nazvána AHB (= Advanced High speed Bus), je rychlá, a je urèená pro rychlé spojení CPU s okolím, jako jsou pamìti nebo DMA kontroléry. Druhá sbìrnice, urèená pro ostatní periferie, je nazvána APB (= Advanced Peripheral Bus). Ta má ji takt pomalejí, který odpovídá niímu datovému toku periferií. Výsledkem tohoto uspoøádání je nezanedbatelná úspora pøíkonu, nebo u technologie CMOS je spotøeba velmi závislá na kmitoètu. Díky sníení kmitoètu se tedy sníí i pøíkon mikrokontroléru. Dùsledkem plynoucím z popsaného uspoøádání je, e komunikace jádra mikrokontrolérù AT91 s periferiemi na sbìrnici APB není synchronní, jako byla u popisovaných osmibitových mikrokontrolérù. Na toto musíme pamatovat, pokud bychom chtìli s AT91 programovì vytváøet pøesné èasované prùbìhy na pinech procesoru.
Real Time Timer První periferií, která si zaslouí pozornost, je èítaè reálného èasu, nazývaný v originále jako Real Time Timer (= RTT). Jeho ideové schéma je na obr. 43. RTT je buzen z pomalého interního RC oscilátoru s typickým kmitoètem 32 768 Hz. Nastavení dìlicího pomìru pøeddìlièky na hodnotu 0x8000 dosáhneme sekundového impulsu. Jeliko je délka èasovaèe 32 bitù, èítaè pøeteèe a za asi 136 let, co je více ne dostateèné. Monosti RTT jsou irí ne pouhé èítání. Obvod mùe toti generovat tzv. Alarm pøi dosaení shody registru èítaèe, resp. registru RTT_VR, s obsahem registru RTT_AR. Pøitom mùe být generováno pøeruení. Pøeruení mùe být generováno takté periodicky s intervalem rovným frekvenci inkrementace tøicetidvoubitového èítaèe (bývá typicky 1 s). I kdy nic nebrání tomu, aby registr CRTV byl èten v kterýkoliv okamik, je doporuèeno pøeèíst tento re-
Obr. 42. Blokové schéma mikrokontrolérù øady AT91SAM gistr minimálnì 2x za sebou. Dùvodem je asynchronní inkrementace registru vzhledem k øídicímu kmitoètu sbìrnice, take inkrementace mùe nastat i bìhem ètení registru.
Periodic Interval Timer Je to dalí periferie, kterou u osmibitových mikrokontrolérù nenalezneme.
Její blokové schéma je na obr. 44. Tento èasovaè v podstatì mùe plnit dvì funkce. První fukncí je generovat periodické pøeruení po nastavené dobì. Periodické pøeruení je generováno pomocí klasického dvacetibitového èítaèe, jeho hodnota je maximální hodnotou v registru PIT_MR (pole PIV). Pøi dosaení na-
Obr. 43. Real Time Timer v AT91
Konstrukèní elektronika A Radio - 4/2007
25
nou hodnotu, kterou zapíeme do registru WDD.
Memory Controller
Obr. 44. Blokové schéma intervalového èasovaèe v AT91 stavené hodnoty je èítaè vynulován a zaèíná èítat od 0. Pøeteèení je jednak poèítáno dvanáctibitovou sèítaèkou, jednak mùe být generováno pøeruení. Druhou funkcí, kterou tato periferie plní, je èítání poètu tìchto pøeruení (pøeteèení èítaèe).
Watch Dog Timer I kdy bývá tento timer implementován v témìø kadém moderním mikroprocesoru, je vhodné ho popsat, nebo jeho vlastnosti byly dále upraveny tak, aby monost jeho selhání byla jetì nií. Blokové schéma obvodu watchdog je na obr. 45. Øídicí kmitoèet obvodu je odvozen od kmitoètu 32 768 Hz generovaného interním RC oscilátorem. Vyuitím maximální hodnoty dvanáctibitového èítaèe lze dosáhnout periody a 16 s, co je více ne dostateèné pro vechny aplikace. První vìcí, na kterou si programátor musí dát pozor (zejména kdy pøechází z osmibitových mikrokontrolérù), je fakt, e watchdog je po resetu automaticky aktivován s maximální periodou (WV=0FFFHEX). Pokud ho není v aplikaci tøeba, musí být jeho èinnost tedy zakázána. Druhou vìcí, na kterou je nutno si dát pozor, je fakt, e do registru WDT_MR
je povolem zápis pouze jednou, a to po resetu mikrokontroléru. Programátor mùe sice nastavit parametry obvodu watchdog podle svých potøeb, ale u je nemùe mìnit a do dalího resetu mikrokontroléru. Na jednu stranu lze tuto vlastnost chápat jako malé omezení, ale na stranì druhé jde o velmi dobré opatøení proti nekontrolovatelné zmìnì nastavení dùleité èásti mikrokontroléru. Dalí vìcí, která u øady osmibitových mikrokontrolérù není, je èasové omezení, tzv. èasové okno, kdy je moné regulérnì restartovat watchdog. Toto opatøení, pokud je aktivováno, eliminuje monost zacyklení programu v takové chybné smyèce, kde je obvod watchdog stále aktivován. Pøi vyuití funkce èasového okna se vyvolá ádost o pøeruení v okamiku, kdy se program pokusí restartovat watchdog mimo povolený èasový úsek. Tato funkce je implementována v systému pomocí jednoho dvanáctibitového komparátoru a registru. Obì zmínìné èásti jsou na obr. 45, kde jsou oznaèeny jako <=WDD (komparátor) a WDD (registr). Spojíme-li tuto informaci s faktem, e èítaè obvodu watchdog èítá smìrem dolù, dojdeme k závìru, e funkci èasového okna lze charakterizovat jako ne døíve ne, tj. restart obvodu watchdog nesmí nastat døíve ne za nastaveObr. 45. Blokové schéma obvodu watchdog v AT91
26
Nyní si struènì popíeme dalí èást mikrokontrolérù AT91SAM7, která vak není periferií, ale pøímo jejich nedílnou souèástí. Existence této èásti vyplývá z koncepce mikrokontrolérù ARM7®. V první øadì se jedná o definici a rozdìlení obrovského pamìového prostoru, který je dán tøicetidvoubitovou íøkou datového slova. S tímto velkým adresovým prostorem se pojí i dalí tøi úkoly této jednotky: detekce pøístupu do neexistujících èástí pamìti (Abort Status), pøístup k chybnì uloeným datùm (Misalignment detector) a øízení zápisu do interní pamìti Flash (pomocí jednotky Embeded Flash Controller). Posledním úkolem, který musí tato jednotka øeit, je spolupráce jednotlivých èástí mikrokontroléru, které mohou pracovat i na rùzných sbìrnicích (Bus Arbiter na obr. 46). Jednotlivé úkoly je moné vysledovat i z blokového schématu jednotky, které je na obr. 46, kde èásti patøící do popisované jednotky jsou na edivém pozadí. Popime si krátce úkoly a práci hlavních èástí. Úkolem Bus masteru je øeit spor dvou jednotek (dvou masterù), jádra procesoru ARM7TDMI® a DMA kontroléru, o pøístup na sbìrnici. Pro nìkoho moná pøekvapivì má jednotka Peripheral DMA Controller vyí prioritu ne jádro ARM7TDMI®. Jednotka s názvem Misalignment detector øeí, jak bylo výe napsáno, situace, kdy data nejsou uloeny tak, jak by mìla. Co si máme pod tím pøedstavit? V první øadì si pøipomeòme, e se jedná o tøicetidvoubitový mikrokontrolér, který dokáe v podstatì pracovat s tøemi typy dat - s byte (8 bitù), half word (16 bitù) a word (32 bitù). Pokud budeme pøistupovat k jednotlivým bytùm, nemùe bìhem pøístupu nastat problém. V pøípadì dat typu half word vak mùe nastat situace, kdy program bude chtít èíst èi zapisovat tato data z adresy, její nejnií bit bude nenulový. Stejná situace nastane i v pøípadì, kdy bychom chtìli pøistupovat k datùm typu word, jejich adresa nebude mít dva spodní bity adresy rovné nule. I kdy je pamì adresovatelná po jednotlivých byte, íøe sbìrnice je 32 bitù. Pokud bychom tedy chtìli èíst data typu word, tj. slovo o délce 32 bitù, z adresy, která nemá oba spodní bity nulové, muselo by se ètení uskuteènit ve dvou cyklech, a jednotlivé byte slova by se musely správnì seøadit. Protoe obsluha této a podobných situací by byla velice sloitá, existuje u mikrokontrolérù AT91 pravidlo (omezení), jak ukládat data s íøí 16 bitù a 32 bitù. Pro jistotu si ho uveïme jetì jednou. Data typu half word musí být uloena v pamìti tak, e nejnií adresový bit je nulový. Jinými slovy to znamená, e adresa je dìlitelná dvìma beze zbytku. Stejnì tak slova
Konstrukèní elektronika A Radio - 4/2007
Obr. 46. Memory Controller v AT91 typu word musí být uloena na adrese, její dva spodní bity jsou nulové, co jinými slovy lze vyjádøit tak, e adresa musí být dìlitelná ètyømi. Nìkdo si mùe øíci, e toto omezení lze oetøit bìhem pøekladu programu do strojového kódu, a tudí tato èást je v mikrokontroléru vlastnì zbyteèná. Bo-
Obr. 47. Rozdìlení pamìového prostoru v AT91
Obr. 48. Rozdìlení interního pamìového prostoru v AT91
huel je to pravda pouze èásteènì, nebo v programech jsou pouívány tzv. pointers, neboli nepøímé adresování. Pokud bude výpoèet adresy dat chybný nebo se data nechtìnì pøepíí, mohlo by se snadno stát, e bude pøi normálním bìhu programu vyadován nekorektní pøístup k pamìti. Tuto situaci tedy oetøuje popisovaná jednotka. Aby se usnadnilo nalezení místa v programu, na kterém byla umístìna ádost o nekorektní pøístup k datùm, je poadovaná adresa pamìti zachycena do registru Abort Status Registr a obsah programového èítaèe, tj. adresa instrukce programu, která tuto ádost obsahovala, je zachycena v registru Abort Link Registr. Informace o chybném pøístupu z této jednotky je pøedána do èásti nazvané Abort Status. Do této èásti je zavedena i informace o pøístupu do neexistujících oblastí pamìti, kterou detekuje adresový dekódér. Jednotka nazvaná Address decoder má v podstatì jednoduchou úlohu
- a to podle adresy povolit èi nepovolit pøístup k dané buòce pamìti. Základní dìlení pamìti podle nejvyích ètyø bitù je na obr. 47. Z tohoto obrázku je vidìt, e do podstatné èásti, celkem do ètrnácti stránek (stránka = 256 MB) pamìového prostoru, je pøístup zakázán, nebo zde není ádná pamì. Na obr. 48 vidíme detailnìjí uspoøádání interní pamìti. I zde se opakuje situace z pøedchozího obrázku. Celkem 253 MB, tj. 253 stránek (stránka = 1 MB) pamìového prostoru patøí k nepøístupné èásti. Je samozøejmé, e ne kadý typ má na èipu tolik pamìti, jak je uvedeno na obr. 48. Velikost reálnì dostupné pamìti se lií typ od typu. Tato reálná pamì se nìkolikráte zrcadlí v prostoru 1 MB tak, e je vyplnìn celý. Zápis do vnitøní pamìti typu Flash je dalím úkolem jednotky Memory Controller, resp. její èásti nazvané Embeded Flash Controller. Tato jednotka je schopna pøepisovat interní pamì Flash po jednotlivých stránkách. Jednotka je schopna pøepsat (= mazání + + zápis) jednu stránku za 6 ms. Dalí jednotkou, která se nepøímo podílí na vysokém výpoèetním výkonu mikrokontroléru, je jednotka PDC, co je zkratka slov Peripheral DMA Controller. Slovo nepøímo je zde uvedeno proto, e jednotka se na výpoètech nepodílí, ale dokáe ulehèit práci jádru mikrokontroléru, take pro vlastní bìh programu zbývá více èasu. V popisované rodinì mikrokontrolérù AT91SAM7 najdeme celkem 11 kanálù vyjma typu AT91SAM7S32, kde je na èipu integrováno pouze kanálù devìt (je zde pouze jeden USART). Pøenos dat pomocí DMA je také velmi rychlý, nebo pøenos pamì-periferie trvá pouze jeden takt øídicího kmitoètu Master Clock, zatímco pøenos opaèným smìrem zabere takty dva. DMA kanál je schopen obsáhnout celý adresový prostor, nebo adresové registry mají íøku 32 bitù. Maximální délka pøenesených dat je 64 kbyte, nebo registr èítající pøenesené byte je estnáctibitový. Kadá periferie má k dispozici dva kanály DMA, jeden pro pøenos pamì-periferie a druhý pro smìr opaèný. Výjimku tvoøí A/D pøevodník, u kterého je tøeba pouze jeden smìr pøenosu, a to periferie-pamì.
Advanced Interrupt Controller Tato jednotka je velmi dùleitou èástí mikrokontroléru, i kdy to opìt není periferie. Protoe øada AT91SAM7 je pøeurèena pro mnohem sloitìjí úkoly ne pøeváná vìtina osmibitových mikrokontrolérù, je nasnadì, e i monosti pøeruovacího systému musí být schopny øeit sloitìjí úlohy. Proto u popisovaných mikrokontrolérù najdeme osmiúrovòový sytém, který je schopen obslouit a 32 ádostí o pøeruení. Pøitom lze kadé ádosti programovì pøidìlit pøíslunou úroveò pøeruení (úroveò 7 je nejvyí, úroveò 0 je nejnií).
Konstrukèní elektronika A Radio - 4/2007
27
Protoe se mohou vyskytnout situace, kdy za bìhu jednoho pøeruení je vyvoláno dalí pøeruení s vyí prioritou, disponuje Advanced Interrupt Controller osmiúrovòovým hardwarovým zásobníkem, díky nìmu je schopen bez problému obslouit a osminásobnì vnoøené pøeruení. U interních zdrojù pøeruení je moné definovat, zda budou aktivní na hranu èi úroveò. U externích zdrojù pøeruení je dále moné rozliit i aktivní úroveò, tj., zda vstup bude aktivní na úroveò H èi L, nebo zda bude aktivní sestupná èi vzestupná hrana signálu. Vzhledem k monostem pøeruovacího systému a rùzným výjimkám (pøeruení bìhem debug módu), je více ne záhodno si pozornì pøeèíst originální datasheet k uvedeným mikrokontrolérùm, abychom získali alespoò ty nejnutnìjí informace o správné obsluze pøeruení. Pøeruovací systém je u sloitìjích systémù velmi dùleitý, nebo spektrum pøeruení u systémù pracujících v reálném èase je velmi iroké. Na jedné stranì tu najdeme pøípady, kdy je nutné zareagovat co nejrychleji, doslova bìhem pár µs, na stranì druhé tu najdeme pøípady, kdy ani tak nejde o rychlost, jako o sloitost obsluhy, kdy èas bìhu vlastního pøeruení není ji zanedbatelný.
Timer/Counter (TC) Je to dalí periferie, která si zaslouí struèný popis. Na èipu popisovaných mikrokontrolérù najdeme hned tøi nezávislé kanály estnáctibitových èítaèù/èasovaèù. Nejjednoduí typ, AT91SAM7S32, má tyto kanály pouze dva. Základní schéma celého bloku èítaèù/èasovaèù je na obr. 49. Po shlédnutí tohoto schématu by mohl nìkterý ètenáø namítnout, e tento blok není nièím výjimeèný. Opak je vak pravdou. Jedná se o velmi výkonnou periferii s mnoha funkcemi, která mùe být konfigurována do jednoho ze dvou základních reimù: Capture Mode a Waveform Mode. Vzhledem k rozsáhlosti popisu v originální dokumentaci, zvlátì pak u druhého z obou módù, bude zde uveden pouze struèný popis prvního módu (Capture Mode). Na obr. 50 je vidìt, e jádrem jednotky je estnáctibitový èítaè s bohatými monostmi spoutìní a volby øídicího kmitoètu. Konstruktér má monost si zvolit z celkem osmi zdrojù kmitoètu, pøièem 5 jich je interních a tøi externí. U zvoleného zdroje je moné urèit, zda bude èi nebude signál invertován. Tato volba pøijde vhod v situaci, kdy chceme, aby èítaè reagoval na opaènou hranu signálu. Pomocí externích vstupù TIOA a TIOB lze pøípadnì hodinový signál povolit èi zastavit. Ohlednì spoutìní je vhodné upozornit na monost synchronního sputìní více kanálù èítaèù/èasovaèù pomocí signálu SYNC. Popisovaný Capture Mode je vhodný pro mìøení vlastností signálu jako jsou frekvence, délka pulsu, støída
28
Obr. 49. Jednotka èítaèù/èasovaèù v AT91. U AT91SAM7S32 není implementován Timer/Counter Channel 2 a jeho podpùrné obvody apod. Tato mìøení mohou být provádìna pomocí vhodnì nastavených externích vstupù TIOA a TIOB, které pak ovládají dva záchytné registry Capture Registr A a Capture Registr B. U i z tohoto krátkého výètu moností je snad zøejmé, e schopnosti jednotek TC jsou velké a èítaèe/èasovaèe lze velmi dobøe pøizpùsobit tak, aby bylo co nejvíce usnadnìno øeení problému. Popis reimu je díky øadì módù velmi obsáhlý, a proto odkazuji ètenáøe na originální literaturu firmy ATMEL, kde jistì najdou odpovìdi na své otázky.
USB Device Port (UDP) Je to poslední periferie, kterou si pøedstavíme v krátkém povídání o AT91SAM7. Tuto periferii najdeme u vech zástupcù, opìt s výjimkou toho nejjednoduího, kterým je typ AT91SAM7S32. Trvalo pomìrnì dlouho, ne si USB porty naly cestu do amatérských aplikací. Snad díky skvìlému obvodu FT232B a ovladaèùm pro operaèní systémy Windows® se zaèalo toto rozhraní ve vìtí íøi pouívat i v amatérských aplikacích, kde vytlaèuje stále hojnì vyuívané, ale na souèasnou dobu pro mnoho aplikací pomalé, sériové rozhraní RS-232. Na èipech mikrokontrolérù rodiny AT91SAM7 je rozhraní USB implementováno ve verzi 2.0-full speed. Závìrem povídání o výborných mikrokontrolérech rodiny AT91SAM7 s jádrem ARM7® bych rád upozornil, e výèet periferií dostupných na èipech není v tomto èlánku úplný. Byly vynechány periferie, které jsou buï známé,
jako napø. TWI, SPI apod., nebo takové, jejich popis je dlouhý, jako je PWM controller nebo SCC sériový kanál. Rozsah popisu musel být podøízen monostem èasopisu. Podrobný popis vech vlastností této rodiny zabírá v originále necelých 600 stran formátu A4, a pøesto se najdou oblasti, kde by popis mohl èi mìl být jetì obsáhlejí a podrobnìjí.
Co bude dál? Vývoj se samozøejmì u mikrokontrolérù AT91SAM7 nezastavil. Po urèité dobì, kdy firma vyrábìla a získávala zkuenosti z výroby a prodeje tìchto mikroprocesorù s jádrem ARM7, pøedstavila svoji verzi tøicetidvoubitového mikrokontroléru nazvaného AVR32®. Architektura tohoto mikroprocesoru je zamìøena na typické úlohy, jako napø. zpracování obrazu (je zde obrazový koprocesor), zpracování reálného signálu (v jádøe je napø. implementována saturaèní logika) a mnoho dalího. To, e je mikroprocesor zamìøen na velké úkoly, je poznat i z faktu, e firmou ATMEL je pøímo podporován systém Linux (jádro 2.6) jakoto vhodný operaèní systém pro zákaznické aplikace. Ètenáøe poadující detailnìjí informace o tomto mikroprocesoru musím bohuel odkázat na webové stránky výrobce (www.atmel.com/products/avr32), nebo i struèný popis tohoto mikrokontroléru se zcela vymyká zamìøení èasopisu i jeho monostem. Na druhé stranì ani oblast nejmeních mikrokontrolérù se nestává pro výrobce nezajímavou oblastí, jak ostatnì
Konstrukèní elektronika A Radio - 4/2007
Obr. 50. Kanál èítaèù/èasovaèù v AT91 v reimu Capture Mode mohlo být poznat z popisu vlastností mikrokontrolérù v pouzdrech s poètem vývodù mením ne 20. A e je to oblast velmi ivá, je vidìt napø. i na nových zástupcích øady AT89, konkrétnì AT89LP213, AT89LP214 èi AT89LP216, coby pokraèovatelích le-
gendárních mikrokontrolérù s jádrem 8051, tentokráte vak s jednocyklovým (!) jádrem a moností ladit programové vybavení pøímo na pouitém procesoru díky implementovanému rozhraní OCD® (On Chip Debug), co je dvojvodièové sériové rozhraní. Popr-
Trocha praxe I kdy byl popis mikrokontrolérù proloen informacemi z praxe, pøece jenom by to chtìlo takté opravdovou praxi. Proto v následujících odstavcích budou popsány konstrukce s populárními mikrokontroléry spolu s dalími informacemi, které jsou potøebné pøi vlastní konstrukèní práci.
Ladicí rozhraní pro MC68HC908QY První konstrukcí, která zde bude pøedstavena, je rozhraní pro ladìní programového vybavení pøímo v mikrokontroléru. Jedná se o mikrokontroléry firmy Freescale, a to konkrétnì øadu MC68HC908QY. Z hlediska uivatele jsou tyto mikrokontroléry zajímavé tím, e mají v sobì vestavìny obvody, pøes které lze mikrokontrolér nejen programovat, ale pøes které lze pomocí interního Monitoru a jednotky Break Unit programové vybavení pøímo v cílové aplikaci i ladit.
To vak není ve, nebo vnìjí rozhraní lze bez problémù sestavit amatérskými prostøedky. Protoe se doslova skládá z nìkolika souèástek, je jeho cena velmi nízká. Ostatnì, podívejte se na obr. 51, na kterém je schéma zmiòovaného rozhraní. Celé rozhraní je zaloeno na pøevodníku úrovní RS-232 na TTL s obvodem MAX232ACPE. Je vak v podstatì jedno, jaký pouijeme pøevodník, dùleitá je u nìho pouze jedna vlastnost (kromì vlastního pøevodu úrovní), a tou je rychlý nábìh násobièe napìtí +9 V. Proto se jako pøevodníky hodí ty obvody, které pouívají kondenzátory s kapacitou 100 nF.
vé tak získávají zástupci øady AT89 monost ladìní programového vybavení podobnou, jako mají mikrokontroléry øad ATtiny a ATmega. Uvedené vlastnosti jistì pøesvìdèí mnoho uivatelù dále vyuívat desetiletími osvìdèenou architekturu legendy zvané I8051. Rychlý nábìh napìtí +9 V je velmi dùleitý, nebo chceme-li spustit mikrokontrolér v ladicím reimu, musí být na vstupu PTA2/IRQ napìtí U TST o velikosti alespoò UCC + 2,5 V, a to v okamiku ukonèení vnitøního Poweron resetu mikrokontroléru. Díky vyuití napìtí z vnitøního násobièe napìtí je tato podmínka snadno splnitelná i bez externího zdroje napìtí, který by zkomplikoval celé rozhraní. Pokud nechceme, aby mikrokontrolér pøeel po Power-on resetu do ladicího reimu, musí propojka JP3, pøes kterou se zavádí napìtí +9 V do vstupu PTA2/IRQ, zùstat spojena. Pøítomnost vyího napìtí na vstupu PTA2/IRQ není jedinou podmínkou pøechodu mikrokontroléru do ladícího reimu. Vstupy PTA0 a PTA1 musí mít úroveò log. 1 a vstup PTA4 musí mít úroveò log. 0. I kdy jsou tyto poadavky omezující, dají se pøi dobrém návrhu zapojení snadno dodret, take mikrokontrolér bude dobøe pracovat jak v ladicím reimu, tak i v reálném provo-
Konstrukèní elektronika A Radio - 4/2007
29
Obr. 51. Ladicí rozhraní pro mikrokontroléry MC68HC908QY zu. Vechny tyto podmínky, stejnì jako pøítomnost vyího napìtí na vstupu PTA2/IRQ, se testují v okamiku ukonèení Power-on resetu. Dalí souèástí rozhraní je externí krystalový oscilátor. Pro dodrení standardní rychlosti komunikace mezi poèítaèem a mikrokontrolérem je nutné pouít krystal s frekvencí 9,8304 MHz. Pøi této frekvenci bude komunikaèní rychlost 9600 Bd. Na odzkouení aplikací je vak té moné pøepnout mikrokontrolér na externí RC oscilátor pomocí propojky JP4. V pøípadì pouití vnitøního oscilátoru v mikrokontroléru zùstane propojka
30
nepropojena a vývod lze pouít jako vstupnì/výstupní. Vlastní obousmìrná komunikace pak probíhá pøes jeden vývod mikrokontroléru, a to pøes vývod 13 (PTA0/ /T0). Jeliko rozhraní RS-232 není této komunikaci naklonìno, musí zapojení rozhraní zprostøedkovat pøevod. Natìstí lze tento poadavek realizovat velmi jednodue nìkolikerým zpùsobem. Pravdìpodobnì nejjednoduím, ale plnì vyhovujícím øeením, je slouèit oba signály diodou D1. Vzhledem k nutnosti dodret logické úrovnì, byla jako nejvhodnìjí vybrána Schottkyho dioda
BAT49 s malým napìtím v propustném smìru. Úroveò log. 1 pak zajiuje pull-up rezistor R1. V pøípadì, e není poadována komunikace (mikrokontrolér má pracovat v reálném módu), je nutno nechat propojku JP1 nepropojenou. Posledním signálem, který je pøenáen z øídicího PC do rozhraní, je signál resetu mikrokontroléru, který je pøivádìn na vývod 8 (PTA3/RST). Stejnì jako v pøedchozích pøípadech lze v cílové aplikaci, ve které mikrokontrolér pracuje samostatnì, pouít tento vývod jako kadý jiný vývod I/O. Aby bylo moné aplikace jednodue vytváøet, jsou vývody procesoru vyvedeny na dva osmivývodové konektory 1 : 1 (se shodným pøiøazením signálù). V cílové aplikaci pak lze jednodue nahradit reálný procesor ladicím prostøedkem. Pøi této zámìnì je nutné dávat pozor na fakt, e nìkteré vývody jsou vyuity pøi ladìní. Z tohoto dùvodu nebylo toto rozhraní realizováno pro mikrokontroléry v malém osmivývodovém pouzdru, nebo pro aplikaci by zbylo jen velmi málo vývodù. Pøesto je vak vyuití tohoto zpùsobu ladìní programového vybavení i u tìchto mikrokontrolérù moné. Celé rozhraní je napájeno pøes stabilizátor 7805, který dokáe napájet i cílovou aplikaci. Z tohoto dùvodu je vhodné stabilizátor opatøit dostateènì dimenzovaným chladièem. Díky tomuto stabilizátoru je moné pouít jako napájecí zdroj laciný nestabilizovaný stejnosmìrný síový adaptér. Protoe mnoho adaptérù je opatøeno moností mìnit polaritu, je pøed stabilizátor zapojena ochranná dioda D2 zamezující jeho znièení pøi náhodném pøepólování. Pøi správné polaritì vnìjího napájecího napìtí bude svítit zelená LED LD1, která je pøipojená na výstup stabilizátoru. Na celém zapojení není nic zákeøného, take pøi peèlivé práci musí fungovat na první pokus. Snad jediná pøipomínka se váe k nutnosti oetøit vstupy nepouitých invertorù obvodu 74HC04. Tyto vstupy mají velmi vysokou impedanci, a pokud nejsou oetøeny (spojeny se zemí nebo se sbìrnicí kladného napájecího napìtí), mùe se nich naindukovat napìtí o hazardní úrovni (rovné pøiblinì polovinì napájecího napìtí), pøi které se zvìtí napájecí proud invertorù na desítky mA, co není pro bezchybnou funkci obvodu vhodné. Pro ovìøení správnosti zapojení bylo popisované rozhraní realizováno na prototypové (univerzální) desce s plonými spoji (obr. 52). Vechny souèástky, zejména pasivní, pokud to bylo moné, byly voleny typu SMD. Vývody souèástek byly propojeny na stranì spojù lakovaným mìdìným vodièem se samopájitelnou izolací. Pøi ovìøování funkènosti bylo shledáno, e je vhodné jako externí trimr
Konstrukèní elektronika A Radio - 4/2007
Tab. 5. Pøehled vech moných zpùsobù uvedení mikrokontroléru MC68HC908QY do stavu ladìní programu. UTST je napìtí o velikosti alespoò UCC + 2,5 V
Obr. 52. Prototyp rozhraní pro ladìní aplikací s mikrokontrolérem MC68HC908QY
RP1 pouít víceotáèkový typ (napø. typ 64Y, 64Z nebo PM19), aby bylo moné snadnìji nastavit poadovanou frekvenci oscilátoru. Popsaný zpùsob uvedení mikrokontroléru do stavu ladìní programu není jediným moným zpùsobem, ale je to zpùsob, který je platný vdy (nezáleí na obsahu pamìti programu, konkrétnì reset vektoru). Vechny moné zpùsoby uvedení mikrokontroléru do stavu ladìní programu jsou uvedeny v tab. 5. Ale vlastní rozhraní, i kdy laciné, není samo o sobì postaèující. Abychom mohli vyvíjet programy, je nutné vhodné vývojové prostøedí. Natìstí, jak se v poslední dobì stává zvykem, je toto vývojové prostøedí poskytováno zadarmo pøímo výrobcem mikrokontrolérù. Nejinak je tomu i v tomto pøípadì. Vývojové prostøedí, které si mùeme stáhnout ze stránek výrobce, se jmenuje CodeWarrior®, a je v nìm integrováno ve, co potøebujeme pro psaní i ladìní programového vybavení. Nebylo by na tom nic zajímavého, nebýt faktu, e v tomto prostøedí je dostupný i pøekladaè jazyka C ! I kdy je velikost výsledného kódu generovaného z jazyka C omezena na 4 kB (pozn.: v pøípadì speciální edice to je 16 kB), je tato velikost plnì dostaèující pro mnoho aplikací. Vdy MC68HC908QY4 má velikost pamìti pro program právì 4kB.
Limit pro kód psaný v jazyku symbolických adres je dán pouze velikostí pamìti cílového mikrokontroléru. Zmiòované vývojové prostøedí je moné stáhnout z webových stránek výrobce mikrokontrolérù www.freescale.com. Staení je podmínìno registrací. Pokud máme k dispozici pouze pomalé pøipojení na internet èi malý FUP limit, je nutné si uvìdomit, e instalace CodeWarrior® obnáí asi 290 MB! Pøi vyuívání prostøedí CodeWarrior® nesmíme zapomenout, e se jedná o profesionální vývojové prostøedí podporující jak mnoho typù mikrokontrolérù, tak i øadu vývojových prostøedkù. Proto je nutné pøed prvním pouitím popsaného rozhraní nastavit ve vývojovém prostøedí odpovídající typ. Odpovídající typ pro popisované rozhraní je zøejmý z obr. 53. Toto nastavení je pøístupné v reimu ladìní programu, take je nutné mít napsaný alespoò malý program (tøeba pøeloený vzorový pøíklad) a v menu Project vybrat volbu Debug. To zpùsobí pøeloení a zlinkování programu a pøechod do reimu ladìní, za co je zodpovìdná èást programu nazývajícího se True-Time Simulator & RealTime Debugger. Zde v menu Component najdeme poloku Set Target (= obr. 3.3). O vlastním vývojovém prostøedí by bylo moné napsat mnoho stránek, ale
na to zde není jednak místo, jednak je prostøedí velmi intuitivní, take s integrovanou nápovìdou se velmi lehce ovládá. Proto jen velmi struènì. Jedním dùleitým rysem prostøedí je podpora tzv. projektù, co umoòuje výsledný program rozdìlit do separátních èástí a ty pak pøeloit tak, e vytvoøí výsledný program. Výhodou projektù je jednak to, e se pøekládá vdy jen ten soubor, který vývojáø upravil, jednak se dají jednotlivé soubory øeící jeden ucelený problém, napø. komunikaci po lince RS-232 èi matematické operace v pohyblivé èárce, pouít snadno i v jiných programech pouhým zaèlenìním pøísluného souboru do projektu. To umoòuje programátorovi dosáhnout vyí efektivity práce. Nezanedbatelnou pøedností IDE je prùbìná jazyková kontrola (kontrola syntaxe) pomocí barevného rozliení textu. Díky této kontrole jsou nìkteré typy chyb, zvlátì u zaèínajících uivatelù, vidìt tzv. na první pohled. Samozøejmì existují i jiná vývojová prostøedí, ale zmiòované vývojové prostøedí je velmi kvalitním prostøedím s velmi irokými monostmi. Paleta nabízených funkcí nám bude vyhovovat, zejména kdy budeme chtít zaèít psát programy profesionálnì. Ale i pro amatérské potøeby je toto prostøedí vhodné. Proto toto prostøedí doporuèuji kadému, kdo chce vánì pracovat s tìmito popisovanými mikrokontroléry a mikrokontroléry firmy Freescale vùbec.
Konstrukèní elektronika A Radio - 4/2007
Obr. 53. Typ rozhraní (= interface)
31
Obr. 54. Digitální posuvné mìøítko
Interfejs pro digitální posuvné mìøítko Na trhu se pøed èasem objevilo digitální posuvné mìøítko, které je cenovì velmi pøijatelné díky faktu, e je vyrábìno v Èínì (obr. 54). Kromì zmiòované nízké ceny, která vak v tomto pøípadì neznaèí nízkou kvalitu, jsou u posuvného mìøítka zajímavé jeho dalí dvì vlastnosti. První z nich je fakt, e se jedná o mìøítko s rozsahem 0 a 200 mm, co je o 50 mm více, ne mají standardní mìøítka, která jsou bìnì dostupná. Díky tomuto faktu se roziøují monosti vyuití. Druhou neopomenutelnou vlastností je fakt, e aè se o tom oficiální dokumentace nezmiòuje, je vybaveno komunikaèním rozhraním se ètyøpólovým pøímým konektorem. O existenci tohoto konektoru se lze doèíst u interfejsu dodávaného té výrobcem. Protoe vak cena profesionálního interfejsu nìkolikanásobnì pøevyuje cenu vlastního posuvného mìøítka, je více ne jasné, e vzniknou amatérské konstrukce. Vrame se ke konektoru. Jedná se o konektor s rozteèí vývodù 2 mm, který je netypický. Take prvním problémem, se kterým se setkáme pøi konstrukci rozhraní, je zpùsob, jak pøipojit kabel k posuvnému mìøítku. Bohuel originální èi jiný pøímý konektor vhodný pro posuvné mìøítko se mi nepodaøilo sehnat. Lze vak sehnat konektor nepøímý s rozteèí 2 mm (Farnell), který se vak nevejde do prostoru pod krytkou. Z uvedených dùvodù bylo pro úèely vývoje pøevodníku zvoleno pøímé pøipájení kabelu na konektor v posuvném mìøítku. Musíme pájet velmi opatrnì, abychom konektor nepokodili. Pro finální konstrukci je vak nutností pouít kabel s konektorem, aby bylo moné kabel odpojit a aby byl pøece jenom trochu chránìn pøímý konektor v posuvném mìøítku pøed pokozením (pøed nechtìným odtrením mìdìné fólie). Zaèneme-li pátrat, jak je konektor zapojen, po nepøíli dlouhé dobì zjistíme, e data jsou pøenáena pomocí synchronního protokolu. Take na konektoru kromì napájení budou hodiny
32
(Clock) a data. Uspoøádání signálù na konektoru je vidìt na obr. 55. Pokud nìkoho zarazilo, e napájení je oznaèeno jako záporné, je to z toho dùvodu, e kladný pól napájecího èlánku je spojen s tìlem posuvného mìøítka. Proto je kladný pól oznaèen jako GND a záporný pól jako -1,5 V. Zbývá tedy vyøeit otázku formátu pøenáených dat. Tu je situace trochu komplikovanìjí, ale za pomoci digitálního osciloskopu èi lépe logického analyzátoru snadno odhalíme, jak jsou data pøenáena. Vzhledem k nestandardním úrovním byl nejdøíve zkonstruován pøevodník úrovní, který byl pouit jako interfejs pro logický analyzátor. Následnì bylo stejné zapojení pouito i v zapojení celého pøevodníku. Formát pøenáených dat je zøejmý z obr. 56. Z prùbìhù je vidìt, e data jsou platná, jsou-li hodiny v úrovni L (asi -1,5 V), a mohou se mìnit, kdy je hodinový signál v úrovni H. Z hlediska spolehlivosti je vhodné zjiovat stav datového vodièe zhruba v pùli intervalu, ve kterém je hodinový signál v úrovni L. Spolehlivìjím zpùsobem by bylo jistì vícenásobné vzorkování stavu napø. v 1/3, 1/2 a 2/3 zmiòovaného intervalu, jak to napø. dìlají pøijímaèe v rozhraní UART, ale protoe se bìhem testování nevyskytl ádný problém pøi pøenosu dat, bylo od toho zpùsobu uputìno. Vzhledem k rychlosti pøenosu dat a monostem pouitého laciného mikrokontroléru 89C2051-24PI bìícího na kmitoètu 22,1184 MHz by pøi vícenásobném vzorkování také následnì vzniknul problém se zpracováním vícebodovì navzorkovaných dat. Jedna instrukce typu reg-reg toti trvá pøi zmi-
Obr. 55. Rozmístìní signálù na konektoru digitálního posuvného mìøítka òovaném hodinovém kmitoètu 0,542 µs, co by umoòovalo provést jen asi 12 a 14 instrukcí do pøíchodu dalí sestupné hrany. Pokud by nìkterý ze ètenáøù chtìl zpracovávat signál dokonaleji, tedy testovat pøijímaný signál vícebodovì, nech radìji pouije velmi podobný mikrokontrolér AT89LP2052 èi AT89LP4052, který má jádro jednocyklové, a je tudí rychlejí a tedy i vhodnìjí (byl ji døíve popsán). Mikrokontrolér AT89LP2052-20PU je bìnì k dostání u GM Electronic (skl. è. 432-209) za velmi pøijatelnou cenu. Datový paket obsahuje celkem 48 bitù (2x 24 bitù). Tento paket je vysílán pøiblinì 3x za sekundu. Obì 24bitové hodnoty nejsou shodné. První z nich je relativní posun od poslednì zadané relativní nuly. Druhé 24bitové èíslo vyjadøuje jakousi absolutní pozici, nebo hodnota není závislá na relativním poèátku jako hodnota první. Slovo jakousi bylo zvoleno proto, e poèátek je zvolen pøi zapnutí, ale pøi kadém zapnutí je jiný. Formát èísel je jednoduchý. Jeden bit je vyhraen pro znaménko, zbývají-
Obr. 56. Pøenos dat z digitálního posuvného mìøítka
Konstrukèní elektronika A Radio - 4/2007
cích 23 bitù pro hodnotu. Z toho vyplývá, e zde existuje jak kladná nula, tak záporná nula. Rozliení, èi chcete-li jednotka mìøení, je 1/20480 palce. Otázkou zùstává co s takto získanými daty. Okamitì se nabízejí dvì monosti. První z nich je pouze zobrazovat hodnoty na vìtím displeji. Druhou moností je pøenáet namìøená data do nadøazeného poèítaèe typu PC pro dalí zpracování. Tímto zpùsobem by bylo moné získávat data napø. pro kontrolní mìøení s pøímým zápisem do výstupního protokolu a automatickou archivací. Dalí moností je vyuít posuvné mìøítko pro mìøení posuvu frézy èi suportu soustruhu, pøièem mìøená data jsou pøenáena do øídicí jednotky. Tímto jednoduchým zpùsobem lze snadno získat amatérskou NC frézu èi soustruh. Tím vak monosti vyuití posuvného mìøítka s interfejsem jistì nekonèí. Pro ovìøení funkce byla zvolena varianta pouhého zobrazování namìøené hodnoty na vìtím displeji typu LED. Pojïme se podívat na vlastní konstrukci. Základem veho je pøevodník úrovní. Tento pøevodník lze udìlat mnoha zpùsoby. V naem pøípadì potøebujeme pøevodník, který v klidu zatìuje obvod posuvného mìøítka co nejménì, má výstup s logickými úrovnìmi TTL a je pomìrnì jednoduchý. Na druhou stranu nemusí být rychlý. Na základì tìchto poadavkù bylo vybráno zapojení s invertujícími oddìlovaèi CMOS 4049 (obr. 57). Zavedením záporné zpìtné vazby jsou oddìlovaèe uvedeny do lineárního provozního reimu. Vstupní kondenzátory odstraòují napìový posun, take úrovnì signálu na vstupu prvního z kaskády oddìlovaèù se pohybují okolo rozhodovací úrovnì oddìlovaèe. Nastavením vhodné velikosti zpìtné vazby je dosaeno poadovaných logických úrovní na výstupu posledního z kaskády oddìlovaèù. Jak je z obr. 57 vidìt, 100 % vyuitím obvodu 4049 dokáeme obslouit právì dva potøebné kanály (hodiny a data). Dalí zpracování je ji pouze softwarové. Jako nejvhodnìjí mikrokontrolér pro odzkouení byl zvolen 89C2051, ke kterému je dostatek programového vybavení i vývojových prostøedkù. Je samozøejmé, e lze pouít jakýkoliv mikrokontrolér s dostateèným poètem vstupù/ /výstupù. Dalím kritériem je dostateèná proudová zatíitelnost výstupù, které budí LED displej. Tìmto poadavkùm vyhovují právì rodiny mikrokontrolérù 89C2051, 89S2051 nebo 89LP2052. Aby proudové zatíení výstupù bylo jetì sníeno, byly jako èíslicovky pro displej zvoleny sedmisegmentové LED displeje s nízkou spotøebou. Mezi takové patøí (znaèení GM Electronic): HDSP-H111 (skl. è. 512-137), HD-A55UBRD-B (skl. è. 512-210). Dále se pøed nedávnem v sortimentu fy GM Electronic objevily displeje nesoucí znaèení HD-S-5612, které mají velmi dobré elektrické a elektrooptické
parametry. Kromì ji vzpomínané níí spotøeby dané vyí svítivostí jsou displeje zajímavé svými barvami. Èíslicovky jsou toti dostupné v øadì netradièních barev. I kdy jsou bìnì na trhu zelené displeje, jedná se spíe o lutozelenou barvu, v pøípadì luté jde pak spíe o lutooranovou. Avak v pøípadì vzpomínaných èíslicovek tomu tak není. K dispozici jsou následující barvy: v první øadì je to bílá (HD-S-5612BW-11), dále je to modrá (HD-S-5612BB-11, dominantní vlnová délka 430 nm), lutá (HD-S-5612BUY11, dominantní vlnová délka 590nm), èistá zelená (HD-S-5612BPG-11, dominantní vlnová délka 525 nm) a ultra zelená (HD-S-5612BUG-11, dominantní vlnová délka 574 nm). Samozøejmì je moné koupit tyto èíslicovky i v barvì èervené (HD-S-5612BUHR-12, dominantní vlnová délka 645 nm). I kdy tyto èíslicovky nejsou oznaèeny jako nízkopøíkonové, jas segmentu pøi proudu 1,5 a 2 mA je dostaèující pro vìtinu aplikací. Pro ovìøení vhodnosti displejù pro dalí aplikace byly pouity v ovìøovacím zapojení modré èíslicovky. Schéma zkuebního zapojení je na obr. 58. Displej byl provozován v multiplexním provozu (1 : 8). Vzhledem k malému poètu vývodù mikrokontroléru je pozice právì zobrazované èíslice dekódována externím obvodem 74HC138. Uvedené zapojení umoòuje obslouit a sedmimístný displej (v naem pøípadì pouze estimístný), a pøitom máme jetì jednu pozici k dispozici pro pøípadná tlaèítka. Tento zpùsob pøipojení ovládacích tlaèítek dokáe v mnoha pøípadech uetøit mnoho vstupních vývodù pro nì. Cenou za toto øeení je ponìkud sloitìjí obsluha, ale ne pøíli, nebo obsluha displeje stejnì bìí v pravidelném intervalu. Vhodným intervalem pro obsluhu displeje s délkou do osmi míst je 1 ms. Tento interval byl zvolen i v tomto pøípadì. Dalí èástí zapojení jsou dva vstupní pøevodníky úrovní shodného provedení, jako byly pouity pro zkoumání pøenosového protokolu a formátu dat. U mikrokontroléru zùstaly nezapojeny vývody RxD a TxD od interního obvodu UART, nebo pro odzkouení ho nebylo tøeba. V pøípadì potøeby lze tyto vývody obsadit a pøenáet namìøená data do nadøazeného systému k dalí-
mu zpracování, jak bylo ji døíve naznaèeno. V celém zapojení není ádná záludnost. Moný problém se skrývá v programovém vybavení. Je nutné si toti uvìdomit, e v okamiku, kdy pobìí obsluha ètení pøenáených dat, nesmí být obsloueno pøeruení od èítaèe/èasovaèe generujícího poadavek refree (obnovy) displeje. Z tohoto dùvodu je tøeba se zasynchronizovat na start pøenosu dat a obnovu udìlat pøed a po vlastním pøenosu dat, jinými slovy, celý pøenos dat se musí schovat do rámce 1 ms. Pokud bychom nezasynchronizovali oba dìje a tøeba jedno zobrazování pouze zpozdili, projevilo by se to v rùzném jasu LED displeje. Na druhou stranu je faktem, e pøenos dat probíhá zhruba 3x za sekundu a z hlediska refree neznamená významnou zmìnu. Pøesto je vhodné se tomuto monému problému vyhnout. Jinak programové vybavení nepøedstavuje nic zajímavého, nebo spoèívá v naètení dat a vynásobení 24bitového slova konstantou s následným zaokouhlením. Výsledek se pak pøevede do BCD kódu a potlaèí se úvodní nevýznamné nuly. Následuje pøevod do kódu pro LED displej a vlastní zobrazení. Program obsaený v mikrokontroléru 89C2051, který tyto úkony vykonává, je nazván test.bin a je moné ho vyádat u autora na jeho e-mailové adrese. Tlaèítko TL1 mìlo v ovìøovacím zapojení dvì funkce. Bylo-li stisknuto pøi zapnutí systému, na displeji se zobrazovaly nasnímané hodnoty bez jakýchkoliv úprav (to je jeden z dùvodù, proè má displej 6 míst). V pøípadì normálního startu pak slouilo k pøepínání zobrazení mm/inch. V prùbìhu testování a ovìøování funkce bylo zjitìno, e je moné elektroniku posuvného mìøítka i ovládat. Jinými slovy, komunikace probíhá i smìrem do posuvného mìøítka. Jedná se pouze o komunikaci primitivní, ale mùe v nìkterých pøípadech pøijít vhod. Elektronika posuvky se ovládá tak, e se zkratuje signál CLK na GND. Jeli spojení delí ne urèitá doba, vynuluje se údaj na displeji, co znamená nastavení nového relativního poèátku. V ovìøovacím zapojení vak tato monost nebyla vyuita, jeliko se na tuto vlastnost pøilo a po návrhu vlastního zapojení.
Konstrukèní elektronika A Radio - 4/2007
Obr. 57. Pøevodník úrovní
33
Obr. 58. Interfejs pro pøenos dat z digitálního posuvného mìøítka Celý interfejs byl pro ovìøení funkènosti postaven na univerzální desce s plonými spoji. Vìtina souèástek
byla pouita v provedení pro SMT, a to ve velikosti 1206 (obr. 59). Finální deska s plonými spoji navrena nebyla,
nebo celý vývoj není u konce. Ve høe zùstávají dvì varianty pøístroje: první je samostatná jednotka, druhou je jednotka slouící pouze pro pøevod formátu dat na sbìrnici RS-232 s následným pøenosem do PC. U druhé varianty je zvaováno nasazení mikrokontroléru s malou spotøebou, nebo se tu nabízí monost napájet celý interfejs z rozhraní RS-232. Takté by bylo moné interfejs doplnit zdrojem napìtí -1,5 V a napájet jím posuvné mìøítko, ve kterém by pak nemusel být vùbec napájecí èlánek.
Závìr O mikrokontrolérech dalích firem, pøedevím FreeScale a MICROCHIP, bude pojednáno v nìkterém z pøítích èísel KE v roce 2008. Popis mikrokontrolérù bude doplnìn, podobnì jako v tomto èísle KE, praktickými konstrukcemi.
Obr. 59. Ovìøovací zapojení interfejsu k digitálnímu posuvnému mìøítku
34
Kontakt na autora: Mobil: 606 268 320 E-mail:
[email protected]
Konstrukèní elektronika A Radio - 4/2007
ZAJÍMAVÁ A PRAKTICKÁ ZAPOJENÍ V této kapitole jsou uvedena zapojení z oblasti techniky v domácnosti a mìøicí techniky, která jsou vìtinou pøevzata ze zahranièních èasopisù. Popsané konstrukce je vhodné brát pøedevím jako podnìt a inspiraci k dalí tvùrèí èinnosti a k vlastnímu laborování.
Technika v domácnosti Indikátor otevøených dvíøek u chladnièky Nedovøení dvíøek zpùsobuje zvìtení spotøeby chladnièky, zalednìní výparníku a hrozí i zkaení potravin. Popisovaný indikátor hlídá otevøení dvíøek a po nìkolika sekundách je zaène indikovat pískáním. To má i svùj výchovný efekt, který vede uivatele, pøedevím malé dìti, k tomu, aby se dvíøka otevírala pouze na krátkou dobu. Schéma indikátoru je na obr. 1. K indikaci otevøení dvíøek je pouit fototranzistor Ft umístìný do tìsné blízkosti dvíøek, který se vnìjím svìtlem pøi pootevøení dvíøek sepne (indikátor nefunguje, kdy je v místnosti, ve které je lednièka umístìna, tma). Pokud staèí indikovat a vìtí pootevøení dvíøek, mùeme fototranzistor umístit k árovce, která osvìtluje vnitøek chladnièky. Fototranzistor se pak sepne pøi jejím rozsvícení. Sepnutím fototranzistoru se pøivede nízká úroveò L na vstup RESET (vývod 12) IO1. Obvod IO1 je typu 4060 a je to RC oscilátor s binární dìlièkou kmitoètu. Úrovní L na vstupu RESET se uvede oscilátor RC v èinnost. Jeho kmitoèet fo je urèen hodnotami C1 a R2 podle vztahu: fo = 1/(2,3·R2·C1) [Hz; Ω, F] a v tomto zapojení je asi 1,3 kHz. Na výstupu Q13 (vývod 3) IO1 je kmitoèet fo vydìlen èíslem 214, tj. 16 384x. Tzn., e asi po 6,2 s od sepnutí fototranzistoru (po polovinì periody vydìleného kmiotoètu) se na výstupu Q13 objeví vysoká úroveò H a pøes hradlo z diod D2 a D1 se z výstupu oscilátoru RC (z vývodu 10 IO1) vybudí kmitoètem
1,3 kHz piezomìniè Piezo. Pokud bude fototranzistor stále sepnutý, bude mìniè Piezo pískat dalích 6,2 s, pak bude 6,2 s potichu, pak zase bude 6,2 s pískat atd., tj. bude pískat vdy pøi úrovni H na výstupu Q13. Hodnoty souèástek indikátoru jsem zvolil tak, aby zapojení bylo co nejjednoduí a aby dobøe plnilo svùj úèel. Kmitoèet pískání má být v oblasti, ve které má piezomìniè dobrou úèinnost a kde je lidský sluch hodnì citlivý. Aby hradlo s diodami D1 a D2 správnì pracovalo, musí být paralelnì k piezomìnièi pøipojen rezistor R5. Jeho odpor jsem zvolil tak, aby podstatným zpùsobem nezvìtoval odbìr proudu. Ten je v aktivním stavu asi 1,5 mA (bez proudu Zenerovou diodou D5). Napájecí napìtí doporuèuji co nejvìtí, tj. 13 a 14 V (maximální napájecí napìtí obvodù CMOS je 15 V), aby bylo pískání co nejhlasitìjí. Indikátor vak pracuje i s mnohem mením napájecím napìtím. Vhodné a bezpeèné je napájet indikátor destièkovou baterií 9 V. V tom pøípadì vynecháme souèástky C2, C3, R3 a D3 a D5 a baterii pøipojíme místo D5 (kladným pólem nahoru). Nejvýhodnìjí je vak napájet indikátor ze sítì, a nic tomu nebrání. Odpadá starost o výmìnu baterie. Nesmíme ale zapomínat, e indikátor pracuje ve vlhkém prostøedí, take tato varianta je urèena pouze pro zkuené konstruktéry. POZOR NA ÚRAZ ELEKTRICKÝM PROUDEM! Síový pøívod musíme provést velmi peèlivì a musí být co nejkratí. Nejvýhodnìjí je celý indikátor umístit do tìsné blízkosti vnitøní osvìtlovací árovky, na kterou je pøi-
vádìno síové napìtí. Fázový (L) a nulový (N) vodiè bychom v ádném pøípadì nemìli zamìnit, i kdy by indikátor fungoval. Pozor na pøípadné pouití rozdvojky, která otáèí fázi! Síové napìtí se zmenuje pøedøadným kondenzátorem C3, který je doplnìn usmìròovaèem s D3, D4 a C2. Velikost napájecího napìtí 13 V urèuje Zenerova dioda D5. Na C3 se neztrácí ádná energie, co je v tomto zapojení podstatné. R3 omezuje pøechodový dìj pøi zapnutí. Kapacita 100 nF kondenzátoru C3 je optimální, nesmíme vak ji dále zvìtovat odbìr proudu. Vechny souèástky indikátoru jsou vývodové a jsou pøipájené na DPS s jednostrannými spoji (obr. 2). Fototranzistor Ft je umístìn mimo desku.
Seznam souèástek R1 R2 R3 R4 R5 C1 C2 C3 D1, D2 D3, D4 D5 Ft IO1 Piezo
Obr. 1. Indikátor otevøených dvíøek u chladnièky
Konstrukèní elektronika A Radio - 4/2007
4,7 MΩ, miniaturní 15 kΩ, miniaturní 680 Ω, miniaturní 680 kΩ, miniaturní 30 kΩ, miniaturní 22 nF/100 V, fóliový 100 µF/16 V, radiální 100 nF/275 VAC (CFAC) KA136 (1N4148) 1N4007 BZX83V013 Zener. dioda 13 V/0,5 W SFH309-5 (fototranzistor) CMOS 4060 KPT1540W (piezomìniè)
Ing. Jiøí Vlèek
Obr. 2. DPS indikátoru (mìø.: 1 : 1)
35
WC automat Popisovaný pøístroj, jeho schéma je na obr. 3, zajiuje automatické ovládání svìtla a ventilátoru na WC. Na výstupní stranì automatu jsou dvì relé. Relé RE1 spíná síové napìtí na svorkovnici K1, ke které je pøipojena lampa (svìtlo) na WC. Druhé relé RE2 spíná síové napìtí na svorkovnici K2, ke které je pøipojen ventilátor. Obì relé mají cívku na napìtí 12 V a jeden výkonový pøepínací kontakt se zatiitelností 250 V (50 Hz)/8 A. V pùvodním prameni je doporuèováno relé Siemens V23057-B2-A101. Na vstupní stranì automatu je svorkovnice K2, na kterou se pøivádí síové napìtí, a ovládací dveøní spínaè S1, kterým se spoutí funkce automatu. Kvùli spolehlivosti je S1 tvoøen jazýèkovým kontaktem, který je ovládán malým feritovým permanentním magnetem pøipevnìným na horní hranì dveøí od WC. Jazýèkový kontakt S1 je pøipevnìn na zárubni dveøí tak, aby byl v dosahu magnetu. Pøi zavøených dveøích WC musí být S1 sepnut, po otevøení dveøí se vypne. Pøes odruovací integraèní èlánek R6, C2 je spínaè S1 pøipojen na vstup hradla IO1B typu 4093, které funguje jako Schmittùv klopný obvod (SKO). V klidovém stavu je svìtlo na WC zhasnuté a ventilátor nepracuje. Chceme-li WC pouít a otevøeme-li dveøe, S1 vypne, výstup hradla IO1B pøejde z úrovnì H do L, derivaèní èlánek R7, C11 vygeneruje krátký exponenciální impuls úrovnì L a na výstupu hradla
IO1D se objeví krátký pravoúhlý impuls úrovnì H. Tímto impulsem se spustí kyv monostabilního klopného obvodu (MKO) IO2A typu 4538. Dobu kyvu lze nastavit trimrem P1 v rozmezí asi 1 a 100 s. Po dobu kyvu je na výstupu MKO na vývodu 6 IO2A úroveò H a pøes invertor IO1A a tranzistor T1 je aktivováno relé RE1. Kontaktem RE1 je zapnuto svìtlo. Pozn. red.: Podle katalogovch listù IO 4538 by do série s èasovacím trimrem P1 mìl být zapojen rezistor s odporm minimálnì 5 kΩ, aby vývod RC MKO nemohl být nikdy pøipojen pøímo na kladnou napájecí sbìrnici. Po skonèení kyvu MKO IO2A svìtlo zhasne, a je WC obsazeno, nebo ne. Pokud by se doba svícení 100 s ukázala krátkou, je moné ji a nìkolikrát prodlouit zvìtením odporu trimru P1 (a na 2,5 MΩ) a kapacity kondenzátoru C3 (a na 1 000 µF, pozor na svodový proud!). Vzestupnou hranou na výstupu 6 IO2A je se zpodìním asi 10 s, daným integraèním èlánkem R3, C5, sputìn kyv druhého MKO IO2B. Bìhem kyvu tohoto MKO je pøes tranzistor T2 aktivováno relé RE2 a jeho kontaktem je zapnut ventilátor. Dobu kyvu lze nastavit trimrem P2 opìt od asi 1 do asi 100 s. Podobnì jako u MKO IO2A (viz pøedchozí poznámka) by mìl být do série s P2 zapojen rezistor s odporem alespoò 5 kΩ. Kdy pøi opoutìní WC znovu otevøeme dveøe, vygeneruje se na výstupu hradla IO1D dalí kladný impuls. Pokud vak jetì svítí svìtlo, je na vstupu 9
hradla IO1C úroveò H (pøivádìná z výstupu 6 MKO IO2A pøes integraèní èlánek R2, C4) a impulsem úrovnì H na vstupu 8 IO1C se na výstupu 10 IO1C vytvoøí impuls úrovnì L, kterým se MKO IO2A vynuluje a jeho kyv se ukonèí. Svìtlo vak nezhasne okamitì, protoe díky zpoïovací funkci èlánku R2, C4 je relé RE1 jetì nìkolik sekund aktivováno. Zpodìní zhasnutí lze pøípadnì prodlouit zvìtením kapacity kondenzátoru C4. Výhodou pouitého zapojení WC automatu je to, e svìtlo na WC zhasne a ventilátor se zastaví, i kdy napø. pøi høe dìtí zùstanou dveøe WC pootevøené. WC automat je napájen napìtím +12 V z vnitøního síového stabilizovaného zdroje. Zdroj je klasický, obsahuje síový transformátor TR1, mùstkový usmìròovaè DB1, vyhlazovací kondenzátor C1 a tøísvorkový stabilizátor IO3. Síové vinutí TR1 je chránìno pojistkou F1. Aby jednotlivé IO pøípadnì nekmitaly, je napájecí sbìrnice +12 V dùkladnì blokována kondenzátory C7 a C10. Souèástky WC automatu jsou umístìny na desce s jednostrannými plonými spoji, která je uvedena v pùvodním prameni. Deska je vestavìn do dobøe izolované plastové skøíòky. Vzhledem k tomu, e na desce se vyskytuje síové napìtí, je nutné pøi oivování a instalaci dbát vech pøísluných bezpeènostních pøedpisù. Nejvhodnìjí je pøi oivování pøipojit desku k síti pøes oddìlovací transformátor. Elektor 7-8/1999
Obr. 3. WC automat
36
Konstrukèní elektronika A Radio - 4/2007
Obr. 4. Spínaè pumpy pro filtr v akváriu
Spínaè èerpadla pro filtr v akváriu Zkuený akvarista bìhem krmení ryb vypíná èerpadlo pro filtraci vody, aby se krmivo proudìním vody nerozptýlilo po celém akváriu a nezaneslo filtr. Tomu, aby se po nìjaké dobì, a ryby krmivo seerou, nezapomìlo èerpadlo filtru opìt zapnout, pøedchází dále popisovaný spínaè, který èerpadlo po pøednastaveném èasovém intervalu zapne automaticky. Schéma spínaèe èerpadla je na obr. 4. Základem zapojení je monostabilní klopný obvod (MKO) s èasovaèem 555 (IO1). V klidu je na výstupu Q IO1 úroveò H, tranzistor T2 je sepnutý a relé RE1 je aktivováno. Pøes sepnutý spínací kontakt relé je pøivádìno síové napìtí z pøívodní svorkovnice K1 na výstupní svorkovnici K2 a èerpadlo (pumpa), které je pøipojené ke svorkovnici K2, je v provozu. Zapnutí èerpadla indikuje zelená (G) LED D1. Chceme-li èerpadlo vypnout, stiskneme tlaèítko S2 (VYP). Stisknutím tlaèítka se pøivede na nulovací vstup R èasovaèe IO1 úroveò L, èasovaè se vynuluje a výstup Q IO1 pøejde do úrovnì L. Tranzistor T2 vypne, kontakt relé se rozpojí a èerpadlo se zastaví. Zastavení èerpadla indikuje èervená (R) LED D2, která je buzena z výstupu Q IO1 pøes invertor s tranzistorem T1. Po uvolnìní tlaèítka S2 zùstane výstup Q IO1 v úrovni L, ale zaène kyv MKO. Po okonèení kyvu pøejde výstup Q IO1 opìt do úrovnì H, relé se aktivuje a èerpadlo zaène pracovat. Doba kyvu je urèena hodnotami souèástek C1, R3 a P1 a trimrem P1 ji lze nastavit v rozmezí asi 1 a 9 minut. K èasovaèi IO1 je pøipojeno jetì tlaèítko S1 (ZAP). Jeho stisknutím se kyv MKO okamitì ukonèí a èerpadlo se ihned rozbìhne. Tímto tlaèítkem zapínáme èerpadlo tehdy, kdy nechceme èekat, a se po nastavené dobì zapne automaticky. Místo dvou tlaèítek mùeme pro ovládání spínaèe èerpadla pouít koléb-
kový tøípolohový pøepínaè ON-OFF-ON, který má stabilní støední polohu a letmé obì krajní polohy ZAP a VYP. Pøístroj je napájen ze sítì vlastním zdrojem s transformátorem TR1, s mùstkovým usmìròovaèem s diodami D4 a D7 a s vyhlazovacím kondenzátorem C3. Nestabilizovaným napìtím asi 14 V odebíraným pøímo z vyhlazovacího kondenzátoru je napájeno relé RE1. Napìtí pro èasovaè je stabilizováno a zmenováno na asi 12 V Zenerovou diodou D3. Pøístroj má malý pøíkon a ze sítì odebírá pøiblinì 2 W, take nás ani jeho trvalý provoz finanènì nezruinuje. Konstrukce spínaèe èerpadla není v pùvodním prameni blíe specifikována. Relé RE1 má cívku na napìtí 12 V a jeden výkonový pøepínací kontakt se zatiitelností 250 V (50 Hz)/8 A. Ostatní souèástky jsou zcela bìné. Pøi stavbì, oivování a pouívání musíme mít na pamìti, e se jedná o síové zaøízení, ve musí být dùkladnì izolováno a musíme se øídit vemi pøíslunými bezpeènostními pøedpisy. Z toho dùvodu, i kdy je zapojení jednoduché, není stavba vhodná pro zaèáteèníky. Elektor 7-8/1997
Èítaè pøíchozích telefonních volání I uivatele pevné linky nìkdy zajímá, kolik lidí mu telefonovalo bìhem jeho nepøítomnosti. V takovém pøípadì si mùe zhotovit dále popisovaný èítaè, který po kadém marném vyzvánìní zvýí svùj stav o jednièku. Stav èítaèe indikuje øádka desíti LED v kódu jedna z devíti. Pøed zaèátkem èítání je nutné èítaè vynulovat tlaèítkem RESET. Schéma èítaèe pøíchozích telefonních volání je na obr. 5. Telefonní linka s vodièi a, b je pøipojena na svorkovnici K2. Stejnosmìrné napìtí z linky je oddìleno kondenzátorem C2. Pøi vyzvánìní teèe støídavý vyzvánìcí proud kondenzátorem C2 a rozsvìcí infraLED v optoèlenu OPT1. Záporné pùlvlny vyzvánìcího proudu obcházejí optoèlen diodou D14. Zenerovy diody D12 a D13 vytváøejí pásmo necitlivosti pro støídavé signály s mezivrcholovým rozkmitem mením ne asi ±13 V, aby optoèlen nereagoval na ruivé signály na lince. Pøi vyzvánìní se aktivovanou infraLED budí fototranzistor v optoèlenu, který spíná a vybíjí kondenzátor C3.
Obr. 5. Èítaè pøíchozích telefonních volání
Konstrukèní elektronika A Radio - 4/2007
37
Kondenzátor C3 je nabíjen pøes rezistor R3. Nabíjecí proud je natolik malý, e napìtí na C3 zùstává v úrovni L i v mezerách mezi jednotlivými zvonìními v jedné vyzvánìcí sérii. Kdy vyzvánìní skonèí, napìtí na C3 se asi za 5 s zvìtí natolik, e pøejde do úrovnì H. Napìtí z C3 je pøivádìno na taktovací vstup CLK pìtistupòového Johnsonova èítaèe 4017 (IO1). Vzestupnou hranou signálu na C3 vzniklou ukonèením vyzvánìní se stav èítaèe zvýí vdy o jednièku. Pøed zapoèetím sledování poètu volání èítaè vynulujeme tlaèítkem S1 (RESET). Po vynulování jsou vechny LED zhasnuté. Po prvním vyzvánìní pøejde èítaè do stavu jedna a rozsvítí se LED D1 a D2. LED D1 pak svítí trvale a indikuje, e bylo vyzvánìno. Ostatní LED D2 a D10 nesou informaci o tom, kolikrát bylo vyzvánìno. Po druhém vyzvánìní pøejde èítaè do stavu dva, zhasne D2 a rozsvítí se D3. Po dalích vyzvánìních se postupnì jednotlivì rozsvìcejí LED D4 a D10. Po devíti vyzvánìních se úrovní H pøivedenou z výstupu Q9 na vstup ENA zablokuje taktovací vstup CLK a èítání se ukonèí. Èítaè si tedy mùe zapamatovat nejvýe devìt vyzvánìní, co je vak zcela urèitì dostateèný poèet. Èítaè je napájen z vnìjího zdroje pøes svorkovnici K1 hrubì stabilizovaným ss napìtím 9 V. Dioda D11 chrání obvody èítaèe pøi pøepólování napájecího napìtí. Nakonec je nutné zdùraznit, e není legální pøipojovat tento èítaè k veøejné telefonní síti. Elektronika Praktyczna 3/2006
Zesilovaè k telefonnímu zvonku Na obr. 6 je schéma výkonového zesilovaèe signálu telefonního zvonku. Výstupem zesilovaèe mùeme budit árovku s pøíkonem 100 W i více nebo nìjakou hlasitou síovou sirénu. Pak nepøeslechneme slabé zvonìní telefonu ani v hluèném prostøedí. Svìtelnou indikaci zvonìní ocení i nedoslýchaví lidé. Té je výhodné odpojit zvonek a indikovat zvonìní árovkou v pøípadì, kdy máme malé dìti a nechceme, aby se pøi zvonìní telefonu probudily. Zapojení zesilovaèe je velmi jednoduché. Vodièe a a b telefonní linky jsou pøes oddìlovací kondenzátor C1 a usmìròovaè s diodou D2 pøipojeny na vstup polovodièového relé (SSR = So-
lid State Relay) IO1 typu S202T02, které pøi budicím proudu 8 mA je schopné pøi síovém napìtí 230 V/50 Hz spínat v nule støídavý proud a 2 A. Pøi zvonìní se vybudí vstup SSR a rozsvítí se árovka Z1 pøipojená k síti pøes jeho výstup. Uvedený typ SSR dodává napø. GM Electronic. Zenerova dioda D2 vede proud v opaèné pùlvlnì ne D1 a spolu s rezistorem R1 omezuje ruivé impulsy. LED D3 zmenuje citlivost polovodièového relé, aby nespínalo bì-
Elektor 7-8/2006
Mìøicí technika Generátor funkcí s jedním rozsahem 20 Hz a 25 kHz V souèasné dobì se generátory funkcí konstruují se speciálními integrovanými obvody (napø. XR2206 apod.). Tyto IO umoòují plynule ladit kmitoèet v rozmezí zhruba 1 :10, take pro pokrytí akustického pásma 20 Hz a 20 kHz musí mít generátor tøi pøepínatelné kmitoètové rozsahy (20 a 200 Hz, 200 Hz a 2 kHz a 2 a 20 kHz). Generátor funkcí, jeho schéma je na obr. 7, má ponìkud sloitìjí zapojení ne generátor se speciálními IO, ale nepotøebuje pøapínaè rozsahù, protoe je plynule pøeladitelný od 20 Hz a do 25 kHz. Výhodné je i to, e v nìm jsou pouity bìné univerzální integrované obvody - operaèní zesilovaèe (OZ) LF351 a NE5532 a analogové spínaèe 4066, take jej lze zhotovit i ze uplíkových zásob. Základem generátoru je nf oscilátor, který se skládá z komparátoru s OZ IO1, analogových spínaèù IO2A a IO2C a integrátoru s OZ IO3. Kmitoèet oscilátoru se pøelaïuje potenciometrem P2. Rezistory R7 a R6 urèují dolní a horní mez rozsahu pøeladìní. Aby bylo ladìní dostateènì jemné, musí být P2 precizní desetiotáèkový, v nouzi vak postaèí i bìný logaritmický. OZ IO3 má mezi výstup a invertující vstup zapojen integraèní kondenzátor C3, který se nabíjí a vybíjí proudem tekoucím rezistorem R10. Neinvertující vstup OZ IO3 je pøipojen k bìci ladicího potenciometru P2 pøes odporový dìliè R11, R12 s dìlicím pomìrem 1/2, take na obou vstupech OZ IO3 je vdy polovina napìtí z bìce P2. Vstup integrátoru (levý vývod rezistoru R10) se pøipojuje buï spínaèem IO2C na zem,
Obr. 6. Zesilovaè k telefonnímu zvonku
38
nými ruivými signály z telefonní linky. Výstup SSR je chránìn varistorem R3. Spínaè je galvanicky spojen se sítí, a proto musí být vestavìn do dobøe izolované plastové skøíòky. Pøi jeho stavbì, oivování i provozu musí být dodrovány pøísluné bezpeènostní pøedpisy. Stejnì jako v pøedchozím pøípadì platí, e neschválené zaøízení se nesmí pøipojovat k veøejné telefonní síti.
nebo spínaèem IO2A na bìec ladicího potenciometru P2. V obou pøípadech leí na rezistoru R10 napìtí, jeho velikost je rovna polovinì napìtí z bìce P2, pøièem znaménko tohoto napìtí závisí na tom, který ze spínaèù je sepnut. Integraèní kondenzátor C3 je tedy nabíjen i vybíjen stejnì velkým proudem, take sklon obou hran trojúhelníkového napìtí na výstupu OZ IO3 je (a na znaménko) shodný. Díky tomu má trojúhelníkový signál na výstupu OZ IO3 støídu 1 : 1. Na nízkých kmitoètech je ladicí napìtí z bìce P2 srovnatelné se vstupní napìovou nesymetrií OZ IO3, která pak ovlivòuje støídu výstupního signálu. Proto je k OZ IO3 pøipojen trimr P3, kterým lze vstupní napìovou nesymetrii vykompenzovat. Trimr P3 se pøi oivování generátoru nastavuje tak, aby pøi naladìném kmitoètu 20 Hz mìl trojúhelníkový signál na výstupu OZ IO3 støídu pøesnì 1 : 1. Analogové spínaèe IO2C a IO2A jsou ovládány obdélníkovým signálem z výstupu komparátoru s OZ IO1. Tøetí analogový spínaè IO2B spolu s rezistorem R8 slouí jako invertor ovládacího signálu pro spínaè IO2C. Ètvrtý nevyuitý spínaè IO2D je oetøen uzemnìním vech svých vývodù. Omezovaè s rezistorem R9 a Schottkyho diodou D3 zabraòuje tomu, aby se z výstupu komparátoru nedostávalo na ovládací vstupy spínaèù pøíli velké záporné napìtí. Komparátor má hysterezi, která je zavedena rezistorem R4. Na vstup komparátoru se pøes odporový dìliè se souèástkami R1, P1a R3 pøivádí trojúhelníkový signál z výstupu integrátoru. Trimrem P1 se nastavuje rozhodovací úroveò komparátoru v rozmezí pøiblinì ±3 a ±7 V. Maximální rozhodovací úroveò omezují Zenerovy diody ZD1 a ZD2. Kdy je výstup komparátoru IO1 v kladné saturaci (ve vysoké úrovni H), je sepnut spínaè IO2A, z bìce P2 teèe pøes R10 proud smìrem do vstupu integrátoru a napìtí na výstupu integrátoru lineárnì klesá. Kdy dosáhne výstupní napìtí integrátoru záporné rozhodovací úrovnì komparátoru, pøeklopí se výstup komparátoru do záporné saturace (do nízké úrovnì L), následkem èeho vypne spínaè IO2A a sepne spínaè IO2C. Pøes R10 pak
Konstrukèní elektronika A Radio - 4/2007
Obr. 7. Generátor funkcí s jedním rozsahem 20 Hz a 25 kHz teèe proud smìrem ze vstupu integrátoru do zemì a napìtí na výstupu integrátoru lineárnì stoupá. Kdy napìtí na výstupu integrátoru dosáhne kladné rozhodovací úrovnì komparátoru, pøeklopí se výstup komparátoru zpìt do kladné saturace a napìtí na výstupu integrátoru zaène klesat. Celý dìj se neustále opakuje, take oscilátor kmitá. Trojúhelnikový signál z integrátoru se upravuje na sinusový tvarovaèem s OZ IO4A. Tvarovaè pracuje na principu nelineární záporné zpìtné vazby zavedené diodami D4 a D13. Co nejdokonalejí tvar sinusovky se seøizuje podle osciloskopu trimry P1 a P4. Prùbìh výstupního signálu generátoru funkcí se volí pøepínaèem S1. Obdélníkový signál se odebírá z výstupu komparátoru, trojúhelníkový signál z výstupu integrátoru a sinusový z výstupu sinusového tvarovaèe. Za pøepínaèem je zaøazen lineární potenciometr P5 pro ovládání amplitudy signálu a zesilovaè s OZ IO4B s napìovým zesílením asi 3x, který zvìtuje rozkmit výstupního signálu a na ±10 V. Signál z OZ IO4B se vede na výstupní svorky generátoru J4 a J5 pøes rezistor R21, který urèuje výstupní impedanci generátoru asi 680 Ω. Generátor funkcí je napájen ze síového zdroje stabilizovaným symetrickým napìtím ±15 V, které se pøivádí na napájecí svorky J1 a J3. Obì vìtve napájecího napìtí jsou blokovány keramickými kondenzátory C6 a C9, které mají být zapojeny co nejblíe k napájecím vývodùm pøísluných OZ, a elektrolytickými kondenzátory C10 a C11. Pøi koneèném seøizování generátoru kromì nastavení vech trimrù, o kterém ji byla zmínka, té èítaèem kmitoètu zmìøíme rozsah pøeladìní a pøípadnì ho upravíme zmìnou odporù rezistorù R6 a R7. Elektor 7-8/1997
Napájecí zdroj pro mìøení elektronek Zabývá-li se nìkdo vánì stavbou elektronkových zaøízení, napø. pro elektroakustiku, nevyhne se potøebì zjiovat parametry elektronek, aby mohl posoudit jejich stav a párovat je. U mnoha elektronek také nejsou v katalogu dostateènì podrobné údaje potøebné pro návrh navazujících obvodù, take tyto charakteristické vlastnosti je nutné zmìøit. Pro pohodlné a rychlé mìøení a testování elektronek byl proto zhotoven popisovaný napájecí zdroj, jeho schéma je na obr. 8. Zdroj je urèen pøedevím pro práci s nepøímohavenými elektonkami pouívanými v nf zesilovaèích. Na svorkách zhav. poskytuje støídavé havicí napìtí 6,3 a 12,6 V, havicí proud mùe být a 5 A. Na svorkách g2 poskytuje stabilizované napìtí +150 nebo +250 V pro napájení druhých møíek pentod. Na svorce g1 poskytuje stabilizované regulovatelné napìtí 0 a -150 V pro napájení první møíky. Toto napìtí se jemnì ovládá desetiotáèkovým potenciometrem a mìøí se ruèkovým voltmetrem MI2 s rozsahy 30 a 150 V. Na svorkách a, a1 a a2 poskytuje zdroj stabilizované regulovatelné napìtí 0 a +300 V pro napájení anody. Anodový proud mùe být a 150 mA. Svorky a1 a a2 jsou urèeny pro napájení anod dvojitých elektronek a pøipojují se ke svorce a pøes pøepínaè S2, kterým volíme první nebo druhý promìøovaný dílèí systém elektronky. Anodové napìtí se ovládá druhým desetiotáèkovým potenciometrem a mìøí se ruèkovým voltmetrem MI2 s rozsahem 300 V. Anodový proud se mìøí ruèkovým ampérmetrem MI1 s rozsahy 15 a 150 mA. Poslední svorka k, g3 je uzemnìná a je urèena pro pøipojení katody a pøípadnì tøetí møíky
pentody. K této svorce jsou vztaena napìtí na svorkách g2, g1 a a. Doplòkem zdroje je pøípravek s objímkami pro pouívané typy promìøovaných elektronek (napø. heptal, noval, magnoval, americký oktal, L-oktal apod.). Kontakty se stejnými èísly vech objímek jsou navzájem propojeny a jsou vyvedeny na zdíøky umístìné na pøípravku. Pøi mìøení urèité elektronky pak vyhledáme v katalogu zapojení její patice a pøísluné zdíøky pøípravku propojíme laboratorními kablíky s odpovídajícími svorkami (zdíøkami) napájecího zdroje tak, aby správné havicí napìtí bylo pøivedeno na havicí vlákno, anodové napìtí na anodu atd. Takovéto pøipojování elektronky ke zdroji je ponìkud pracné, ale je naprosto univerzální a pøi omezeném poètu typù elektronek do nf zaøízení je pøijatelné. Zapojení napájecího zdroje je co nejjednoduí. Základem zdroje je síový transformátor TR1, který si musíme navinout nebo upravit z nìjakého starího síového transformátoru pøevinutím sekundárních vinutí. Té mùeme vyuít nìkolik meních transformátorù z elektronkových pøijímaèù - jejich síová vinutí spojíme paralelnì a ze sekundárních vinutí odebíráme potøebná napìtí. Velikosti sekundárních napìtí transformátoru nejsou pøíli kritické, je vak nutné jim pøizpùsobit provozní napìtí vyhlazovacích kondenzátorù C1 a C2, odpory a zatiitelnost pøedøadných rezistorù R11 a R7 ve stabilizátorech se Zenerovými diodami a popøípadì hodnoty dalích souèástek. Sekundární napìtí pro usmìròovaè anodového napìtí vak nesmí být pøíli velké, aby nebyly ohroeny stabilizaèní tranzistory T1 a T3. Síové napìtí se pøivádí na primární vinutí TR1 pøes pomalou tavnou pojistku F1 (2 A) a dvoupólový síový spínaè S5.
Konstrukèní elektronika A Radio - 4/2007
39
Obr. 8. Napájecí zdroj pro mìøení elektronek Obì havicí sekundární vinutí 6,3 V/ /5 A a 6,3 V/5 A jsou pøimo vyvedena na havicí svorky zhav. Ze sekundárního vinutí 120 V/50 mA je napájen zdroj napìtí pro první møíku g1. Napìtí usmìrnìné mùstkem DB1 a vyhlazené kondenzátorem C1 je stabilizováno Zenerovou diodou ZD5 na velikost -150 V. Desetiotáèkovým potenciometrem P1 pøipojeným paralelnì k ZD5 se stabilizované napìtí ze ZD5 reguluje v rozmezí 0 a -150 V. Bìec P1 je pøímo vyveden na svorku g1. Zdroj je velmi mìkký a smí být zatìován proudem maximálnì nìkolika mA. Vzhledem k tomu, e první møíka neodebírá ádný proud, je to vyhovující. Napìtí na svorce g1 se mìøí voltmetrem s ruèkovým mìøidlem MI2, které se k této svorce pøipojuje páèkovým pøepínaèem S1 pøepnutým do polohy Ug1. Mìøicí rozsahy voltmetru 30 a 150 V jsou urèovány pøedøadnými rezistory Rp2 a Rp1 a volí se páèkovým pøepínaèem S3. Mìøidlo MI2 je magnetoelektrický mikroampérmetr s rozsahem 100 a 500 µA, odpory rezistorù Rp1 a Rp2 vybereme podle skuteèných parametrù pouitého mìøidla MI2. Ze sekundárního vinutí 260 V/200 mA je napájen zdroj napìtí pro anodu a a druhou møíku g2. Napìtí usmìrnìné mùstkem DB2 a vyhlazené kondenzátorem C2 je stabilizováno sériovì zapojenými Zenerovými diodami ZD1 a ZD3 na velikosti +150, +250 a +300 V. LED D1 indikuje zapnutí zdroje. Napìtí +150 V ze ZD3 je vyvedeno pøes rezistor R10 na svorku g2 (+150 V) pro napájení druhých møíek napìových (nevýkonových) pentod. Napìtí +250 V ze ZD2 je vyvedeno pøes emito-
40
rový sledovaè s tranzistorem T3 na svorku g2 (+250 V) pro napájení druhých møíek výkonových pentod. Pozn. red.: podle názoru redaktora je emitorový sledovaè s T3 nespolehlivý, protoe pøi zkratu svorky g2 (+250 V) na zem (na svorku k, g3) je zkratový proud znaèný a T3 se pravdìpodobnì znièí druhým prùrazem. Lepí by bylo zapojit emitorový sledovaè pro napájení g2 podobnì, jako je v tomto zdroji zapojen emitorový sledovaè s tranzistorem T1 typu N-MOSFET a proudovou pojistkou s T2 ve vìtvi napájející anodu. Napìtí +300 V ze ZD1 je regulováno v rozmezí 0 a +300 V desetiotáèkovým potenciometrem P2 a slouí pro napájení anody. Napìtí z bìce P2 je pøivádìno na svorku a pøes emitorový sledovaè s tranzistorem N-MOSFET T1, který dovoluje svorku a zatíit proudem a 150 mA. Tranzistor T1 musí být dùkladnì chlazen. Zkratový proud ze svorky a na zem je omezován na asi 200 mA proudovou pojistkou s boèníkem R3 a tranzistorem T2. Proti pøepìtí mezi emitorem a øídicí elektrodou bìhem zkratu je T1 chránìn Zenerovou diodou ZD4. Výkonový tranzistor MOSFET je pro regulaci velkého napìtí velmi vhodný, protoe na rozdíl od bipolárních tranzistorù má dostateènì irokou oblast spolehlivého provozu (SOAR = Safe Operating ARea) a i pøi kolektorovém napìtí øádu stovek voltù mùe regulovat proud øádu stovek mA (pokud je dostateènì chlazen). Anodové napìtí se mìøí voltmetrem s ruèkovým mìøidlem MI2, které se k anodové vìtvi pøipojuje páèkovým pøepínaèem S1 pøepnutým do polohy Ua (300 V). Mìøicí rozsah voltmetru
300 V je nastaven pøedøadným rezistorem Rp3, jeho odpor urèíme podle skuteèných parametrù mìøidla MI2. Anodový proud se mìøí ampérmetrem s ruèkovým mìøidlem MI1, které mùe být stejného typu jako mìøidlo MI2. Rozsahy ampérmetru 15 a 150 mA se volí páèkovým pøepínaèem S4 a jsou nastaveny boèníky Rb1a Rb2. Odpor tìchto boèníkù urèíme podle parametrù pouitého mìøidla MI1. Dioda D2 chrání mìøidlo pøi nadmìrném proudu. Napájecí zdroj je vestavìn do ploché kovové skøíòky, která musí být spojena s ochranným vodièem PE síového pøívodu. Vechny ovládací a indikaèní prvky i výstupní svorky jsou umístìny na pøedním panelu. Tato konstrukce je urèena vyspìlým amatérùm, kteøí umìjí pracovat se síovým napìtím a s relativnì vysokým anodovým napìtím. Musí si té vìdìt rady s úpravou hodnot souèástek v závislosti na skuteèných velikostech sekundárních napìtí síového transformátoru, s výkonovým dimenzováním rezistorù a s chlazením tranzistorù. Elektronika Praktyczna 10/2005
Konstrukèní elektronika A Radio - 4/2007
Hledáme autory pro Konstrukèní elektroniku na pøítí roky. Nabídnìte redakci pøíspìvky týkající se stavby zajímavých pøístrojù. Postaèí i kratí èlánky, které nemusí vyplnit celý rozsah èísla. Výkresy i text mohou být od ruky, sami je upravíme do tiskové podoby. Jací budou autoøi, takový bude i èasopis!