w w w. e p . c o m . p l ELEKTRONIKA PRAKTYCZNA •
NA CD KATALOGI MIKROKONTROLERÓW Z PAMIÊCI¥ FLASH
(w tym 7% VAT)
15 zł 50 gr ●
grudzień ● Miêdzynarodowy magazyn elektroników konstruktorów
12/2002
12/2002 • grudzieñ
▲
„Przedłużacz” pilota RC5 Miniprojekt, którego przydatność docenią wszyscy użytkownicy zdalnie sterowanych urządzeń. Str. 87.
▲
Błysk po latach − nowe mikrokontrolery z pamięcią Flash
O spóźnionych, lecz atrakcyj− nych pomysłach Motoroli i Ziloga piszemy na str. 53.
Lampowy ▲ odbiornik bateryjny
▲
Niebanalna, do tego nostal− giczna konstrukcja: zasilane bateryjnie radio z prawdzi− wym detektorem kryształko− wym. Str. 21.
Yampp−3/USB Na str. 46 przedstawiamy nową wersję Yamppa, wyposażoną w interfejs USB.
▲ Programowane echo cyfrowe
Współczesne układy scalone pozwa− lają wyposażyć w mowę praktycznie dowolne urządzenie, czego przykład znajdziecie na str. 33.
▲
Projekt z gatunku nieśmiertelnych między innymi dzięki temu, że jest bardzo uniwersalny. Str. 27.
▲
„Mówiąca” kostka do gry
Bluetooth − bezprzewodowa transmisja danych na nie− wielkie odległości Bluetooth bardzo wolno wkracza pod strzechy, ale już wkrótce pokażemy w jaki sposób można wyposażyć własny system mikroprocesorowy w ten skomplikowany interfejs. Zaczynamy na str. 65 od krótkiego wstępu.
Interfejs graficznych wyświetlaczy LCD ▲ Jak wynikało z listów, na tego typu projekt czekaliście od dłuższego czasu. Na str. 37 przedstawiamy tajniki sterowania wyświetla− czem graficznym, tanim i łatwo dostępnym.
Urządzenie, które może się przydać każdemu użytkownikowi sprzętu przenośne− go wymagającego zasilania bateryjnego. Str. 43.
6
▲
▲ Mikroprocesorowa ładowarka akumulatorów
E3NT − czujniki do systemów detekcji i kontroli położenia obiektów Nowości z oferty firmy Omron przedstawiamy na str. 141.
Elektronika Praktyczna 12/2002
Nr 12 (120) grudzień 2002
Projekty Punch − programator uniwersalny, część 1 ............................. 14 Lampowy odbiornik bateryjny z detektorem kryształkowym .............................................................................. 21 Programowane echo cyfrowe .................................................. 27 „Mówiąca” kostka do gry .......................................................... 33 Interfejs graficznych wyświetlaczy LCD .................................... 37
▲ (at)MEGArewolucja − nowe mikrokontrolery Atmela O rewolucji w ofercie Atmela piszemy na str. 67.
Mikroprocesorowa ładowarka akumulatorów ........................ 43 Yampp−3/USB, część 1 ................................................................ 46
Miniprojekty „Przedłużacz” pilota RC5 ............................................................ 87 Odbiornik radiowy AM ................................................................ 88
Programy AVR−GCC − środowisko programistyczne dla mikrokontrolerów AVR .......................................................... 77
Kurs Programowe dekodowanie sygnałów zdalnego sterowania .................................................................. 95 Język C dla mikrokontrolerów 8051, część 7 ........................... 99
Automatyka E3NT − czujniki do systemów detekcji i kontroli położenia obiektów ..................................................................................... 141 Kody IP w urządzeniach dla automatyki ............................... 144
Podzespoły
H8 Tiny SDK+ − nowy ▲ zestaw ewaluacyjny dla mikrokontrolerów H8/300 Tiny
Błysk po latach − nowe mikrokontrolery z pamięcią Flash ..... 53 (at)MEGArewolucja − nowe mikrokontrolery Atmela ............. 67
Sprzęt
Interesującą propozycję dla fanów mikrokontrolerów firmy Hitachi przedstawiamy na str. 51.
H8 Tiny SDK+ − nowy zestaw ewaluacyjny dla mikrokontrolerów H8/300 Tiny ............................................. 51 Wykrywanie losowych anomalii sygnału za pomocą oscyloskopów cyfrowych, część 1 ............................................ 61 Bluetooth − bezprzewodowa transmisja danych na niewielkie odległości, część 1 ...................................................................... 65 Programator PIKprog+ ................................................................ 84
Projekty Czytelników
Programator PIKprog+ Najnowsze opracowanie firmy Elnec przedstawiamy na str. 84.
PC−clock ..................................................................................... 103
Z kraju i ze świata ........................................................ 127
▲
Biblioteka EP ................................................................. 137 Kramik+Rynek .............................................................. 105 Listy ................................................................................. 111 Ekspresowy Informator Elektroniczny ..................... 123 Wykaz reklamodawców ............................................ 126
Elektronika Praktyczna 12/2002
7
Punch P R O− programator J E K T Yuniwersalny
Punch Programator uniwersalny, część 1 AVT−5092
Dla nas opublikowanie w†EP10/96 opisu programatora AVT-320 by³o z pewnoúci¹ historycznym wydarzeniem. By³ to jeden z pierwszych programatorÛw umoøliwiaj¹cych programowanie mikrokontrolerÛw '51 z†pamiÍci¹ Flash. Teraz przedstawiamy jego godnego nastÍpcÍ programator, ktÛry nazwaliúmy Punch, co w†jÍzyku angielskim oznacza perforator do kart papierowych niegdyú noúnikÛw programÛw i danych dla komputerÛw. Rekomendacje: programator jest podstawowym przyrz¹dem w†pracowni elektronika, a wiÍc ten opis moøe zainteresowaÊ wiÍkszoúÊ naszych CzytelnikÛw.
14
W†artykule przedstawiono projekt uniwersalnego programatora elementÛw pÛ³przewodnikowych dzia³aj¹cego w†oparciu o†skryptowy jÍzyk poleceÒ FEMTO. Programator umoøliwia programowanie elementÛw, ktÛre zawiera jego biblioteka, a†takøe wprowadzenia w³asnych procedur. Obecnie dostÍpne s¹ skrypty dla takich elementÛw jak mikrokontrolery Atmela: AT89C1051/2051/4051, AT89C51/ 52/55, AVR-Ûw AT90S2313, AT90S8515, AT90S8535 i pokrewnych, a†takøe†szeregowych pamiÍci EEPROM z†interfejsem I2C. Kaødy, kto powaønie myúli o†konstruowaniu w³asnych urz¹dzeÒ wykorzystuj¹cych mikroprocesory oraz chcia³by samodzielnie pisaÊ dla nich oprogramowanie, musi przygotowaÊ siÍ do tego przedsiÍwziÍcia. Musi przede wszystkim ìzdobyÊî dane techniczne i†informacje
zwi¹zane z†budow¹ i†funkcjonowaniem mikrokontrolera, ktÛry chce zastosowaÊ. NastÍpnie naleøy postaraÊ siÍ o narzÍdzia programistyczne (kompilatory) oraz programator. Karty katalogowe mikrokontrolerÛw oraz oprogramowanie narzÍdziowe moøna znaleüÊ w†Internecie - chociaøby na stronach producentÛw danego podzespo³u. Programator trzeba niestety kupiÊ, ale moøna go takøe wykonaÊ samemu. Wiele mikrokontrolerÛw moøna programowaÊ po zamontowaniu w†systemie za poúrednictwem interfejsu ISP. Programatory, w ktÛrych wykorzystuje siÍ ten sposÛb programowania, s¹ bardzo proste w†wykonaniu. Kilka z†nich opisaliúmy na ³amach EP. Jeøeli jednak trzeba bÍdzie zaprogramowaÊ element, ktÛry nie ma takiej magistrali, albo w†urz¹dzeniu znajdzie siÍ inny programowalny element, np. pamiÍÊ EPROM, konieczne jest posiadanie standardowego programatora.
Elektronika Praktyczna 12/2002
Punch − programator uniwersalny To w³aúnie zainspirowa³o mnie do opracowania w³asnego programatora.
Dobry programator, czyli jaki? Moim zdaniem dobry programator powinien charakteryzowaÊ siÍ nastÍpuj¹cymi cechami: - niezawodnoúci¹, - duø¹ liczb¹ programowanych typÛw elementÛw, - nisk¹ cen¹, a†takøe porÍcznoúci¹, ³atwoúci¹ obs³ugi, dostÍpnoúci¹ serwisu i†pomocy ze strony producenta oraz estetycznym wygl¹dem. Niestety, niektÛre z†tych wymagaÒ trudno ze sob¹ pogodziÊ. Rozbudowane programatory, bogate w†zaawansowane opcje, s¹ bardzo drogie, a†ze wsparciem producentÛw - szczegÛlnie zagranicznych - rÛønie bywa. Maj¹c to na uwadze, moøe†warto pokusiÊ siÍ o†skonstruowanie w³asnego programatora, ktÛry nie bÍdzie konkurencyjny z†produktami renomowanych firm, bÍdzie jednak prosty, uniwersalny i†w†miarÍ niedrogi?
Opis uk³adu Efektem dwÛch lat prÛb i†nieustaj¹cego dopingu ze strony zespo³u Elektroniki Praktycznej jest programator, ktÛrego schemat pokazano na rys. 1. Jego najwaøniejsze parametry s¹ nastÍpuj¹ce: - napiÍcie programuj¹ce ustawiane programowo w†przedziale od 3†do 13 V, - napiÍcie zasilania programowanego elementu ustawiane programowo w†przedziale od 2 do 7†V, - najkrÛtszy moøliwy czas trwania impulsu potrzebnego do programowania elementu wynosi 100 ns, - zewnÍtrzne napiÍcie zasilania programatora powinno mieÊ wartoúci: +16 VDC lub 12 VAC, - moøliwoúÊ samodzielnego wykonania prostych adapterÛw przeznaczonych dla rÛønego typu obudÛw programowanych elementÛw, - moøliwoúÊ samodzielnego pisania skryptÛw w†jÍzyku poleceÒ FEMTO dla nowych elementÛw (skrypty s¹ ìczystymiî plikami tekstowymi) - ograniczenia w†przystosowaniu programatora do obs³ugi nowych elementÛw†wi¹ø¹ siÍ jedynie z†jego
Elektronika Praktyczna 12/2002
moøliwoúciami technicznymi (patrz wyøej), - wspÛ³praca programatora z†komputerem PC steruj¹cym jego prac¹. Programator s³uøy do programowania elementÛw z†rÛwnoleg³¹, 8-bitow¹ magistral¹ danych lub z†magistral¹ szeregow¹, np. I2C. PojemnoúÊ pamiÍci programowanych elementÛw moøe mieÊ 64 kB lub wiÍcej. Sygna³y wyjúciowe programatora przypisane s¹ na sta³e do wyprowadzeÒ jego zewnÍtrznych gniazd JP1 i†JP2, toteø do programowania konkretnego elementu naleøy przygotowaÊ adapter s³uø¹cy do po³¹czenia wyprowadzeÒ odpowiednich gniazd z†wyprowadzeniami poszczegÛlnych nÛøek elementu. Samodzielne przygotowanie adapterÛw nie jest trudne ani specjalnie kosztowne. Dla omÛwienia budowy urz¹dzenia i†istoty jÍzyka FEMTO naleøy przypomnieÊ schemat w†czasie programowania typowego elementu. Najlepiej zrobiÊ to na stosunkowo prostym przyk³adzie, np. rÛwnoleg³ej pamiÍci EPROM 2764. W procesie programowania jest szereg pÍtli sk³adaj¹cych siÍ z†kilku prostych czynnoúci. Najpierw naleøy podaÊ napiÍcie zasilaj¹ce (np. +5V) na odpowiednie wyprowadzenia EPROM-u. NastÍpnie na wyprowadzenia adresowe podawany jest adres komÛrek w†matrycy pamiÍci, ktÛre bÍd¹ programowane, a†na magistralÍ danych jest przes³any bajt, ktÛry ma byÊ wpisany do komÛrek. NastÍpnie na wyprowadzeniu napiÍcia programuj¹cego powinno pojawiÊ siÍ napiÍcie o†wartoúci np. 12,75 V. Impuls na odpowiednim wejúciu steruj¹cym wymusi otwarcie buforÛw magistrali danych EPROM-u i†przyjÍcie zapisywanej danej. Wreszcie fina³, czyli wygenerowanie impulsu zapisuj¹cego, np. na wejúciu CS EPROM-u, o†czasie trwania 50 µs i†polaryzacji ujemnej, przepisze bajt danych z†magistrali EPROMu do jego komÛrek pamiÍtaj¹cych. Powtarzaj¹c te elementarne czynnoúci odpowiedni¹ liczbÍ razy, moøna zapisaÊ ca³¹ wewnÍtrzn¹ matrycÍ pamiÍtaj¹c¹ elementu. Oczywiúcie, w†rzeczywistoúci wszystko jest trochÍ bardziej skomplikowane. Dane techniczne
elementu okreúlaj¹ parametry poszczegÛlnych przebiegÛw na wyprowadzeniach elementu w†czasie programowania i†zaleønoúci czasowe miÍdzy nimi. Naleøy takøe pamiÍtaÊ o†procedurze sprawdzenia, czy wszystkie dane zosta³y prawid³owo zapisane w†matrycy elementu. Jednak ogÛlna zasada pozostaje taka jak opisana wyøej. Jeøeli programator moøe wytworzyÊ odpowiednie przebiegi elektryczne i†podaÊ je na w³aúciwe nÛøki programowanego elementu, ca³a operacja zakoÒczy siÍ sukcesem. Zadaniem czÍúci sprzÍtowej programatora, o†schemacie z rys. 1, jest w³aúnie generowanie odpowiednich impulsÛw i†przesy³anie ich na odpowiednie wyprowadzenia programowanego elementu. Jednak do sterowania programatorem niezbÍdny jest takøe program, ktÛry nadzoruje dzia³anie czÍúci sprzÍtowej programatora. Oprogramowanie steruj¹ce zainstalowane w†komputerze zajmuje siÍ takøe magazynowaniem i†przesy³aniem danych, ktÛre maj¹ byÊ zapisane w†programowanym elemencie oraz komunikuje siÍ z†uøytkownikiem. OprÛcz czÍúci sprzÍtowej i†programu steruj¹cego jest niezbÍdny jeszcze trzeci element tego systemu, czyli skrypt zapisany w†jÍzyku FEMTO. W†pliku skryptu zawarte s¹ zarÛwno polecenia dla programu steruj¹cego, np.: przeúlij dane do programatora, zainicjuj programowanie, sprawdü poprawnoúÊ programowania, jak i†szczegÛ³owe rozkazy dla czÍúci sprzÍtowej, np. w³¹cz zasilanie, wygeneruj na odpowiednim wyprowadzeniu impuls, ustaw kolejny adres, a†takøe informacje dla uøytkownika w postaci komunikatÛw. Relacje pomiÍdzy tymi trzema czÍúciami sk³adaj¹cymi siÍ na programator moøna przedstawiÊ nastÍpuj¹co: skrypt ^ program steruj¹cy ]^ czÍúÊ sprzÍtowa WspÛ³dzia³anie tych trzech czÍúci systemu pozwala zaprogramowaÊ uk³ad, a†takøe przystosowaÊ programator do obs³ugi nowych typÛw uk³adÛw.
15
Punch − programator uniwersalny
Rys. 1. Schemat elektryczny programatora
16
Elektronika Praktyczna 12/2002
Punch − programator uniwersalny Schemat przedstawiony na rys. 1 sprawia byÊ moøe wraøenie skomplikowanego, lecz w†istocie za pomoc¹ prostych uk³adÛw, jakimi s¹ rejestry zatrzaskowe czy wzmacniacze operacyjne - realizuje podstawowe zadania czÍúci sprzÍtowej: podawanie na programowany element w³aúciwych kombinacji stanÛw logicznych, generacjÍ odpowiednich napiÍÊ (programuj¹cego i†zasilania), a†takøe komunikacjÍ z†programem steruj¹cym, ktÛry rezyduje w†PC-cie. Uk³ady U4, U8, U11 sterowane przez mikrokontroler s³uø¹ do podawania sygna³Ûw na element programowany. Uk³ady U1, U2 zwi¹zane s¹ z†pamiÍci¹ RAM U3, w†ktÛrej m.in. przechowywane s¹ dane zapisywane i†odczytywane. Do generowania napiÍÊ: programuj¹cego i†zasilania s³uø¹ uk³ady U7 i†U9, takøe sterowane przez procesor. Komunikacja z†komputerem steruj¹cym jest moøliwa dziÍki interfejsowi RS232 zbudowanemu na U5. Wszystkie sygna³y i†napiÍcia wyprowadzone s¹ na z³¹cza JP1 i†JP2. S¹ to m.in.: 8†linii portu danych I/O0...I/O7, 16 linii adresowych A0...A15, 10 linii portÛw oznaczonych symbolami F1...F10. Zsumowanie liczby potrzebnych linii wskazuje, øe zastosowany procesor AT89C52 nie jest w†stanie ich obs³uøyÊ w³asnymi portami i†musi ìpodeprzeÊ siÍî dodatkowymi uk³adami. Wszystkie s¹ pod³¹czone do wspÛlnej magistrali danych obs³ugiwanej przez port P0 procesora U17. Kaødy z†tych uk³adÛw ma swoje wejúcie aktywuj¹ce po³¹czone z†wyprowadzeniami multipleksera U12. DziÍki temu procesor, wybieraj¹c po kolei kaødy z†uk³adÛw, moøe do niego zapisaÊ dane lub je odczytaÊ, wykorzystuj¹c w†tym celu jeden port P0 i†cztery linie portu P1 steruj¹ce multiplekserem. W†ten sposÛb wystawianych jest 16 bitÛw†adresu potrzebnych np. w†czasie programowania EPROMu. Tak samo realizowany jest dostÍp do wewnÍtrznej pamiÍci RAM programatora (U3), w†ktÛrej przechowywane s¹ dane. NiektÛrych CzytelnikÛw moøe dziwiÊ obecnoúÊ w†uk³adzie drugiego procesora oznaczonego jako U11. Element ten odpowiada za realizacjÍ kilku zadaÒ. Pe³ni m.in.
Elektronika Praktyczna 12/2002
rolÍ bramy wejúcia-wyjúcia magistrali danych, obs³uguje port F10, na ktÛry moøna wys³aÊ precyzyjnie odmierzone impulsy o czasie od 100 ns do 6,5 ms, przechowuje takøe w†swojej wewnÍtrznej pamiÍci EEPROM dane konfiguracyjne programatora. Kaød¹ z†tych funkcji moøna powierzyÊ osobnemu uk³adowi scalonemu, jednak jest korzystniej, gdy wykonuje je tylko jedna kostka zajmuj¹ca duøo mniej miejsca. Zazwyczaj do zaprogramowania wielu typÛw elementÛw potrzebne jest napiÍcie programuj¹ce o†wartoúci znacznie przekraczaj¹cej +5 V. S¹ takøe elementy wymagaj¹ce w†czasie programowania podwyøszenia napiÍcia zasilania np. do +6,5 V. Z†tego powodu wartoúÊ obu tych napiÍÊ moøe byÊ zmieniana i†ustawiana programowo. Do realizacji tego zadania wykorzystano w†programatorze podwÛjny potencjometr elektroniczny typu DS1267 oznaczony na schemacie symbolem U9. Procesor, wysy³aj¹c dane do potencjometru liniami portÛw P1.5...P1.7, moøe wymusiÊ na wyprowadzeniu potencjometru pe³ni¹cego rolÍ suwaka napiÍcie z†przedzia³u 0...5 V. To jednak nie wystarcza, poniewaø do programowania potrzebne s¹ znacznie wyøsze napiÍcia. W†celu obejúcia tego ograniczenia zastosowano wzmacniacze napiÍcia sta³ego. SpÛjrzmy na schemat: napiÍcie z†wyjúcia suwaka W0 U9...12 jest podawane poprzez opornik R15 na wejúcie odwracaj¹ce wzmacniacza U7B. Po wzmocnieniu napiÍcie trafia do wtÛrnika emiterowego T6, natomiast poziom wzmocnienia uk³adu wzmacniacz - tranzystor okreúla pÍtla sprzÍøenia zwrotnego R16, PR1 i†rezystor R15. Z†emitera tranzystora napiÍcie programuj¹ce jest podawane poprzez tranzystor odcinaj¹cy T2 na z³¹cze JP1. Tranzystor odcinaj¹cy jest potrzebny, aby w†czasie wk³adania lub wyjmowania z†podstawki programowanego elementu na jego wyprowadzeniach nie pojawia³y siÍ potencja³y mog¹ce doprowadziÊ do uszkodzenia. W†podobny sposÛb wytwarzane jest napiÍcie zasilaj¹ce. Tym razem elementem odcinaj¹cym nie jest tranzystor, a†przekaünik PK1, do ktÛrego dru-
giej pary stykÛw do³¹czona jest dioda LED D2 sygnalizuj¹ca stan programowania. Uk³ad U5 jest zwyk³ym konwerterem poziomÛw sygna³Ûw RS232 na poziom TTL. Program steruj¹cy komunikuje siÍ z†czÍúci¹ sprzÍtow¹, korzystaj¹c z†portu COM komputera, ktÛrym s¹ przesy³ane rozkazy steruj¹ce i†dane. Po konwersji poziomÛw sygna³y s¹ przekazywane do wyprowadzeÒ RxD i†TxD procesora.
Oprogramowanie procesora steruj¹cego czÍúci¹ sprzÍtow¹ programatora Uk³ad stanowi¹cy czÍúÊ sprzÍtow¹ programatora nie jest jedynie biernym wykonawc¹ poleceÒ programu steruj¹cego, ale posiada pewn¹ autonomiÍ. Przede wszystkim jest wyposaøony w†programowy interpreter jÍzyka FEMTO. Kody poleceÒ dotycz¹ elementarnych dzia³aÒ na wyprowadzeniach, np. zmiany poziomu z†niskiego na wysoki na wyprowadzeniu F1, operacji logicznych, np. porÛwnaÒ stanÛw na wyprowadzeniach I/ O0... I/O7 z†ostatnio programowanym bajtem danych oraz dostÍpem do wewnÍtrznych rejestrÛw niezbÍdnych do pracy czÍúci programuj¹cej, do ktÛrych ma takøe dostÍp program steruj¹cy w†PC-cie. Takim rejestrem jest licznik adresu, ktÛrego 16 bitÛw wyprowadzonych jest na z³¹cze JP2 i†oznaczonych symbolami A0...A15. W†rzeczywistoúci licznik ten sk³ada siÍ z†4†bajtÛw, a†wartoúÊ bitÛw pozosta³ych bajtÛw moøna za pomoc¹ poleceÒ przepisywaÊ np. do wyprowadzeÒ F1...F10. Kolejn¹ grup¹ dostÍpnych z†zewn¹trz rejestrÛw s¹ rejestry wskaünikÛw dostÍpu do buforÛw pamiÍci RAM czÍúci sprzÍtowej. Wskaünik okreúla po prostu adres, do ktÛrego moøna siÍ odwo³aÊ. Jakie to s¹ rejestry (bufory)? Programator dzieli wewnÍtrzn¹ pamiÍÊ RAM (U3) na trzy obszary. W†pierwszym lokowane s¹ kody rozkazÛw jÍzyka FEMTO interpretowane w†czasie pracy programatora. Jak to zosta³o opisane w†czÍúci dotycz¹cej opisu dzia³ania, kody okreúlaj¹ elementarne czynnoúci, jakie czÍúÊ sprzÍtowa musi wykonaÊ np. w†czasie zapisu danych do pamiÍci EPROM lub
17
Punch − programator uniwersalny w†czasie weryfikacji itd. Drugi obszar pamiÍci jest przeznaczony na dane wejúciowe. Jest to po prostu wydzielona czÍúÊ pamiÍci RAM, w†ktÛrej gromadzone s¹ dane przes³ane z†komputera do czÍúci sprzÍtowej i†przeznaczone do zapisu w†programowanym elemencie. W trzecim obszarze zorganizowano bufor danych wyjúciowych. Jest to obszar gromadzenia odczytanych danych z†programowanego elementu przed przes³aniem ich do komputera PC. Kaødy z†tych obszarÛw ma w³asne wskaüniki okreúlaj¹ce jego po³oøenie i†bieø¹cy adres. Obszar kodu posiada jeden wskaünik. Najpierw bÍdzie z†niego korzysta³ program steruj¹cy, ktÛry przeúle z†PCta kody rozkazÛw ze skryptu. NastÍpnie wskaünik zostanie wyzerowany. Gdy rozpocznie siÍ programowanie, kontrolÍ nad nim przejmie procesor czÍúci sprzÍtowej, realizuj¹c kolejne rozkazy pÍtli programowania. Bufory danych maj¹ po dwie pary wskaünikÛw. Jednym zarz¹dza wy³¹cznie program steruj¹cy, natomiast drugim procesor czÍúci sprzÍtowej. DziÍki temu moøliwe jest przesy³anie danych, gdy tocz¹ siÍ jeszcze operacje programowania. Czytelnik tego opisu moøe zapytaÊ: co siÍ stanie, gdy wskaüniki dotr¹ do koÒca obszaru buforÛw? WÛwczas przestawiane s¹ od nowa na pocz¹tek swojego bufora. DziÍki temu moøliwe jest programowanie elementÛw o†pojemnoúci pamiÍci przekraczaj¹cej pojemnoúÊ zastosowanej pamiÍci RAM, czyli 32†k. Po prostu, gdy zapisana zostanie do programowanego elementu czÍúÊ danych z†bufora, na zwolnione miejsce wpisywane s¹ nowe dane przesy³ane z†komputera. Osobom, ktÛre zechc¹ skonstruowaÊ w³asny programator, opieraj¹c siÍ na tym projekcie, naleøy opisaÊ wspÛ³pracÍ procesora g³Ûwnego czÍúci sprzÍtowej z†procesorem U11. Ze wzglÍdu na brak odpowiedniej liczby wyprowadzeÒ U11, komunikacja z nim odbywa siÍ z†wykorzystaniem jedynie 5 linii magistrali danych D0...D4. Czterema m³odszymi przesy³ane s¹ po³Ûwki bajtÛw†danych, natomiast linia D4 (zaleønie od sytuacji) s³uøy do sygnalizacji gotowoúci do transmisji lub okreúla, ktÛra czÍúÊ bajtu jest aktualnie
18
transmitowana. Tak jak w†przypadku innych uk³adÛw, procesor sygnalizuje chÍʆnawi¹zania kontaktu poprzez ustawienie poziomu niskiego na wyprowadzeniu multipleksera U12, do³¹czonego do linii portu PD5 uk³adu U11. Zastosowanie jako uk³adu U11 szybkiego procesora AT90S2313 z†rodziny AVR pozwoli³o na programowe generowanie krÛtkich, ale precyzyjnie odmierzonych impulsÛw, ktÛre mog¹ pojawiaÊ siÍ na wyjúciu F10. Wytworzenie takich impulsÛw przez procesor rodziny '51 jest niemoøliwe, poniewaø jak wynika z†zasady jego pracy, impulsy taktuj¹ce wytwarzane s¹ na podstawie sygna³u generatora kwarcowego przez podzia³ jego czÍstotliwoúci przez 12. Nawet wykonuj¹c nastÍpuj¹ce bezpoúrednio po sobie rozkazy, ustawienia ktÛregoú z portÛw naprzemian: na poziomie wysokim i nastÍpnie niskim, jesteúmy w†stanie wygenerowaÊ impuls o†czasie trwania nie krÛtszym niø 1,09 µs, co wynika z†czÍstotliwoúci w³asnej zastosowanego kwarcu X1. Takie impulsy lub ich wielokrotnoúÊ moøna uzyskaÊ na wyprowadzeniach F1...F9. NajczÍúciej s¹ one wystarczaj¹ce. Tam jednak, gdzie potrzebne s¹ krÛtkie impulsy o†ma³ym b³Ídzie czasu trwania, naleøy uøyÊ wyprowadzenia F10 obs³ugiwanego przez AT90S2313. Zalet¹ procesorÛw AVR jest ich szybkoúÊ dzia³ania wynikaj¹ca z†tego, øe cykl rozkazowy w†wiÍkszoúci przypadkÛw jest rÛwny jednemu okresowi sygna³u generatora kwarcowego. Procesory te s¹ co najmniej 12 razy szybsze od ich odpowiednikÛw z†rodziny '51. Dodatkowo, dziÍki wykorzystaniu skoku poúredniego, adresowanego rejestrem Z, moøna wytworzyÊ dok³adnie impuls o†czasie trwania 100 ns lub jego wielokrotnoúci. Realizacja programowa generatora impulsÛw dodatnich o†krÛtkim czasie trwania jest nastÍpuj¹ca: w†pamiÍci programu procesora AVR wpisana jest tablica zawieraj¹ca np. 256 razy powtÛrzony rozkaz ustawienia portu PD6 (w programatorze obs³uguje wyjúcie F10) na poziom wysoki. Bezpoúrednio za tablic¹ powinien byÊ rozkaz ustawiaj¹cy PD6 na poziom niski. Poniewaø oba roz-
WYKAZ ELEMENTÓW Rezystory R1, R3, R4, R12: 2,2kΩ R2, R5...R10: 10kΩ R11: 1kΩ R13, R14: 20kΩ R15...R18: 100kΩ RPACK1: drabinka rezystorów 10kΩ PR1: potencjometr wieloobrotowy 470kΩ PR2: potencjometr wieloobrotowy 220kΩ Kondensatory C1...C4: 47µF/16V C5, C7, C8, C10, C11, C15, C16, C19, C20: 100nF C6, C9: 470µF/25V C12, C13, C17, C18: 27pF C14: 470µF/16V C21, C22: 100pF Półprzewodniki D1, D2: diody LED: czerwona i zielona φ3 lub 5mm z oprawkami D3: mostek prostowniczy 1A/50V T1: BC557 T2: BC327 T3, T4: BC547 T5, T6: BD135 U1, U2, U4, U8: 74LS574SMD U3: pamięć RAM 62256 SMD U5: MAX232 U6: 7805 U7: TL082 U9: DS1267 U10: MCP101 (lub podobny) U11: AT90S2313 SMD zaprogramo− wany U12: 74LS42SMD U17: AT89C52 zaprogramowany PLCC Różne JP1, JP2: szpilki do złącz zaciskanych na taśmie HEADER20 JP3: CON3 gniazdo zasilania wlutowywane do płytki P1: DB9 gniazdo kątowe żeńskie wlutowywane do płytki PK1: przekaźnik 5V miniaturowy X2: 10MHz X1: 11,059MHz Dwustronna płytka drukowana programatora Jednostronna płytka drukowana „connect board” złącza dla wymiennych adapterów Obudowa typu Z50 Podstawka PLCC44 Podstawka DIP16 Styki precyzyjne φ0,8mm Taśma 20−żyłowa 20cm Wkręty stożkowe M3 Złącza zaciskane na taśmę 20− żyłową Uwaga! Wszystkie oporniki i kondensatory nie−elektrolityczne typu SMD 1206
Elektronika Praktyczna 12/2002
Punch − programator uniwersalny kazy potrzebuj¹ do realizacji tylko jednego okresu oscylatora, organizuj¹c†skok do tablicy bliøej lub dalej jej koÒca, moøna wytworzyÊ impuls bÍd¹cy wielokrotnoúci¹ 100 ns. Adres skoku naleøy wyliczyÊ przed jego realizacj¹ i†zapisaÊ w†rejestrze Z. Sam skok wykonywany jest poleceniem IJMP (indirect jump). W†ten sposÛb stosuj¹c kwarc 10 MHz moøna wy-
Elektronika Praktyczna 12/2002
generowaÊ impulsy o†czasie trwania dok³adnie 0,1 µs...25,6 µs. Oczywiúcie, sposÛb ten zajmuje sporo miejsca w†pamiÍci programu (256 razy powtÛrzony ten sam rozkaz), ale jest prosty i†skuteczny. Do generacji d³uøszych impulsÛw wykorzystywane s¹ programowe pÍtle opÛüniaj¹ce. Ryszard Szymaniak, AVT
[email protected]
Opis jÍzyka i†ewentualnych zmian jest dostÍpny na stronie http://www.aries-rs.com.pl/femto. Wzory p³ytek drukowanych w formacie PDF s¹ dostÍpne w Internecie pod adresem: http://www.ep.com.pl/ ?pdf/grudzien02.htm oraz na p³ycie CD-EP12/2002B w katalogu PCB.
19
Lampowy odbiornik bateryjny z detektorem P R Okryształkowym J E K T Y
Lampowy odbiornik bateryjny z detektorem kryształkowym
Nie tak dawno, bo w†paüdziernikowym s³owie wstÍpnym Redaktora Naczelnego pojawi³a siÍ zapowiedü opublikowania w†EP opisu budowy radia ìkryszta³kowegoî. Proponujemy wykonanie w³aúnie takiego odbiornika na zakres fal d³ugich. Jest tak uroczo archaiczny, øe wielu z†CzytelnikÛw moøe nie uwierzy, øe tak kiedyú by³y budowane odbiorniki komercyjne, instalowane w†salonach co bogatszych rodzin. Rekomendacje: jedyna okazja poznania budowy odbiornika detektorowego z†prawdziwym kryszta³kiem. Czyli coú zarÛwno dla elektronikÛw ìby³ych, ìobecnychî, jak i†ìprzysz³ychî.
W†EP3/2002 pojawi³ siÍ opis lampowego odbiornika reakcyjnego na fale úrednie, opracowany przez konstruktora wspÛ³pracuj¹cego z†Elektorem. Detekcja sygna³Ûw radiowych odbywa³a siÍ tam na lampie elektronowej. W†odbiorniku prezentowanym w†artykule detekcja przebiega inaczej, bowiem detektorem bÍdzie kryszta³. Nasi dziadkowie pamiÍtaj¹ zapewne aparaty kryszta³kowe. W†latach trzydziestych i†czterdziestych ubieg³ego stulecia by³y one bardzo popularne. By³y to bardzo tanie odbiorniki, pracuj¹ce bez baterii zasilane tylko energi¹ z†anteny, ktÛre kaødy mÛg³ samodzielnie skleciÊ.
Zasada dzia³ania Jeden z†najprostszych schematÛw odbiornika kryszta³kowego pokazano na rys. 1. Fale radiowe docieraj¹ce do anteny indukuj¹ w†niej napiÍcie wielkiej czÍstotliwoúci. Oznaczmy je przez Uind. AntenÍ z†odbiornikiem sprzÍga kon-
Elektronika Praktyczna 12/2002
densator antenowy Ca. ObwÛd rezonansowy LC naleøy dostroiÊ do ø¹danej d³ugoúci fali. W†przypadku dostrojenia do ø¹danej stacji, napiÍcie na zaciskach obwodu rezonansowego Ur jest Q razy wiÍksze od napiÍcia indukowanego w†antenie (Ur=Q*Uind). Q jest dobroci¹ obwodu rezonansowego. DobroÊ zaleøy od opornoúci czynnej R†cewki L†i†strat w†dielektryku kondensatora C, reprezentowanych przez tangens k¹ta stratnoúci kondensatora tgδ. CzÍsto pomija siÍ wp³yw tgδ (wtedy Q=ωL/R), ale tym razem zapiszemy úcis³y wzÛr na dobroÊ:
ωL tgδ ⋅ R Q= ωL 1 + R tgδ
21
Lampowy odbiornik bateryjny z detektorem kryształkowym ci regulacji, tzw. perikony, westectory czy sirutory. W†literaturze pojawia³y siÍ opisy samodzielnego wytwarzania detektorÛw z†kryszta³ami w³¹cznie, ale nie by³o to ³atwe. Mia³em moøliwoúÊ to stwierdziÊ. Lepiej uøyÊ kryszta³u utworzonego przez sam¹ naturÍ. Dzia³a o†wiele lepiej, niø wytwarzany samodzielnie. W†latach 50.-70. ubieg³ego wieku odbiorniki detektorowe konstruowali m³odzi radioamatorzy, jednak zamiast kryszta³ka stosowano znacznie czulsze diody germanowe. W†miejscu odbioru istnieje pewne natÍøenie pola E†wytwarzanego przez radiostacjÍ: Rys. 1. Najprostszy odbiornik detektorowy
E=
222 P r
„Kryształek” to półprzewod− nikowy element detekcyjny wykonany z kryształów pirytu, galeny, chalkopirytu lub cynkitu i igły, za pomocą której kryształ jest „nakłuwany”. Został on wynaleziony w 1905 roku przez Karla Brauna. W latach świetności odbiorników kryształkowych w sprzedaży były dostępne kompletne detektory składające się z obudowane− go kryształu ze specjalną igłą przymocowaną do pokrętła (kilka przykłado− wych kryształków fabrycz− nych pokazano na fotografiach).
Detektor prostuje napiÍcie E†w†[mV/m] w.cz. z†obwodu rezonansowego, P - moc nadajnika w†[kW] przez co s³uchawkÍ zasila pr¹d r - odleg³oúÊ od nadajnika w†[km] o†wartoúci zmieniaj¹cej siÍ w†takt WielkoúÊ Uind w†antenie jest iloczynem E†i†wysokoúci skuteczsygna³u moduluj¹cego noún¹. Pozosta³oúci pr¹du w.cz. zwiera do nej anteny. Zwyk³a antena prÍtowa (o ile jej d³ugoúÊ jest mniejsza masy kondensator Cd. S³uchawka (impedancja jej wynosi³a oko³o od 1/8λ) ma wysokoúÊ skuteczn¹ 2...4†kΩ) obci¹øa silnie obwÛd LC, rÛwn¹ po³owie d³ugoúci. W†przyprzez co dobroÊ spada (i†w†zwi¹zpadku anteny ferrytowej jest nie- h=0,032 m. NapiÍcie indukowane ku z†tym selektywnoúÊ odbiorniw†antenie ma wartoúÊ Uind=1 mV. co trudniej: Ze wzglÍdÛw konstrukcyjnych ka). Dlatego detektor w³¹cza³o siÍ 0,0628 ⋅ S ⋅ z h≈ nie uzyskamy dobroci cewki lepczÍsto przez odczep. To z†kolei λ szej od ok. 150. Tangens k¹ta wi¹za³o siÍ z†obniøeniem napiÍcia h - wysokoúÊ skuteczna w†m stratnoúci kondensatora powietdostarczanego na detektor. Po³oS - przekrÛj poprzeczny rdzenia rznego wynosi 1,5*10-4, mikowego øenie odczepu by³o nieraz reguw†[cm2]. 1,5*10-2. St¹d dobroÊ pocz¹tkowa lowane, aby umoøliwiÊ uzyskanie optymalnego natÍøenia düwiÍku λ - d³ugoúÊ odbieranej fali w†[m]. obwodu rezonansowego Q=146 dla Za³Ûømy teraz, øe chcemy zbu- kondensatora powietrznego lub 46 lub selektywnoúci. Zreszt¹ selekdowaÊ odbiornik detektorowy we- dla mikowego. tywnoúÊ czÍsto okazywa³a siÍ d³ug rys. 1†znajduj¹cy siÍ w†WarNapiÍcie U r jest Q-krotnie zbyt ma³a (bo przy optimum szawie, odbieraj¹cy pierwszy pro- wiÍksze od Uind, st¹d: Ur=146mV g³oúnoúci dobroÊ spada do 0,5 gram Polskiego Radia (f=225 kHz, lub 46 mV. Ale przy w³aúciwie dobroci obwodu nieobci¹øonego) λ=1333 m). Program ten nadawa- dobranym obci¹øeniu (s³uchawka i†w†szereg z†anten¹ w³¹cza³o siÍ o†duøej impedancji) i†tak dodatkowy obwÛd LC (tzw. Odbiorniki kryształkowe są bardzo proste bÍdzie jeszcze o†po³owÍ eliminator), ktÛrego zadaw wykonaniu, nie wymagają zasilania, ale mniejsze (dobroÊ pod obniem by³o usuniÍcie ìprzemają małą czułość i selektywność. Odbiornik ci¹øeniem 73 lub 23). bijaniaî silnych stacji, praWymaga siÍ dla w³aúcuj¹cych na zbliøonej d³u- taki składał się z długiej, zewnętrznej anteny, cewki, zmiennego (strojeniowego) kondensato− ciwej pracy detektora, goúci fali. ra, detektora w postaci kryształu blendy aby napiÍcie w.cz. na A†sam detektor? Najcynkowej (stąd ich nazwa) i czułych detektorze osi¹ga³o oko³o czÍúciej by³ to kryszta³ gasłuchawek. 600...700 mV. Nawet leny (PbS), cynkitu (ZnS), z†anten¹ prÍtow¹ przy³¹pirytu (FeS 2) czy chalkopirytu (CuFeS2) umieszczony w†spe- ny jest z†Solca Kujawskiego z†na- czon¹ do naszego odbiornika mocjalnej oprawce. Do powierzchni dajnika o†mocy P=1000 kW. Od- øe to byÊ trudne do osi¹gniÍcia, kryszta³u dotyka³a srebrna ig³a, leg³oúÊ od nadajnika wynosi 210 a†to z†racji niekorzystnego stosunktÛrej po³oøenie regulowa³o siÍ km. NatÍøenie pola w†miejscu ku sygna³/szum w†miejscu odbiona maksimum czu³oúci detektora. odbioru wynosi E=33 mV/m. Ob- ru. Dlatego widzimy, øe korzysOprÛcz takich detektorÛw znane wÛd rezonansowy sk³ada siÍ z†220 tanie z†odbiornika detektorowego by³y detektory rtÍciowe i†wykozwojÛw na prÍcie ferrytowym φ=1 wykonanego wed³ug schematu ponane fabrycznie, bez koniecznoúcm (S=3,14 cm2). Wobec tego kazanego na rys. 1†w†odleg³oúci
22
Elektronika Praktyczna 12/2002
Lampowy odbiornik bateryjny z detektorem kryształkowym
Rys. 2. Schemat elektryczny odbiornika kryształkowego
wiÍkszej od kilkudziesiÍciu km jest wskazane, aby kaødy oblina detektor. SprawnoúÊ detekcji od nadajnika jest niemoøliwe. Syczy³, na jakie natÍøenie pola n i e p r z e k r a c z a z a z w y c z a j tuacjÍ odmieni zastosowanie doi†napiÍcie na obwodzie LC moøe 30...40%. Tym samym amplitudatkowego wzmacniacza w.cz. liczyÊ w†miejscu odbioru (wskada uøytecznego napiÍcia m.cz. przed detektorem, co zrealizowano zane jest, aby na obwodzie rena potencjometrze moøe nie w†odbiorniku radiowym opisanym zonansowym powstawa³o napiÍprzekroczyÊ 100 mV. w†dalszej czÍúci artyku³u. Jego cie chociaø 20...30 mV, inaczej W†tym miejscu ma³a dygresja: schemat elektryczny pokazano na si³a g³osu bÍdzie juø naprawdÍ projektuj¹c ten uk³ad, przeliczyrys. 2. ³em siÍ, przyjmuj¹c zbyt DziÍki zastosowaniu teoptymistyczne wartoúci Odkrycie Hertza go wzmacniacza uzyskamy sygna³u za detektorem. Teorię pola elektromagnetycznego zweryfiko− kilkunastokrotne wzmocPocz¹tkowo uk³ad planował doświadczalnie Heinrich Hertz w 1888 nienie sygna³u w.cz. Powa³em jako 2-lampowy. roku. Źródłem drgań elektrycznych był nadto, obwÛd rezonansoPo uruchomieniu okaza³o zbudowany przez niego oscylator, a odbiorni− wy w†zasadzie nie jest siÍ jednak, øe si³a g³osu kiem − rezonator (też jego konstrukcji). obci¹øony, przez co dobjest niewystarczaj¹ca. To Ustawiając rezonator w różnych położeniach, roÊ pod obci¹øeniem jest zmusi³o mnie do dodania Hertz zmierzył długość fal elektromagnetycz− rÛwna dobroci nieobci¹øowzmacniacza napiÍciowenych (wynosiła ona od 10 m do 60 cm). nego obwodu rezonansogo m.cz. na miniaturowej Wyznaczył także ich prędkość. Okazało się, wego. lampie DF669 (Ku=20). Zaże jest ona bliska tej, którą teoretycznie miast niej moøna zastosoJako lampa wzmacniaobliczył Maxwell, i wynosi 300000 km/s. waÊ o†wiele ³atwiej docza pracuje 1S4T w†uk³astÍpn¹ 1T4T z†coko³em dzie triodowym. Jest to heptalowym. NadawaÊ siÍ tu bÍbardzo nieznaczna). RegulacjÍ lampa koÒcowa, jednak jej uøycie dzie w†zasadzie kaøda trioda lub wielkoúci tego dodatniego sprzÍw†tym punkcie uk³adu jest uzapentoda bateryjna (napiÍcie øarzeøenia zwrotnego (reakcji) uzyssadnione duøym nachyleniem chania 1,4V) z†nachyleniem charakkuje siÍ przez przesuwanie cewrakterystyki, ktÛre wynosi oko³o ki L r na prÍcie anteny ferryto1,4 mA/V. Wzmocnienie wzmacwej. Detekcja siatkowa na pierniacza w.cz. wynosi oko³o 14 V/ wszej lampie nie moøe nast¹piÊ, V. WidaÊ z†powyøszych danych, poniewaø siatka steruj¹ca znajøe poprawn¹ pracÍ uk³adu powinduje siÍ na potencjale wstÍpnym niúmy uzyskaÊ przy natÍøeniu -0,4†V†i†w†tych warunkach pr¹d pola rzÍdu 17 mV/m. siatki nie moøe p³yn¹Ê. W†razie W†obwodzie anodowym zastosowano cewkÍ reakcyjn¹ L r . potrzeby moøna do³¹czyÊ antenÍ CzÍúÊ wzmocnionego przez lamzewnÍtrzn¹, aby nieco zwiÍkszyÊ pÍ napiÍcia w.cz. kierowana jest czu³oúÊ. PrÛby w†mieúcie da³y z†powrotem do obwodu LC, jednak z³y wynik - si³a g³osu dziÍki temu jest on odt³umiany. cokolwiek siÍ zwiÍkszy³a, ale RÛwnowaøne jest to zwiÍkszeniu zak³Ûcenia rÛwnieø. jego dobroci, przez co czu³oúÊ Wzmocniony sygna³ w.cz. doRys. 3. Widok okna programu jeszcze siÍ zwiÍksza. Mimo to, ciera przez kondensator 470 pF wspomagającego obliczenia
Elektronika Praktyczna 12/2002
23
Lampowy odbiornik bateryjny z detektorem kryształkowym
Fot. 4. Budowa detektora kryształkowego zastosowanego w odbiorniku
terystyki 0,7...1,4 mA/V. Moøe siÍ jednak okazaÊ, øe naleøy nieco zmieniÊ ujemne napiÍcie siatki tej lampy i†opornik anodowy. W†takich wypadkach chÍtnie s³uøÍ rad¹. Wzmacniacz koÒcowy pracuje z†lamp¹ 1S4T w†klasie A. Potencja³ wstÍpny siatki tej lampy wynosi -4,8 V. Z†racji tego, øe obecnie s³uchawki posiadaj¹ opornoúÊ 32 Ω, konieczne jest uøycie transformatora dopasowuj¹cego w†obwodzie anodowym tej lampy (s³uchawki po³¹czone s¹ szeregowo, st¹d ich wypadkowa impedancja wynosi 64 Ω). Potrzebne ujemne potencja³y siatek uzyskano z†dzielnika oporowego. Zamiast lamp 1S4T moøna zastosowaÊ lampy 3S4T. Jedyn¹ zmian¹, jak¹ naleøy zrobiÊ, jest po³¹czenie ze sob¹ obu po³Ûwek grzejnika. PobÛr pr¹du z†baterii anodowej wynosi oko³o 4,5 mA, z†baterii øarzenia oko³o 140 mA.
na p³ycie CD-EP12/2002B. Zrzut okna tego programu pokazano na rys. 3. Wszystkie cewki zosta³y nawiniÍte jednowarstwowo na prÍcie anteny ferrytowej. Cewka L†posiada 220 zwojÛw drutu w†emalii 0,15 mm. Cewka antenowa ma 55 zwojÛw, a cewka reakcyjna 100 zwojÛw z tego samego drutu. Cewka reakcyjna musi siÍ przesuwaÊ po rdzeniu. RdzeÒ powinien byÊ d³ugi (w modelu aø 20 cm). Transformator g³oúnikowy powinien posiadaÊ 3200 zwojÛw drutem 0,05 mm i†400 zwojÛw drutem 0,1 mm. Moøe byÊ nawiniÍty np. na rdzeniu kubkowym A L =63. NadawaÊ siÍ tu bÍdzie taki transformator, ktÛrego przek³adnia wynosi 1:6...1:10, przy czym na uzwojeniu pierwotnym powinno siÍ znajdowaÊ 2000...3500 zwojÛw. PrzekrÛj rdzenia nie musi byÊ duøy, wystarczy np. 1...4 cm 2 . Wszak audycje nadawane na falach d³ugich nie odznaczaj¹ siÍ wysok¹ jakoúci¹. Wystarczy, øe pasmo przenoszenia zawieraÊ siÍ bÍdzie w†przedziale 100...6000 Hz.
Sk¹d wzi¹Ê kryszta³ek?
Historia lamp elektronowych W 1884 roku Thomas Alva Edison zaobserwował przepływ prądu między żarnikiem lampy (żarówki) a dodatkową elektrodą wtopioną w bańkę lampy. Właśnie to zjawisko (nazwane zjawiskiem Edisona) zostało wykorzysta− ne w lampach elektrono− wych. W kilka lat później, tj. w 1889 roku Julius Elster i Hans Friedrich Geitel stwierdzili, że w bańce próżniowej − o jednej elektrodzie żarzonej a drugiej zimnej − prąd płynie tylko w jedną stronę. Za datę wynalezienia lampy elektronowej przyjmuje się rok 1904, w którym John Ambrose Fleming skonstruo− wał dwuelektrodową lampę, nazywaną wtedy zaworem elektronowym, a obecnie diodą. W 1906 roku Lee de Forest zbudował triodę. Doskonalsze lampy wieloelektrodowe zostały zbudowane w 1927 (tetroda), 1930 (pentoda) i 1933 (pentagrid nazwany później heptodą).
ParÍ s³Ûw o†montaøu uk³adu
PoúwiÍÊmy chwilÍ detektorowi. Przede wszystkim postarajmy siÍ o†ma³y kryszta³ek pirytu, galeny, chalkopirytu lub cynkitu. Kryszta³y takie moøna nabyÊ na gie³dach minera³Ûw. Warto moøe jeszcze zaznaczyÊ, øe niektÛre z†tych kryszta³Ûw wystÍpuj¹ w†Polsce. W†uk³adzie modelowym pracuje piryt. Kryszta³ moøe mieÊ naprawdÍ ma³e wymiary, np. 3†x†3†x†3†mm, ale na nieco wiÍkszym krysztale bÍdzie ³atwiej znaleüÊ najczulszy punkt detekcji. W†rozwi¹zaniu prototypowym kryszta³ naklejono
Kondensator C†powinien byÊ powietrzny o†pojemnoúci ca³kowitej 450...500 pF. Podejrzewam jednak, øe wiÍkszoúÊ CzytelnikÛw bÍdzie dysponowaÊ kondensatorami z†odbiornikÛw tranzystorowych z†dielektrykiem np. mikowym. To niestety pogorszy dobroÊ obwodu rezonansowego. Dlatego jeszcze raz przypominam o†przeprowadzeniu obliczeÒ! Aby u³atwiÊ obliczenia, przygotowa³em prosty program dla Windows, ktÛry zosta³ zamieszczony
Rys. 5. Wyprowadzenia lamp zastosowanych w odbiorniku
24
na kawa³ek szklanej p³ytki. P³ytka stabilnie trzyma siÍ dziÍki blaszkom, ktÛre przytrzymuj¹ j¹, podobnie jak szkie³ko podstawowe w†mikroskopie. Do kryszta³u dotyka kawa³ek srebrzanki i†drutu cynowanego (fot. 4). Druty te moøna dowolnie dotykaÊ do kryszta³u. Warto wy-
Elektronika Praktyczna 12/2002
Lampowy odbiornik bateryjny z detektorem kryształkowym
Radio w Polsce Początki radiofonii w Polsce przypadają na 1922 rok. Wtedy to Stefan Manczarski skonstruował pierwszy polski odbiornik radiowy oraz nowego typu anteny radiowe. W lutym 1925 roku zainstalowano pierwszą stację nadawczą (500 W) Polskiego Towarzystwa Radiotechnicznego w Warszawie przy ul. Narbutta 29 na Mokotowie.
prÛbowaÊ rÛøne druty, np. miedziany czy stalowy zamiast cynowanego. W†rozwi¹zaniu modelowym druty przylutowane s¹ do wtyczek chinch, a†dok³adn¹ regulacjÍ detektora moøna uzyskaÊ przez delikatne obracanie ich w†gniazdkach.
Montaø i†uruchomienie Odbiornik moøna zmontowaÊ na podstawie z†blachy ocynkowanej o†wymiarach 250 x 150 x 50 mm. Podczas montaøu pomocny bÍdzie rys. 5, na ktÛrym pokazano rozmieszczenie koÒcÛwek lamp zastosowanych w†radioodbiorniku. Uruchomienie najlepiej rozpocz¹Ê przy pod³¹czonej zamiast kryszta³ka diodzie germanowej (jeúli ktoú nie chce budowaÊ detektora na bazie kryszta³u, moøe zostawiÊ diodÍ zamiast kryszta³ka, ale to juø nie to samo...) i zdjÍtej z prÍta ferrytowego cewce reakcyjnej. Potencjometr si³y g³osu ustawiamy na maksimum. KrÍc¹c kondensatorem C, prÛbujemy ìz³apaÊî stacjÍ. Jeúli siÍ to nie udaje, zak³adamy cewkÍ
Elektronika Praktyczna 12/2002
reakcyjn¹. W†pewnym jej po³oøeniu ze s³uchawek powinien byÊ s³yszalny gwizd lub szum. Jeúli go nie ma, naleøy zamieniÊ koÒcÛwki cewki L r miejscami. Ustawiamy cewkÍ tak, by gwizd znikn¹³, ale w†okolicy jego powstawania. Teraz prÛba odebrania stacji powinna odbyÊ siÍ pomyúlnie. Reguluj¹c po³oøenie kondensatora C i†cewki reakcyjnej L r, ustawiamy odbiornik na maksimum g³oúnoúci i†czystoúci düwiÍku. Moøemy teraz od³¹czyÊ diodÍ (nie rozstrajamy obwodu LC!) i†w†jej miejsce w³¹czyÊ kryszta³ek. Dotykaj¹c drutami kryszta³ka, prÛbujemy uzyskaÊ maksymaln¹ si³Í g³osu. Zabieg ten wymaga niestety duøo cierpliwoúci. Nie pozostaje mi juø nic innego jak øyczyÊ udanego odbioru. Aleksander Zawada
[email protected] W†artkule wykorzystano materia³y pochodz¹ce ze strony Maurycego Bryxa (http://www.republika.pl/jannaj/), poúwiÍconej historii radia w†Polsce.
WYKAZ ELEMENTÓW Rezystory R1, R3: 1MΩ/0,6W R2: 20kΩ/0,6W R4: 56kΩ/0,6W R5: 9,1MΩ/0,6W R6: 1kΩ/0,6W R7: 100Ω/0,6W P1: 1MΩ potencjometr logarytmiczny Kondensatory C: kondensator strojeniowy wg opisu C1: 43pF/63V ceramiczny C2: 68pF/63V ceramiczny C3: 130pF/63V ceramiczny C4: 470pF/63V ceramiczny C5, C6, C8: 1nF/63V C7: 3,3nF C9: 10µF/63V−elektrolityczny Lampy V1, V3: 1S4T V2: DF669 Różne D: detektor wg opisu w tekście W: włącznik dwusekcyjny Bat1: bateria anodowa o napięciu 45V, złożona z 5 baterii 6F22 Bat2: bateria żarzenia 1,5V, np. R6, R14, R20 może też być akumulator NiCd Tr: transformator wg opisu w tekście Sł: słuchawki 32 2 podstawki pod lampy typu heptal pręt ferrytowy, cewki Lr, La, L wykonane wg opisu w tekście 2 gniazdka chinch 1 gniazdo „jack”
25
Programowane P R O echo J E cyfrowe K T Y
Programowane echo cyfrowe AVT−5090
NiektÛrzy z†CzytelnikÛw EP zapewne pamiÍtaj¹, jakim wydarzeniem by³o opublikowanie w†EP w†1994 roku opisu uk³adu wytwarzaj¹cego echo w†sposÛb cyfrowy - cyfrowego echa. DziÍki postÍpowi, jaki nast¹pi³ w†technologii uk³adÛw cyfrowych, obecnie moøna budowaÊ takie uk³ady ³atwiej i†o†lepszych parametrach. Rekomendacje: uk³ad polecamy mi³oúnikom efektÛw audio, a†takøe uøytkownikom taÒszych zestawÛw kina domowego, w†ktÛrych prezentowany uk³ad moøe emulowaÊ efekt surround.
Jeszcze nie tak dawno wykonanie uk³adu opÛüniaj¹cego do generowania efektu echa by³o w†warunkach amatorskich bardzo trudne. Takie urz¹dzenia przybiera³y ogromne rozmiary, a†uzyskiwane czasy opÛünieÒ by³y niewielkie. Uk³ad scalony wykorzystany w†prezentowanym uk³adzie cyfrowym echa (T62M0001A) jest produkowany przez tajwaÒsk¹ firmÍ TMtech (Taiwan Memory Technology, Inc.), specjalizuj¹c¹ siÍ w†produkcji rÛønego rodzaju pamiÍci. DziÍki tej specjalizacji, w†uk³adzie oprÛcz toru audio z†przetwornikami A/C i†C/A oraz zestawu filtrÛw, zintegrowano takøe pamiÍÊ SRAM o†pojemnoúci 64†kb, ktÛra spe³nia rolÍ cyfrowej linii opÛüniaj¹cej.
Rys. 1. Przebiegi charakterystyczne dla wprowadzania danych do układu T62M0001A
Elektronika Praktyczna 12/2002
Chociaø uk³ad T62M0001A wykonano w†technologii CMOS, to wbudowany w†niego tor audio spe³nia wymagania stawiane taÒszym urz¹dzeniom profesjonalnym: zniekszta³cenia przy czÍstotliwoúci prÛbkowania 666†kHz nie przekraczaj¹ 0,17%, a†poziom szumÛw na wyjúciu nie przekracza -90†dBV. W†uk³adzie echa zastosowano uk³ad scalony w†obudowie DIP24, dla ktÛrej opis funkcji wyprowadzeÒ zamieszczono w†tab. 1. Czas opÛünienia wprowadzany przez uk³ad T62M0001A jest ustawiany cyfrowo. Moøna tego dokonaÊ na dwa sposoby: - za pomoc¹ wpisu rÛwnoleg³ego, - za pomoc¹ 3-liniowego interfejsu szeregowego. WybÛr sposobu sterowania odbywa siÍ poprzez ustawienie odpowiedniego poziomu na wyprowadzeniu 9. uk³adu T62M0001A (EASY/u-COM). Sterowanie rÛwnoleg³e jest wybierane przez podanie wysokiego poziomu na wejúcie EASY/u-COM. Na wejúciach danych D1...D4 ustawiamy odpowiedni¹ kombinacjÍ stanÛw logicznych w†celu uzyskania zadanego opÛünienia sygna³u akustycznego (efektu echa). Moøemy tego dokonaÊ pod³¹czaj¹c uk³ad do mikrokontrolera lub stosuj¹c
27
Programowane echo cyfrowe
Tab. 1. Funkcje wyprowadzeń układu T62M0001A Symbol
I/O
Opis
Vdd XIN XOUT D1/REQ D2/SCK D3/DATA D4/IDSW TEST EASY/ u−COM
P I O I I I I I I
SLEEP
I
D−GND A−GND LPF2−OUT LPF2−IN OP2 OUT OP2 IN CC2 CC1 REF OP1−IN OP2−OUT LPF1 OUT LPF1 IN Vcc
G G O I O I − − −
Zasilanie części cyfrowej Wejście oscylatora Wyjście oscylatora Wejście danych D1/dla interfejsu u−COM wejście Wejście danych D2/dla interfejsu u−COM wejście Wejście danych D3/dla interfejsu u−COM wejście Wejście danych D4/dla interfejsu u−COM wejście Wejście testowe L= normalna praca Wejście wyboru sposobu sterowania układem H = sterowanie równoległe L = sterowanie u−COM szeregowe Funkcja wyciszania układu L = normalna praca H = uśpienie układu Masa cyfrowa Masa analogowa Wyjście filtru dolnoprzepustowego Wejście filtru dolnoprzepustowego Wyjście wzmacniacza Wejście wzmacniacza Wyprowadzenie kontrolne Wyprowadzenie kontrolne Napięcie odniesienia = 1/2Vcc Wejście wzmacniacza Wyjście wzmacniacza Wejście filtru dolnoprzepustowego Wejście filtru dolnoprzepustowego Zasilanie części analogowej
O I P
szesnastopozycyjny prze³¹cznik kodu BCD. W†tab. 2 zestawiono stany na wejúciach steruj¹cych oraz odpowiadaj¹ce im czasy opÛünieÒ sygna³u akustycznego. Tabela ta ma rÛwnieø zastosowanie przy sterowaniu szeregowym. Sterowanie szeregowe jest moøliwe przy niskim poziomie podanym na wejúciu EASY/u-COM. Jest ono stosowane najczÍúciej podczas wspÛ³pracy uk³adu z†mikrokontrolerami. SposÛb wprowadzania danych do uk³adu T62M0001A zosta³ pokazany na rys. 1. Wpisywana ramka sk³ada siÍ z†10 bitÛw. Pierwszy bit w³¹cza/
Numer
żądania nadawania zegarowe danych kontrolne
Rys. 3. Ilustracja działania modułu wyciszania po wyjściu ze stanu sleep
10
11 12 13 14 15 16 17 18 19 20 21 22 23 24
wy³¹cza funkcjÍ SLEEP (uúpienia uk³adu), kolejne cztery nios¹ informacjÍ o†czasie opÛünienia (zgodnie z†tab. 1), szÛsty bit w³¹cza/wy³¹cza funkcjÍ wyciszania MUTE (p³ynne wyciszenie sygna³u audio na wyjúciu). Ostatnie cztery bity odpowiadaj¹ za identyfikacjÍ uk³adu: ID1=0, ID3=0, ID2=1, ID4 - stan taki sam jak na wejúciu IDSW (wyprowadzenie 7.). Wyciszanie sygna³u wyjúciowego w†trybie pracy rÛwnoleg³ej nastÍpuje przy kaødej zmianie czasu opÛünienia lub po wyjúciu z†funkcji SLEEP, a†takøe zaraz po w³¹czeniu zasilania uk³adu. Przy sterowaniu szeregowym funkcja wy-
Rys. 2 Ilustracja działania modułu wyciszania po zmianie czasu opóźnienia
28
1 2 3 4 5 6 7 8 9
Rys. 4. Ilustracja działania modułu wyciszania po włączeniu zasilania
ciszania jest w³¹czana szÛstym bitem: poziom wysoki - w³¹czone wyciszanie, poziom niski - w³¹czone wyciszanie automatyczne. Na rys. 2, 3 i†4 przedstawiono przebiegi ilustruj¹ce dzia³anie funkcji automatycznego wyciszania (odpowiednio): po zmianie czasu opÛünienia, po wyjúciu z†funkcji SLEEP, po w³¹czeniu zasilania. Po w³¹czeniu funkcji SLEEP moc pobierana przez uk³ad radykalnie siÍ zmniejsza, co jest uzyskiwane m.in. poprzez zatrzymanie wewnÍtrznego zegara i†wy³¹czenie zasilania wbudowanej pamiÍci RAM. Zerowanie uk³adu nastÍpuje automatycznie po w³¹czeniu zasilania i†trwa przez oko³o 120 ms. Czas opÛünienia po zerowaniu wynosi 147,5 ms.
Opis uk³adu Schemat elektryczny uk³adu cyfrowego echa pokazano na rys. 5. Moøna w nim wyrÛøniÊ nastÍpuj¹ce bloki funkcjonalne: - tor audio dla sygna³u echa (elementy wokÛ³ T62M0001A), - uk³ad sterowania sk³adaj¹cy siÍ z†mikrokontrolera ST62T20C obs³uguj¹cego dwa przyciski oraz wyúwietlacza LCD, - zasilacz stabilizowany zapewniaj¹cy na wyjúciu napiÍcie +5†V. Uk³ad T62M0001A w³¹czono w†typowej konfiguracji ze sterowaniem rÛwnoleg³ym. DziÍki zastosowaniu sterowania rÛwnoleg³ego, uk³ad T62M0001A moøe pracowaÊ autonomicznie, bez koniecznoúci stosowania dodatkowego bloku sterowania. Ma to podstawowe znaczenie przy jego uruchamianiu i†testowaniu.
Elektronika Praktyczna 12/2002
Programowane echo cyfrowe Program dla mikrokontrolera ST62 zosta³ napisany za pomoc¹ znanego Czytelnikom pakietu programowego ST6 Realizer. Plik ürÛd³owy programu znajduje siÍ na p³ycie do³¹czonej do bieø¹cego numeru EPo/oL. Jest takøe dostÍpne na naszej stronie WWW. Obs³uga uk³adu jest dosyÊ ³atwa: po w³¹czeniu zasilania na wyúwietlaczu LCD pojawia siÍ napis ìECHO 0î. Porty PB4...PB7 (steruj¹ce prac¹ T62M0001A) s¹ ustawione na poziomie niskim, w†zwi¹zku z†czym opÛünienie sygna³u akustycznego wynosi 12,3 ms. Kaøde naciúniÍcie przyciskÛw gÛra/dÛ³ powoduje zmianÍ stanÛw na wyjúciach steruj¹cych procesora. Zmiana na wyúwietlaczu LCD napisu w†zakresie od 0 do 8 nastÍpuje po co drugim naciúniÍciu przycisku. Sygna³ akustyczny zostaje opÛüniony o†wartoúÊ czasu zaleøn¹ od ustawienia stanÛw logicznych na wejúciach steruj¹cych uk³adu T62M0001A (patrz tab. 2). Jak wiemy, samo opÛünienie sygna³u akustycznego na wyjúciu uk³adu echa nie daje øadnych efektÛw, dopÛki nie jest on zmiksowany z†sygna³em wejúciowym. Aby efekt echa by³ odczuwalny podczas ods³uchu, wejúcie uk³adu zosta³o po³¹czone z†wyjúciem poprzez prosty pasywny sumator sygna³Ûw (sk³ada siÍ m.in. z†elementÛw: R4, R5, R8, R9 i†C9). Tab. 2. Czasy opóźnień sygnału analogowego w zależności od stanów logicznych na wejściach D1...D4 D4
Rys. 5. Schemat elektryczny układu echa
Elektronika Praktyczna 12/2002
D3
D2 D1
fs
Td [ms]
L L L L Fck/3 12,3 L L L H Fck/3 24,6 L L H L Fck/3 36,9 L L H H Fck/3 49,2 L H L L Fck/3 61,4 L H L H Fck/3 73,7 L H H L Fck/3 86,0 L H H H Fck/3 98,3 H L L L Fck/6 110,6 H L L H Fck/6 122,9 H L H L Fck/6 135,2 H L H H Fck/6 147,5 H H L L Fck/6 159,7 H H L H Fck/6 172,0 H H H L Fck/6 184,3 H H H H Fck/6 196,6 fs − częstotliwość próbkowania, Fck − częstotliwość wzorcowa − typowo 2 MHz, Td − czas opóźnienia (w milisekundach)
29
Programowane echo cyfrowe WYKAZ ELEMENTÓW
Rys. 6. Rozmieszczenie elementów na płytkach drukowanych
Jego zadaniem jest zsumowanie sygna³u akustycznego opÛünionego z†wejúciowym oraz ustalenie odpowiedniego poziomu (regulowanego R5). Kaøda zmiana czasu opÛünienia powoduje krÛtkotrwa³e wyciszenie opÛünionego sygna³u. W†celu uzyskania pods³uchu samego sygna³u wejúciowego (bez sumowania z†opÛünionym) naleøy nacisn¹Ê przycisk SLEEP na panelu sterowania.
Montaø i†uruchomienie Uk³ad echa zosta³ zmontowany na dwÛch p³ytkach drukowanych, ktÛrych schematy montaøowe pokazano na rys. 6. Po zgromadzeniu wszystkich niezbÍdnych elementÛw moøemy przyst¹piÊ do montaøu, ktÛry nie powinien zaj¹Ê duøo czasu. Naleøy zwrÛciÊ szczegÛln¹ uwagÍ na prawid³owe po³¹czenie ze sob¹ obydwu p³ytek drukowanych. Uruchomienie uk³adu naleøy przeprowadziÊ dwuetapowo: najpierw uruchamiamy panel stero-
30
wania, nastÍpnie zasadnicz¹ czÍúÊ uk³adu. W†bloku sterowania naleøy ustawiÊ potencjometrem POT2 odpowiedni kontrast wyúwietlacza LCD. Po zaprogramowaniu mikrokontrolera, osadzeniu go w†podstawce i†w³¹czeniu zasilania blok zaczyna dzia³aÊ. Moøna dodatkowo sprawdziÊ miernikiem lub prÛbnikiem stanÛw logicznych stany logiczne na wyjúciach steruj¹cych. W kolejnym kroku uruchomiany jest uk³ad echa. W†tym celu naleøy na wejúcie podaÊ sygna³ akustyczny pochodz¹cy np. z†odtwarzacza p³yt CD i†reguluj¹c potencjometrem R5 ustawiÊ odpowiedni poziom miksowanego sygna³u wejúciowego z†wyjúciowym. TÍ czynnoúÊ wykonujemy na s³uch. Naleøy przy tym pamiÍtaÊ, øe sygna³ akustyczny na wejúciu nie moøe byÊ zbyt duøy, ze wzglÍdu na moøliwoúÊ wyst¹pienia zniekszta³ceÒ. Za pomoc¹ tego uk³adu moøna opÛüniaÊ sygna³ monofoniczny. Dla opÛünienia sygna³u stereofo-
Rezystory R1, R6: 10kΩ R2, R4, R9: 20 kΩ R3: 18 kΩ R5: 47 kΩ potencjometr R7: 1 kΩ R8: 3 kΩ R10: 2,7 kΩ R11, R12: 3,9 kΩ R13: 10 kΩ potencjometr Kondensatory C1: 100µF/16V C2, C8, C13, C20, C23: 100nF C3, C6: 100pF C4, C16: 4,7nF C5, C9, C18, C22: 1µF/16V C7, C15: 560pF C10: 47µF/16V C11, C12: 330nF C14, C17: 10nF C19: 1000µF/25V C21: 470µF/15V C24, C25: 30pF Półprzewodniki US1: T62M0001A US2: ST62T20C − zaprogramowany US3: 7805 Różne X1: 8MHz P1...P3: przyciski do druku Gniazdo Cinch do druku (2 szt.) ARK2 Wyświetlacz LCD 1x16
nicznego potrzebne s¹ dwa uk³ady T62M0001A. Aby otrzymaÊ sygna³ stereofonicznego echa, naleøy uøyÊ dwÛch p³ytek drukowanych bloku g³Ûwnego, ktÛrych wejúcia steruj¹ce naleøy po³¹czyÊ ze sob¹ i†do³¹czyÊ do wyjúÊ bloku steruj¹cego. Elementy zasilacza montujemy tylko na jednej z†p³ytek bloku g³Ûwnego, z†ktÛrej zasilane s¹ pozosta³e czÍúci uk³adu. Krzysztof Górski, AVT Wzory p³ytek drukowanych w formacie PDF s¹ dostÍpne w Internecie pod adresem: http://www.ep.com.pl/ ?pdf/grudzien02.htm oraz na p³ycie CD-EP12/2002B w katalogu PCB.
Elektronika Praktyczna 12/2002
„Mówiąca” P R O kostka J E KdoTgry Y
„Mówiąca” kostka do gry AVT−5089
Zim¹ wiÍcej czasu spÍdzamy w†domu. W†tym okresie ìdo ³askî dochodz¹ zarzucone niegdyú gry. W†wiÍkszoúci gier planszowych niezbÍdna jest kostka. A†sama kostka moøe mieÊ rÛøn¹ budowÍ: zwyk³ego szeúcianu z†namalowanymi ìoczkamiî lub zaawansowanego uk³adu elektronicznego zawieraj¹cego mikroprocesor. Rekomendacje: dla ìzaciÍtychî graczy, ktÛrzy chc¹ urozmaiciÊ i†uatrakcyjniÊ przebieg losowaÒ, stanowi¹cych podstawÍ wiÍkszoúci gier planszowych.
Niezaleønie od budowy, kostka s³uøy jednemu celowi: wylosowaniu liczby z†przedzia³u 1...6. Nasuwa siÍ pytanie: po co do tak prostej czynnoúci ìw³¹czaÊî elektronikÍ? Jednak uk³ad elektroniczny zwyk³ej kostki moøe przynieúÊ wiele radoúci, zarÛwno na etapie uruchamiania, jak i†pÛüniejszego uøytkowania. W†artykule opisano budowÍ elektronicznej kostki, informuj¹cej g³osem o†liczbie ìwyrzuconychî oczek. Opiera siÍ ona na specjalizowanym uk³adzie nagrywaj¹cym i†odtwarzaj¹cym düwiÍki oraz dwÛch uk³adach cyfrowych. Zastosowanie uk³adÛw wykonanych w†technologii CMOS pozwala na zasilanie bateryjne. W†stanie ìspoczynkuî kostka do gry pobiera zaledwie 70 µA pr¹du, a†w†stanie aktywnym oko³o 40 mA. ZwiÍkszony pobÛr pr¹du wystÍpuje tylko w†momencie losowania (wypowiadania wylosowanej liczby), wiÍc baterie wystarczaj¹ na bardzo wiele spotkaÒ.
Budowa i†dzia³anie Schemat elektryczny ìmÛwi¹cejî kostki do gry przedstawiono na rys. 1. G³Ûwnym elementem jest uk³ad scalony US2. Umoøliwia on zapisywanie i†odtwarzanie komunikatÛw g³osowych o†czasie trwania rÛwnym 20 sekund. Zawiera on obwody wejúciowe i†wyjúciowe niezbÍdne do zapisu i†odtwarzania sygna³u analogowego,
Elektronika Praktyczna 12/2002
dziÍki czemu do budowy uk³adu potrzebna jest niewielka liczba elementÛw zewnÍtrznych. Sygna³ wejúciowy z†mikrofonu MK jest podawany do wewnÍtrznego wzmacniacza poprzez kondensatory C10 i†C11. W†obwodzie zasilania mikrofonu pracuj¹ rezystory R9...R11. Rezystor R9 wraz z†kondensatorem C12 tworzy filtr dolnoprzepustowy, dziÍki czemu do nagrywanych komunikatÛw nie przedostaj¹ siÍ zak³Ûcenia wystÍpuj¹ce w†obwodzie zasilania. W†uk³ad ISD1420 wbudowano rÛwnieø wzmacniacz wyjúciowy umoøliwiaj¹cy bezpoúrednie do³¹czenie g³oúnika. Nagrywanie komunikatÛw rozpoczyna siÍ od podania niskiego poziomu na wejúcie REC - przez ca³y czas trwania tego poziomu wykonywana jest rejestracja (zapis) düwiÍku. Ustawienie ì1î na wejúciu REC koÒczy zapis komunikatu. W†czasie zapisu dioda D3 sygnalizuje stan nagrywania úwieceniem. Jeúli w†czasie nagrywania zostanie przekroczony czas zapisu (zostanie przepe³niony wewnÍtrzny licznik adresuj¹cy), to zapis zostanie przerwany pomimo nis-
33
„Mówiąca” kostka do gry
Rys. 1. Schemat elektryczny elektronicznej kostki do gry
kiego poziomu na wejúciu REC, a†dioda D3 zostanie zgaszona, sygnalizuj¹c przepe³nienie licznika. Do zainicjowania odtwarzania nagranych komunikatÛw uk³ad ISD1420 posiada dwa niezaleøne wejúcia steruj¹ce: PLAYL i†PLAYE. Wejúcia te rÛøni¹ siÍ tym, øe podanie na wejúcie PLAYE ujemnego impulsu spowoduje start odtwarzania komunikatu i†komunikat ten zostanie odtworzony automatycznie do koÒca. Natomiast wejúcie PLAYL inicjuje odtwarzanie, ktÛre trwa dopÛty, dopÛki na wejúciu tym jest poziom niski. Po zmianie na tym wejúciu poziomu na wysoki nastÍpuje zatrzymanie odtwarzania, niezaleønie od tego, czy komunikat zosta³ odtworzony w†ca³oúci, czy teø nie. W†przedstawionym uk³adzie wykorzystano wejúcie PLAYE, dziÍki czemu wystarczy podaÊ na to wejúcie ujemny impuls, a†komunikat zostanie odtworzony i†po jego zakoÒczeniu uk³ad przejdzie w†stan uúpienia. Ten sposÛb inicjowania odtwarzania komunikatÛw jest ³atwiejszy, gdyø nie trzeba kontrolowaÊ d³ugoúci komunikatu. Po wykryciu znacznika koÒca komunikatu uk³ad ISD1420 sam wy³¹cza tryb odtwarzania.
34
W†zaleønoúci od stanÛw wystÍpuj¹cych na wejúciach adresowych A0...A7, uk³ad ISD1420 moøe pracowaÊ w†rÛønych trybach. PoszczegÛlne tryby pozwalaj¹ na rÛøne sposoby odtwarzania komunikatÛw, na przyk³ad ³¹czenie kilku komunikatÛw w†jedn¹ ca³oúÊ lub nieprzerwane odtwarzanie jednego komunikatu. W†kostce wykorzystano adresowany tryb odtwarzania. Oznacza to, øe poszczegÛlne komunikaty zapisywane s¹ od konkretnego adresu podanego na wejúcia A0...A7 w procesie nagrywania, a†nastÍpnie kaødy komunikat jest odtwarzany po podaniu jego adresu. Linie adresowe umoøliwiaj¹ wybranie maksymalnie 160 komunikatÛw, kaødy o†d³ugoúci 0,125 s, co w†efekcie daje czas nagrania 20 s. Do adresowania pamiÍci uk³adu ISD1420, a†tym samym wyboru odpowiedniego komunikatu zastosowano uk³ad US1. Jest to pierúcieniowy licznik dziesiÍtny, ktÛry w†zaleønoúci od liczby zliczonych impulsÛw ìwystawiaî jedynkÍ na jednym z†wyjúÊ Q0...Q9. Podanie impulsu dodatniego na wejúcie CLK powoduje ìprzesuniÍcieî jedynki na wyjúciach licznika. Jedynka wystÍpuje tylko na
jednym z†wyjúÊ Q0...Q6, a na pozosta³ych s¹ zawsze zera. Wejúcie zeruj¹ce licznika jest do³¹czone do wyjúcia Q6, wskutek czego licznik liczy tylko do szeúciu, gdyø po siÛdmym impulsie na wejúciu zegarowym wyjúcie Q6 przyjmuje stan ì1î, co z†kolei powoduje zerowanie licznika. W†ten sposÛb otrzymano licznik licz¹cy do szeúciu, co umoøliwia wypowiedzenie tylko szeúciu komunikatÛw. Przy takim uk³adzie adresowania kolejne komunikaty zaczynaj¹ siÍ dla nastÍpuj¹cych wartoúci czasu: 0†s, 1†s, 2†s, 4†s, 8†s, 16 s. Z tego powodu czasy przypadaj¹ce na poszczegÛlne komunikaty s¹ rÛøne: na pierwszy i†drugi komunikat przypada 1†sekunda, na trzeci juø dwie sekundy, na czwarty 4†sekundy, na pi¹ty aø 8†sekund, na szÛsty znÛw 4†s. Nieproporcjonalne roz³oøenie czasÛw nie ma znaczenia dla funkcjonowania kostki, a†znacznie upraszcza adresowanie poszczegÛlnych komunikatÛw. Przekroczenie czasu przypadaj¹cego na dany komunikat spowoduje nadpisanie kolejnego komunikatu. Czasy trwania komunikatÛw wymaganych do pracy kostki
Elektronika Praktyczna 12/2002
„Mówiąca” kostka do gry
Montaø i†uruchomienie
Rys. 2. Schemat montażowy płytki drukowanej
nie przekraczaj¹ jednej sekundy, nie ma wiÍc moøliwoúci nadpisania nagrywanych komunikatÛw. Do generowania sygna³u taktuj¹cego o†duøej czÍstotliwoúci, niezbÍdnego do quasi-losowego odtwarzania komunikatÛw, wykorzystano dwie bramki uk³adu US3, ktÛre wraz z†rezystorami R1, R2 i†kondensatorem C1 tworz¹ generator przebiegu prostok¹tnego. Sygna³ jest generowany tylko wtedy, gdy jest naciúniÍty przycisk SW1. Jeúli zworka JP2 jest w†pozycji 1-2, to sygna³ ten jest podawany na wejúcie zegarowe licznika US1, co powoduje zmiany adresu na wejúciach adresowych uk³adu ISD1420. Nie nastÍpuje jednak odtwarzanie komunikatÛw, gdyø na wejúciu wyzwalaj¹cym PLAYE wystÍpuje stan jedynki logicznej, wymuszony przez rezystor podci¹gaj¹cy R7. Po zwolnieniu przycisku nastÍpuje zatrzymanie licznika i†poprzez bramkÍ U3D zostanie wygenerowany ujemny impuls powoduj¹cy odtworzenie komunikatu o†adresie czasowym ustawionym przez licznik. Po odtworzeniu komunikatu (liczby ìwyrzuconychî oczek) uk³ad przechodzi w†stan uúpienia. Ponowne naciskanie przycisku SW1 spowoduje wylosowanie kolejnej liczby. Liczby bÍd¹ niemaløe losowe i†to pomimo, iø generator pracuje ze sta³¹ czÍstotliwoúci¹. Wynika to z†faktu, øe czas naciúniÍcia przycisku bÍdzie za kaødym razem losowo rÛøny, a†co za tym idzie liczba zliczona przez licznik przypadkowa.
Elektronika Praktyczna 12/2002
Schemat montaøowy zamieszczono na rys. 2. Montaø wykonujemy, poczynaj¹c od elementÛw o†najmniejszych wymiarach, czyli rezystorÛw i†kondensatorÛw, a†nastÍpnie montujemy podstawki pod uk³ady scalone. W†nastÍpnym etapie montujemy kondensatory i†diodÍ úwiec¹c¹ D3. Na koÒcu montujemy zworki JP1, JP2 i†JP3 oraz z³¹cza CON1, CON2. Przed wlutowaniem mikrofonu naleøy do jego punktÛw lutowniczych przylutowaÊ odcinki srebrzanki o†d³ugoúci oko³o 5†mm. Tak przygotowany mikrofon naleøy wlutowaÊ w†p³ytkÍ. Jeúli montaø zosta³ wykonany poprawnie, to montujemy uk³ady scalone i†do z³¹cza CON2 pod³¹czamy g³oúnik, a†do z³¹cza CON1 napiÍcie zasilania. Zwork¹ JP1 moøna roz³¹czaÊ napiÍcie zasilania bez koniecznoúci od³¹czania przewodÛw od z³¹cza CON1. NapiÍcie to powinno zawieraÊ siÍ w†przedziale 4,5 V...6,5 V. Do tego celu moøna zastosowaÊ zasilacz stabilizowany 5†V lub cztery baterie (na przyk³ad R6) po³¹czone szeregowo. Wskazane jest jednak zastosowanie baterii, gdyø umoøliwi to uøywanie kostki w†dowolnym miejscu. Ca³y uk³ad jest zabezpieczony przed odwrotn¹ polaryzacj¹, dziÍki czemu nie ma ryzyka uszkodzenia uk³adÛw scalonych (naleøy tylko przestrzegaÊ wartoúci napiÍcia). Po zmontowaniu uk³adu moøna przejúÊ do procedury nagrania niezbÍdnych komunikatÛw.
Nagrywanie komunikatÛw Do pracy kostki potrzebne jest nagranie komunikatÛw g³osowych w†uk³adzie ISD1420. ProcedurÍ tÍ wykonuje siÍ tylko raz, po zmontowaniu uk³adu, gdyø nagrane komunikaty zostan¹ zapisane w†nieulotnej pamiÍci uk³adu ISD1420 i†bÍd¹ pamiÍtane rÛwnieø po wy³¹czeniu zasilania. Aby nagraÊ komunikaty, naleøy zworkÍ JP2 ustawiÊ w†pozycji 2-3. WÛwczas licznik nie bÍdzie zlicza³ impulsÛw z†generatora, lecz z†przycisku SW1. Pozwoli to na ustawianie odpowiednich adresÛw dla kolejnych komunikatÛw. Nagrywanie komunikatÛw wykonuje siÍ nastÍpuj¹co: w³¹czamy zasilanie, zwieramy zworkÍ JP3, wypowiadamy pierwszy komunikat (czyli ìjedenî) i†wyci¹gamy zworkÍ - dla ³atwiej-
szej obs³ugi moøna zamiast zworki JP3 zastosowaÊ przycisk. NastÍpnie naciskamy przycisk SW1, nast¹pi odtworzenie nagranego komunikatu i†jednoczeúnie zostanie zwiÍkszona zawartoúÊ licznika w†celu nagrania kolejnego komunikatu. Kolejne komunikaty zapisujemy w†ten sam sposÛb aø do szeúciu, nagrywaj¹c kolejne cyfry: jeden, dwa, trzy, cztery, piÍÊ, szeúÊ. Za kaødym razem, gdy zwarta jest zworka JP3, úwieci siÍ dioda D3, sygnalizuj¹c stan zapisu. Po nagraniu wszystkich komunikatÛw naleøy przestawiÊ zworkÍ JP2 w†pozycjÍ 1-2, kieruj¹c ponownie sygna³ z†generatora na wejúcie zegarowe licznika. WÛwczas uk³ad jest gotowy do pracy. Kaødorazowe naciúniÍcie i†zwolnienie przycisku SW1 bÍdzie powodowa³o wypowiedzenie losowej liczby ìwyrzuconychî oczek. Krzysztof P³awsiuk, AVT
[email protected] Wzory p³ytek drukowanych w formacie PDF s¹ dostÍpne w Internecie pod adresem: http://www.ep.com.pl/ ?pdf/grudzien02.htm oraz na p³ycie CD-EP12/2002B w katalogu PCB.
WYKAZ ELEMENTÓW Rezystory R1, R3, R4, R6, R7: 100kΩ R2: 1MΩ R5, R9: 1kΩ R8, R10, R11: 10kΩ R12: 470kΩ R13: 5,1kΩ Kondensatory C1, C6...C11: 100nF C2: 100µF/16V C3: 1nF C4, C5: 220nF C12: 220µF/16V C13: 4,7µF/16V Półprzewodniki D1: 1N5817 D2: BAT43 D3: LED 3mm czerwona US1: CD4017 US2: ISD1420 US3: CD4001 Różne CON1, CON2: ARK2(3,5mm) JP1, JP3: goldpin 1x2 + jumper JP2: goldpin 1x3 + jumper SW1: mikrowłącznik MK: mikrofon pojemnościowy Głośnik 1W/16 Podstawki: DIL24, DIL16, DIL14
35
Interfejs graficznych P R wyświetlaczy O J E K TLCD Y
Interfejs graficznych wyświetlaczy LCD AVT−5093 Sterowanie graficznym wyúwietlaczem LCD jest dosyÊ k³opotliwe, szczegÛlnie gdy wyúwietlacz nie ma wbudowanego sterownika z†funkcjami u³atwiaj¹cymi wyúwietlanie oraz rysowanie grafiki i†tekstÛw. W†artykule opisano interfejs sprzÍtowy miÍdzy wyúwietlaczem a†steruj¹cym mikrokontrolerem. DziÍki niemu moøna ³atwiej wykonaÊ wiÍkszoúÊ typowych zadaÒ graficznych. Rekomendacje: artyku³ polecamy projektantom zamierzaj¹cym stosowaÊ wyúwietlacze graficzne w†swoich opracowaniach.
Prezentowany w†artykule uk³ad jest inteligentnym interfejsem miÍdzy steruj¹cym mikrokontrolerem a†wyúwietlaczem. DziÍki temu projektant moøe skupiÊ siÍ na przygotowaniu oprogramowania (np. oscyloskopu czy w³asnego GameBoya) i nie rozpraszaÊ siÍ problemami zwi¹zanymi z†obs³ug¹ LCD, a†jest ich wiele. Zastosowanie interfejsu
eliminuje wiele problemÛw zwi¹zanych z obs³ug¹ wyúwietlacza, a†ponadto, do jego sterowania wystarcza zaledwie jedno wyprowadzenie mikrokontrolera. Zastosowanie transmisji szeregowej nie jest krytyczne dla wyúwietlania danych na wyúwietlaczach LCD, gdyø s¹ one stosunkowo wolne. Poza tym, odúwieøanie obrazu przeprowadza siÍ zwykle wtedy, gdy trzeba go zmieniÊ, ale nie czÍúciej niø kilka razy na sekundÍ.
Modu³ wyúwietlacza
Rys. 1. Schemat blokowy sterownika zastosowanego w wyświetlaczu graficznym opisanym w artykule
Elektronika Praktyczna 12/2002
Wyúwietlacz zastosowany w†projekcie ma oznaczenie EAP128-6N2LED (polecam go ze wzglÍdu na nisk¹ cenÍ). Matryca ekranu sk³ada siÍ ze 128 x†64 punktÛw. Ma wbudowany podúwietlacz z diod LED i†przetwornicÍ dostarczaj¹c¹ ujemne napiÍcie polaryzuj¹ce. Sterownik wyúwietlacza posiada magistralÍ (tak jak i†w†LCD alfanumerycznych) zgodn¹ z†procesorami Motoroli (6809, 680x0, 683xx). ZewnÍtrzny procesor steruj¹cy ma poprzez tÍ magistralÍ dostÍp do pamiÍci ekranu wyúwietlacza. Ekran zawiera 128 x 64 punktÛw, zgrupowanych w dwÛch segmentach po 64 x 64 punkty.
37
Interfejs graficznych wyświetlaczy LCD W przypadku do³¹czenia wyúwietlacza do magistrali procesora innego niø Motoroli naleøy pamiÍtaÊ, øe sterownik wyúwietlacza wymaga, aby sygna³y RW, DI i†CS ustali³y siÍ przed wyst¹pieniem poziomu aktywnego sygna³u E. Aby spe³niÊ ten warunek, najlepiej sygna³y steruj¹ce dla wyúwietlacza wytworzyÊ w uk³adzie wed³ug rys. 3. Powoduje to, øe obs³uga wyúwietlacza jest trochÍ nienaturalna (inne adresy do zapisu, inne do odczytu), ale mamy gwarancjÍ, øe sygna³ RW zostanie ustalony przed pojawieniem siÍ sygna³u E.
Sterowanie wyúwietlaczem
Rys. 2. Jeden z możliwych sposobów podłączenia wyświetlacza graficznego do portu drukarkowego PC
Sterowanie wyúwietlaniem jest wiÍc podobne jak w†wyúwietlaczach alfanumerycznych 4x40 znakÛw, w ktÛrych zastosowano dwa sterowniki 2†x†40 znakÛw, programowane przez jedn¹ magistralÍ. W†prezentowanym wyúwietlaczu matrycÍ obs³uguj¹ takøe dwa niezaleøne sterowniki 64 x†64 pun-
kty. To dodatkowo komplikuje sterowanie wyúwietlaczem. Na rys. 2 przestawiono schemat uk³adu umoøliwiaj¹cego do³¹czenie wyúwietlacza do portu drukarkowego komputera PC. Interfejs jest tak prosty, øe moøna go wykonaÊ na p³ytce uniwersalnej.
Tab. 1. Zestawienie poleceń sterownika HD61208
38
W†tab. 1 opisano sposÛb dostÍpu do rejestrÛw kontrolnych i†pamiÍci. WybÛr operacji odbywa siÍ poprzez ustawienie odpowiednich stanÛw logicznych na wejúciach steruj¹cych kontrolera wyúwietlacza: - odczyt rejestru kontrolnego: (DI=L, RW=H) - znaczenie poszczegÛlnych bitÛw jest nastÍpuj¹ce: bit 7 - BUSY BUSY=L - sterownik gotowy do przyjÍcia rozkazu BUSY=H - sterownik realizuje rozkaz, CPU musi czekaÊ bit 6 - zawsze L bit 5 - ON/OFF ON/OFF=L - wyúwietlacz wy³¹czony ON/OFF=H - wyúwietlacz w³¹czony bit 4 - RESET RESET=L - normalna praca RESET=H - wyúwietlacz w†stanie zerowania (aktywny stan linii zeruj¹cej) bit 3...0 - zawsze L - zapis rejestru kontrolnego: (DI=L, RW=L) - znaczenie poszczegÛlnych bitÛw jest nastÍpuj¹ce: 0011111x - w³¹czenie/wy³¹czenie wyúwietlacza x=H - w³¹czenie wyúwietlacza x=L - wy³¹czenie wyúwietlacza 01yyyyyy - ustawienie numeru bajtu na stronie (wspÛ³rzÍdna pozioma) w†przedziale 0...63 10111xxx - ustawienie numeru strony w†przedziale 0...7 11yyyyyy - ustawienie offsetu w†przedziale 0...63 - polecenie to umoøliwia przewijanie ekranu odczyt bajtu z†pamiÍci ekranu odczytuje bajt ustawiony rozkazami 01yyyyyy i†10111xxx,
Elektronika Praktyczna 12/2002
Interfejs graficznych wyświetlaczy LCD punktu na LCD napisanej w†asemblerze 8051. Plik z kodem ürÛd³owym jest dostÍpny na stronie EP i†na p³ycie CD-EP12/2002B.
Charakterystyka interfejsu
Rys. 3. Interfejs ułatwiający dołączenie wyświetlacza graficznego do mikrokontrolera
zapis bajtu do pamiÍci ekranu - zapisuje bajt ustawiony rozkazami 01yyyyyy i†10111xxx. Na rys. 3 przedstawiono organizacjÍ pamiÍci ekranu wyúwietlacza. Aby wyúwietliÊ na ekranie punkt o†wspÛ³rzÍdnych XY, naleøy postÍpowaÊ nastÍpuj¹co: wspÛ³rzÍdn¹ Y dzielimy przez 8 i†tak uzyskana czÍúÊ ca³kowita wyniku okreúla numer strony pamiÍci ekranu. Reszta z†dzielenia jest numerem bitu, ktÛry chcemy zmodyfikowaÊ. WspÛ³rzÍdn¹ X†porÛwnujemy z†liczb¹ 63, Jeúli jest wiÍksza, to oznacza, øe obs³ugujemy drugi segment wyúwietlacza. Adres punktu i†numer bitu mamy obliczony, naleøy wiÍc odczytaÊ zawartoúÊ pamiÍci ekranu LCD i†przeprowadziÊ operacjÍ OR (w†przypadku wyúwietlania punktu) lub AND (w przypadku wygaszenia) na wyliczonym numerze bitu. Aby zainicjowaÊ wyúwietlacz, naleøy wys³aÊ nastÍpuj¹ce rozkazy: Mov CTR_LCD,#%00111111 ;włączenie LCD MovCTR_LCD,#%11000000 ;zerowy offset
Aby wyúwietliÊ punkt w†lewym gÛrnym rogu wyúwietlacza (w†jednej po³Ûwce), naleøy wys³aÊ nastÍpuj¹ce rozkazy: Mov CTR_LCD,#%10111000 ;ustawienie nr strony ;pamięci ekranu Mov CTR_LCD,#%01000000 ;ustawienie adresu ;w pamięci ekranu MovDATA_LCD,#%00000001 ;zapis do pamięci ekranu
Aby wyúwietliÊ punkt o†wspÛ³rzÍdnych X=10, Y=20, naleøy wys³aÊ nastÍpuj¹ce rozkazy: Mov CTR_LCD,#%10111000+2 ;ustawienie nr strony ;pamięci ekranu
Elektronika Praktyczna 12/2002
Mov CTR_LCD,#%01000000+10 ;ustawienie adresu ;w pamięci ekranu MovDATA_LCD,#%00010000 ;zapis do pamięci ekranu
Aby na wyúwietlaczu LCD wyúwietliÊ znak, naleøy jego wzÛr skopiowaÊ, linia po linii, z†pamiÍci zawieraj¹cej wzory znakÛw do pamiÍci ekranu. Przyk³adowy program w†Pascalu (takøe jego wersja ürÛd³owa) steruj¹cy wyúwietlaczem przez port rÛwnoleg³y jest dostÍpny na CD-EP12/2002B i†na naszej stronie WWW. Poniewaø nie ma moøliwoúci odczytania danych z†kontrolera LCD, program nie weryfikuje stanu linii busy, tylko odczekuje katalogowy czas (w³aúciwie Pascal dzia³a tak wolno, øe nie trzeba czekaÊ). W†razie potrzeby opÛünienie moøna wstawiÊ w†procedurze STROB. W†pamiÍci komputera znajduje siÍ wirtualny ekran, z†ktÛrego dane s¹ kopiowane do LCD. Jeúli nie trzeba zapisywaÊ numeru strony lub adresu bajtu do LCD, to procedury te s¹ pomijane. DziÍki temu przyspieszono wykonywanie operacji zapisu. Przyk³adowy program wyúwietla punkty, rysuje prostok¹t, wyúwietla znaki alfanumeryczne i†rysuje liniÍ pod dowolnym k¹tem. Sta³e FLIP_X, FLIP_Y i†ORIENT umoøliwiaj¹ zamianÍ orientacji ekranu. Gdy ustawimy FLIP_X i†FLIP_Y na 1, ekran zostanie odwrÛcony ìdo gÛry nogamiî. Ustawienia na 1†sta³ej ORIENT umoøliwia wyúwietlanie danych w†pionie, a†nie w†poziomie (jak w†wiÍkszoúci automatÛw do gier). Aby przybliøyÊ Czytelnikom obs³ugÍ wyúwietlacza, na list. 1 przedstawiam najistotniejszy fragment procedury wyúwietlania
Program steruj¹cy prac¹ mikrokontrolera realizuje nastÍpuj¹ce funkcje: - po wyzerowaniu wyúwietla logo do czasu otrzymania dowolnego znaku przez RS232, - steruje podúwietlaniem LCD, - wyúwietla punkty, - wyúwietla pojedyncze znaki (takøe polskie), - wyúwietla teksty, - przewija ekran w†pionie, - czyúci ekran, - prze³¹cza wyúwietlany obraz w†negatyw, - zmienia orientacjÍ ekranu w†osi X, - zmienia orientacjÍ ekranu w†osi Y, - obraca ekran o†90 stopni. Nie zosta³a zaimplementowana procedura rysowania linii, poniewaø wymaga ona wykonywania operacji zmiennoprzecinkowych. S¹ natomiast dostÍpne wzory wszystkich polskich znakÛw, ramek i†znaki uøywane w†odtwarzaczach CD. Interfejs akceptuje sygna³y w†standardzie TTL i†RS232C. Moøna go wyzerowaÊ, wymuszaj¹c poziom niski na wyprowadzeniu 4 z³¹cza J3.
Budowa i†dzia³anie interfejsu Schemat elektryczny interfejsu przedstawiono na rys. 5. NapiÍcie zasilaj¹ce wyúwietlacz jest podawane na z³¹cze szpilkowe J3. Na to z³¹cze wprowadzane s¹ dane z†uk³adu steruj¹cego i†sygna³ ze-
Rys. 4. Mapa pamięci sterownika wyświetlacza graficznego ze sterownikiem HD61208
39
Interfejs graficznych wyświetlaczy LCD List. 1. ;Wejscie: ;R2 - współrzędna X ;R3 - współrzędna Y ;R4 - 1-zapala punkt, 0-gasi punkt ;Zmienia: ; lcd_point: mov a,R2 ;Ktora polowke obslugujemy? cjne a,#(MAX_X/2)+1,$+3 ; czy przejscie na druga polowke? jnc lcd_point_cs0 clr _CS ; - ustawienie pierwszej polowki sjmp lcd_point_cs1 lcd_point_cs0: setb _CS ; - tak wiec ustawienie drugiej polowki lcd_point_cs1: mov a,R3 ;Obliczenie adresu strony mov B,#8 ; Y/8 div ab ; reszte z dzielenia w B call lcd_page mov a,R2 ; X call lcd_adr_y mov a,B ; reszta z dzielenia do Acc cjne R4,#0,lcd_point_set1 ;Jesli SET punktu to skok mov dptr,#tab_and ; - nie set wiec RESET sjmp lcd_point_set2 lcd_point_set1: mov dptr,#tab_or lcd_point_set2: movc a,@a+dptr ;Wczytanie danej z tablicy mov B,a ; nr bitu do zapalenia zapamietaj w B call rd_dana ;Odczytaj zawartosc pamieci ekarnu w miejscu zmiany call rd_dana ; korekta (odczytuje Y-1) push ACC ; zapamietaj odczytana wartosc z pamieci ekranu mov a,R2 ; X call lcd_adr_y pop ACC ;Odtworzenie odczytanej danej z LCD cjne R4,#0,lcd_point_set3 ;Jesli SET punktu to skok anl a,B sjmp lcd_point_set4 lcd_point_set3: orl a,B lcd_point_set4: call wr_dana lcd_point_exit: ret tab_or: DB 01h,02h,04h,08h,10h,20h,40h,80h tab_and: DB 11111110b DB 11111101b DB 11111011b DB 11110111b DB 11101111b DB 11011111b DB 10111111b DB 01111111b
ruj¹cy. Dane przesy³ane szeregowe s¹ podawane na wejúcie bramki U2C uk³adu 74HC14. Rezystor R1 zabezpiecza wejúcie bramki w†przypadku wyst¹pienia na nim napiÍcia wiÍkszego od napiÍcia zasilania lub napiÍcia ujemnego. DziÍki temu moøna doprowadziÊ do wejúcia uk³adu napiÍcia zgodne ze standardem RS232C lub o†poziomach TTL. Jeúli sygna³ ma poziomy TTL, jumper na J2 musi zwieraÊ styki 2-3, a jeúli sygna³y s¹ zgodne z†RS232C, na J2 zwieramy styki 1-2. Dane s¹ podawane na wejúcie RxD procesora. Elementy C1 i†R6 tworz¹ obwÛd zeruj¹cy procesor po w³¹czeniu zasilania. Mikrokontroler moøna
wyzerowaÊ, wymuszaj¹c poziom niski na styku 4 z³¹cza J3. Mikrokontroler steruje wyúwietlaczem LCD za poúrednictwem wiÍkszoúci wyprowadzeÒ portÛw P1 i†P3. Rezystory R3 i†R4 s¹ konieczne, poniewaø wyprowadzenia P1.0 i†P1.0 mikrokontrolera nie zawieraj¹ wewnÍtrznych obwodÛw podci¹gania. Tranzystor T2 za³¹cza podúwietlanie wyúwietlacza. Niski poziom na wyprowadzeniu 3 procesora powoduje w³¹czenie tego tranzystora. Za pomoc¹ bramki U2A steruje siÍ wejúciem CS1 kontrolera LCD w†przeciwfazie z†wejúciem CS2. Potencjometrem P1 reguluje siÍ kontrast wyúwietlacza.
Montaø i†uruchomienie Schemat montaøowy p³ytki pokazano na rys. 6. W†pierwszej kolejnoúci montujemy rezystory, podstawki pod uk³ady scalone, kondensatory i†potencjometr. NastÍpnie lutujemy z³¹cza: J2 - listwa goldpin 1x3, J3 - listwa goldpin 1x4, J1 - listwa goldpin 20x1 (montujemy je od strony druku). Podobnie postÍpujemy z†gniazdami tulipa-
40
nowymi J4 i†J5. Umieszczamy uk³ad U2 w†podstawce i†w³¹czamy zasilanie. Na styk 3 z³¹cza J3 podajemy szeregowo dane z†PC na wyprowadzeniu 2 uk³adu U1 powinny wystÍpowaÊ impulsy. Po zwarciu styku 4 z³¹cza J3 z†mas¹, na wyprowadzeniu 1 podstawki pod U1 powinien byÊ poziom ìHî. Po tych czynnoúciach moøna umieúciÊ mikrokontroler i†wyúwietlacz w†miejscach dla nich przeznaczonych. Po w³¹czeniu zasilania na wyúwietlaczu powinno pojawiÊ siÍ logo i†w³¹czyÊ podúwietlanie wyúwietlacza. Logo zniknie i†podúwietlanie wy³¹czy siÍ po odebraniu pierwszego znaku. Jeúli logo jest ma³o widoczne, regulujemy kontrast wyúwietlacza. Jeúli regulacja nie jest skuteczna, sprawdzamy, czy na styku 18 z³¹cza J1 wystÍpuje napiÍcie ujemne (oko³o -9V). Brak napiÍcia úwiadczy o†uszkodzeniu wyúwietlacza lub zwarciu úcieøek prowadz¹cych do potencjometru. Jeúli napiÍcie ma prawid³ow¹ wartoúÊ, prawdopodobnie nie pracuje procesor. W†pierwszej kolejnoúci sprawdzamy, czy na wyprowadzeniu 1†mikrokontrolera jest poziom ìLî. Jeúli wystÍpuje poziom ìHî, uszkodzony moøe byÊ tranzystor T1 lub rezystor R6. Jeúli jest poziom ìLî, zwieramy na chwilÍ styk 4†z³¹cza J3 z†mas¹. Na wyprowadzeniu 1 mikrokontrolera powinien pojawiÊ siÍ na chwilÍ poziom ìHî. Jeúli po ponownym zerowaniu nie pojawi siÍ logo, to nie pracuje poprawnie mikrokontroler. Sprawdzamy, czy na wyprowadzeniu 4 mikrokontrolera wystÍpuje fala prostok¹tna. Podczas testu naleøy uøywaÊ sondy 1:10, aby nie przeci¹øyÊ oscylatora, co spowodowa³oby zerwanie drgaÒ. Jeúli uk³ad nadal nie pracuje poprawnie, naleøy sprawdziÊ, czy po zerowaniu pojawiaj¹ siÍ impulsy lub poziom niski na wyprowadzeniu 8 mikrokontrolera. Jeúli s¹ impulsy, to sprawdzamy, czy wystÍpuj¹ rÛwnieø na wyprowadzeniach 1 i†2 uk³adu U2. Naleøy pamiÍtaÊ, øe impulsy pojawiaj¹ siÍ tam na krÛtko po zerowaniu. Jeøeli wystÍpuj¹ impulsy na wyprowadzeniach U2, a†nie jest wyúwietlane logo na LCD, úwiadczy to o†uszkodzeniu wyúwietlacza.
Elektronika Praktyczna 12/2002
Interfejs graficznych wyświetlaczy LCD
Rys. 5. Schemat elektryczny interfejsu wyświetlacza LCD
Moøna jeszcze sprawdziÊ, czy wyprowadzenia mikrokontrolera 11 i 13 s¹ poprawnie ìpodci¹ganeî do +5V. Gdy po zerowaniu wyprowadzenie 8†mikrokontrolera na chwilÍ przyjmuje poziom niski, a†pÛüniej utrzymuje siÍ na poziomie wysokim, oznacza to, øe wyúwietlacz znajduje siÍ w†stanie WAIT. Prawdopodobn¹ przyczyn¹ jest uszkodzenie sterownika LCD. Przed uznaniem LCD za niesprawny naleøy jeszcze sprawdziÊ, czy na styku 17 z³¹cza J1 wystÍpuje poziom ìHî - poziom ìLî moøe blokowaÊ pracÍ LCD.
Programowa obs³uga interfejsu Do pierwszych testÛw proponujÍ pod³¹czenie sterownika do komputera z†uruchomionym programem terminalowym. Zworka na J2 musi zwieraÊ styki 1-2. W†programie terminala ustawiamy nastÍpuj¹ce parametry transmisji: 4800/8n1, sterowanie przep³ywem - sprzÍt. Aby wyúwietliÊ punkt, naleøy wys³aÊ przez RS komendÍ: p XX YY,
gdzie:
Elektronika Praktyczna 12/2002
XX, YY - odpowiednio wspÛ³rzÍdna X†, wspÛ³rzÍdna Y†(szesnastkowo po dwa znaki ASCII) np.: sekwencja p0312 spowoduje wyúwietlenie punktu na ekranie o†wspÛ³rzÍdnych x=3, y=12. Przekroczenie zakresu wspÛ³rzÍdnych (wyjúcie poza ekran) niczym nie grozi, po prostu rozkaz nie zostanie wykonany. Procedura wyúwietlania punktu jest podstaw¹ dla wszystkich innych operacji. Kaød¹ operacjÍ moøna przerwaÊ, wysy³aj¹c znak ESC. Ze wzglÍdu na specyfikÍ wyúwietlacza i†programu nie naleøy umieszczaÊ punktÛw o†wspÛ³rzÍdnej Y=0. Aby wyúwietliÊ znak alfanumeryczny, naleøy wys³aÊ komendÍ: c XX YY CHAR,
gdzie: XX i†YY - wspÛ³rzÍdne lewego gÛrnego rogu znaku CHAR - znak - np.: c0001a spowoduje wyúwietlenie litery ìaî w†lewym gÛrnym rogu ekranu. Aby wyúwietliÊ tekst, naleøy wys³aÊ komendÍ: t XX YY CHAR CHAR CHAR... CHAR CR+LF,
gdzie:
XX i†YY to wspÛ³rzÍdne lewego gÛrnego rogu tekstu, CHAR - znaki tekstu, CR+LF - znak koÒca linii. Np.: t0001Ala ma kota [Enter] umieúci w†lewym gÛrnym rogu tekst ìAla ma kotaî. Znakiem koÒca linii moøe byÊ kod LF ($0A), CR ($0D) lub CR+LF ($0D0A). Wpisanie tekstu moøna teø zakoÒczyÊ, wysy³aj¹c kod ESC ($1B). Do przewijania ekranu w†pionie s³uøy komenda: s YY,
gdzie YY - oznacza przesuniÍcie ekranu w†stosunku do punktu 00. Wysy³aj¹c w†rÛwnych odstÍpach czasu rozkaz ìs YYî, gdzie YY bÍdzie zmieniaÊ siÍ od 0 do 63, uzyskamy p³ynne przewijanie ca³ego ekranu z†gÛry na dÛ³. Niestety wyúwietlacz jest doúÊ wolny i†ci¹g³e przewijanie nie wygl¹da zbyt dobrze. Ekran czyúcimy, wysy³aj¹c literÍ C. Ekran pozytywowy (ustawienie domyúlne) uzyskujemy, wysy³aj¹c z01, negatywowy z00. ObrÛcenie obrazu ekranu w†pozio-
41
Interfejs graficznych wyświetlaczy LCD WYKAZ ELEMENTÓW
Rys. 6. Rozmieszczenie elementów na płytce drukowanej interfejsu
mie uzyskujemy komend¹ x01, ekran normalny x00. ObrÛcenie obrazu ekranu w†pionie uzyskujemy komend¹ y01, ekran normalny y00. ZmianÍ orientacji ekranu uzyskamy komend¹ o01, orientacja normalna o00. Zmiana orientacji ekranu lub obrÛcenie obrazu ekranu w†osi X czy Y dotyczy znakÛw, ktÛre wpiszemy po wys³aniu odpowiedniej komendy. Inaczej mÛwi¹c, komendy te zmieniaj¹ sposÛb obliczania wspÛ³rzÍdnych podczas wyúwietlania punktu. W³¹czenie podúwietlania LCD uzyskamy po wydaniu komendy: L01, zgaszenie: L00. Polskie znaki diaktryczne oraz znaki specjalne maj¹ nastÍpuj¹ce kody (szesnastkowo): •†- 01, Ɔ02, †- 03, £†- 04, —†- 05, ”†- 06, å†- 07, è†- 08, ؆- 09, •†- 11, Ɔ12, †- 13, £†- 14, —†- 15, ”†- 16, å†- 17, è†- 18, ؆- $19, zanegowana
42
spacja - 80, odtwarzanie 81, odtwarzanie do ty³u 82, szybko naprzÛd 83, szybko w†ty³ 84, stop 85, pauza 86, zapis 87, ramki 88...92. UdostÍpniamy wszystkie programy w postaci ürÛd³owej, dziÍki czemu moøna je do³¹czyÊ do swojego oprogramowania. Aby u³atwiÊ wykorzystanie procedur, poniøej znajduj¹ siÍ ich opisy: lcd_clr: ;Czysci caly LCD ;WE: R4 - wzor wypelnienia ;Zmienia: Acc, R7, R6 lcd_point ;Zapala/gasi punkt ;R2 - X ;R3 - Y ;R4 - 1-zapala, 0-gasi ;Zmienia: lcd_char ;Wypisuje znak na wyswietlacz
Rezystory R1...R4, R6, R8: 10kΩ R5: 330Ω R7: 100kΩ Pot1: potencjometr 10kΩ Kondensatory C1: 100µF C2, C3: 100nF C4: 10µF/16V C6, C7: 33pF C8: 470nF Półprzewodniki T1, T2: BC557 U1: AT89C2051 U2: 74HC14 Różne J1: listwa goldpin 20x1 J2: listwa goldpin 3x1 J3: listwa goldpin 4x1 Q1: 11.0592MHz Wyświetlacz graficzny P128−6n2
;Acc;R2 ;R3 ;R4 -
kod znaku X Y 1-zapala, 0-gasi
lcd_text ;Wypisuje tekst na wyswietlacz ;R2 - X ;R3 - Y ;R4 - 1-zapala, 0-gasi ;DPTR - adres tekstu ; zakonczony 0
S³awomir Skrzyñski, AVT
[email protected] Wzory p³ytek drukowanych w formacie PDF s¹ dostÍpne w Internecie pod adresem: http://www.ep.com.pl/ ?pdf/grudzien02.htm oraz na p³ycie CD-EP12/2002B w katalogu PCB.
Elektronika Praktyczna 12/2002
Mikroprocesorowa ładowarka P R Oakumulatorów J E K T Y
Mikroprocesorowa ładowarka akumulatorów AVT−5091 Jednym z†wielu zalecanych przez producenta zastosowaÒ mikrokontrolerÛw rodziny ST62 jest sterowanie ³adowarkami. Postanowiliúmy opracowaÊ taki uk³ad przeznaczony do ³adowania øelowych akumulatorÛw kwasowych. Rekomendacje: ze wzglÍdu na zautomatyzowanie ³adowania akumulatorÛw øelowych polecamy to urz¹dzenie uøytkownikom systemÛw alarmowych, UPS-Ûw, domowych central telefonicznych itp.
Przy regulowanym pr¹dzie ³adowania od 0,1 do 1A i†napiÍciu nominalnym 12 V, uk³ad umoøliwia ³adowanie akumulatorÛw o†pojemnoúci do 20 Ah. Akumulatory takie s¹ stosowane w†awaryjnych uk³adach podtrzymania zasilania (UPS) i†oúwietlenia w†telekomunikacji, energetyce oraz w†urz¹dzeniach alarmowych. Akumulator øelowy jest akumulatorem wymagaj¹cym minimalnej obs³ugi, zamkniÍtym w†szczelnej obudowie. Elektrolit jest zawarty w†øelu krzemowym (technologia dryfit), dziÍki czemu nie ma ryzyka pochlapania sobie ubrania kwasem siarkowym. Akumulatory øelowe charakteryzuj¹ siÍ duø¹ trwa³oúci¹ i†dobr¹ odpornoúci¹ na prze³adowanie. Gwarantuj¹ wysok¹ niezawodnoúÊ oraz bezpieczeÒstwo eksploatacji.
Budowa uk³adu
Rys. 1. Schemat blokowy ładowarki
Elektronika Praktyczna 12/2002
Schemat elektryczny ³adowarki przedstawiono na rys. 1. Jej ìsercemî jest mikrokontroler ST62T20C, ktÛry jest wyposaøony m.in. w 8bitowy przetwornik A/C wykorzystywany w†uk³adzie do pomiaru napiÍcia. £adowarka sk³ada siÍ z†nastÍpuj¹cych blokÛw funkcjonalnych (rys. 1): - sterowania, - ³adowania, - sygnalizacji,
- zasilania, - zasilania zewnÍtrznego. Blok ³adowania jest czÍúci¹ wykonawcz¹ uk³adu, przy³¹czaj¹c¹ ³adowany akumulator do ürÛd³a pr¹du. Dodatkowo, blok wykonawczy zawiera elementy do pomiaru natÍøenia pr¹du i†napiÍcia na zaciskach akumulatora podczas jego ³adowania. Blok sygnalizacji tworz¹ trzy diody LED oraz sygnalizator akustyczny. Ich zadaniem jest sygnalizowanie stanu pracy bloku ³aduj¹cego oraz informowanie o†stopniu na³adowania akumulatora. Blok zasilania dostarcza niezbÍdnych napiÍÊ do zasilania czÍúci cyfrowej uk³adu. Zasilacz zewnÍtrzny jest ürÛd³em pr¹du dla ³adowanego akumulatora. Schemat elektryczny uk³adu ³adowarki przedstawiono na rys. 2. DziÍki niewielkiej liczbie elementÛw uk³ad moøe wykonaÊ kaødy elektronik amator. Obwody pomiarowe (do pomiaru pr¹du i†napiÍcia) s¹ do³¹czone do wyprowadzeÒ PB1 i†PB2, ktÛre skonfigurowano jako analogowe wejúcia przetwornika A/C. W obwodzie do pomiaru napiÍcia s³uøy prosty dzielnik, sk³adaj¹cy siÍ z†dwÛch rezystorÛw R7 i†R8 o†tak dobranych wartoúciach, aby napiÍcie na wejúciu pomiarowym PB1 nie przekroczy³o napiÍcia zasilania mikrokontrolera. Natomiast w obwodzie do pomiaru pr¹du jest samodzielnie wykonany z†drutu oporowego rezystor o†wartoúci oko³o 1,3Ω/5W. Sterowanie przekaünikiem realizowane jest poprzez wyprowa-
43
Mikroprocesorowa ładowarka akumulatorów
Rys. 2. Schemat elektryczny ładowarki
dzenie PA0, skonfigurowane jako wyjúcie cyfrowe typu push-pull. Diody sygnalizacyjne do³¹czone s¹ do wyprowadzeÒ PA1...PA3, skonfigurowanych takøe jako push-pull. Sygnalizator akustyczny zosta³ bezpoúrednio do³¹czony do wyprowadzenia PB0. Jedyny w†uk³adzie przycisk steruj¹cy P1 zosta³ do³¹czony do wyprowadzenia PB7 skonfigurowanego jako wejúcie cyfrowe z†podci¹ganiem. Wyjaúnienie sposobu dzia³ania uk³adu u³atwi graf, ktÛry przedstawiono na rys. 3. Zosta³ on przygotowany za pomoc¹ programu ST6-Realizer. Po w³¹czeniu zasilania mikrokontroler jest zerowany, po czym program mikrokontrolera wchodzi w†stan pocz¹tkowy OCZEKUJE. Po pod³¹czeniu akumulatora przeznaczonego do ³adowania i†naciúniÍciu przycisku P1 zostaje spe³niony warunek DO_PRACY. Program wchodzi w†stan TEST, w†ktÛrym akumulator przeznaczony do ³adowania zostaje poddany testowaniu. Test polega na pomiarze napiÍcia akumulatora i†zaklasyfikowaniu go do ³adowania lub nie. W†przypadku, gdy napiÍcie akumulatora ma wartoúÊ wiÍksz¹ niø 12V, zostaje spe³niony warunek U_OK i†program przechodzi w†stan
44
NALADOWANY. Natomiast, gdy napiÍcie na akumulatorze bÍdzie niøsze od 8V lub w†ogÛle go nie bÍdzie, zostaje spe³niony warunek U_BRAK. Program przechodzi w†stan AWARIA. Jeøeli napiÍcie bÍdzie mieúci³o siÍ w†przedziale od 9†V do 12†V, to zostaje spe³niony warunek U_NISKIE i†program przechodzi w†stan LADOWANIE. W†tym stanie na wyjúciu steruj¹cym przekaünikiem pojawia siÍ wysoki poziom napiÍcia, powoduj¹c jego zadzia³anie. WÛwczas rozpoczyna siÍ ³adowanie akumulatora. Stan ³adowania sygnalizowany jest impulsowym úwieceniem diody LED (miga co 0,5s).
Podczas ³adowania akumulatora program oczekuje na spe³nienie jednego z†trzech warunkÛw: PRAD_ZA_DUZY, U_OK2, ZAKONCZ_£ADOWANIE2. Warunek PRAD_ZA_DUZY zostanie spe³niony w†przypadku przekroczenia maksymalnego pr¹du ³adowania. W†takim przypadku program przejdzie w†stan AWARIA, w†ktÛrym przekaünik zostaje od³¹czony, a†dioda sygnalizacyjna AWARIA wraz z†sygnalizatorem akustycznym zostan¹ w³¹czone (miga co 0,5 s). Spe³nienie warunku ZAKONCZ_LADOWANIE2 nast¹pi po naciúniÍciu przycisku P1. Program przejdzie wtedy w†stan OCZEKUJE, przerywaj¹c proces ³adowania akumulatora. Gdy podczas ³adowania napiÍcie na akumulatorze przekroczy wartoúÊ 13,8 V, zostaje spe³niony warunek U_OK2 i†nastÍpuje przejúcie programu w†stan NALADOWANY. Stan ten jest sygnalizowany impulsowym úwieceniem diody LED_SPRAWNY oraz przez sygnalizator piezoelektryczny (sygna³ akustyczny co 2†s). Wyjúcie ze stanu AWARIA lub NALADOWANY oraz przejúcie w†stan pocz¹tkowy OCZEKUJE nast¹pi po naciúniÍciu przycisku P1. WÛwczas zostan¹ spe³nione warunki KASOWANIE lub ZAKONCZ_LADOWANIE.
Montaø i†uruchomienie Na rys. 4 przedstawiono schemat montaøowy p³ytki drukowanej, na ktÛrej umieszczono wszystkie elementy uk³adu z†wyj¹tkiem zasilacza zewnÍtrznego. Montaø rozpoczynamy od montaøu z³¹cz úrubowych i†przekaünika. Ze wzglÍdu na doúÊ duøe pr¹dy p³yn¹ce w†obwodzie ³adowania, lutowanie elementÛw po-
Rys. 3. Algorytm działania programu
Elektronika Praktyczna 12/2002
Mikroprocesorowa ładowarka akumulatorów
Rys. 4. Rozmieszczenie elementów na płytce drukowanej
winno byÊ staranne i†solidne. W†dalszej kolejnoúci montujemy podstawkÍ pod mikrokontroler oraz pozosta³e elementy elektroniczne. W†przypadku braku rezystora o†rezystancji 1,3 Ω i†odpowiednio duøej mocy, moøemy go wykonaÊ
Elektronika Praktyczna 12/2002
samodzielnie z†drutu oporowego. Za pomoc¹ najzwyklejszego omomierzem odmierzamy odcinek drutu o†rezystancji oko³o 1,3 Ω, nastÍpnie nawijamy go na dowolnym rezystorze o†mocy 5†W†i†rezystancji 5Ω. KoÒcÛwki rezystora i†drutu skrÍcamy razem. Dla pewnoúci styku moøemy sprÛbowaÊ je razem polutowaÊ i†tak przygotowany rezystor przykrÍcamy do z³¹cza úrubowego oznaczonego Rx. Zanim w³oøymy w†p³ytkÍ zaprogramowany mikrokontroler, naleøy dokonaÊ sprawdzenia wartoúci napiÍÊ zasilaj¹cych. Po wykonaniu czynnoúci sprawdzaj¹cych moøemy osadziÊ mikrokontroler w podstawce i†po pod³¹czeniu akumulatora i†w³¹czeniu zasilania rozpocz¹Ê jego ³adowanie. Krzysztof Górski, AVT
[email protected] Wzory p³ytek drukowanych w formacie PDF s¹ dostÍpne w Internecie pod adresem: http://www.ep.com.pl/ ?pdf/grudzien02.htm oraz na p³ycie CD-EP12/2002B w katalogu PCB.
WYKAZ ELEMENTÓW Rezystory R1...R3, R8: 3,9kΩ R4...R6: 820Ω R7: 15kΩ R9: 1kΩ Rx: 1,3Ω/5W ceramiczny Kondensatory C1, C4: 100nF C2: 1000µF/25V C3: 470µF/25V C5, C6: 30pF C7: 1µF/16V Półprzewodniki D1: 1N4148 D2...D5: LED D6: dowolna dioda prostownicza 5A T1: BC237 US1: ST62T20C − zaprogramowany US2: 7805 Różne X1: 8MHz BUZER Złącza śrubowe 2xARK 3 szt.
45
Yampp−3/USB P R O J E K
T
Y
Yampp−3/USB, część 1 Nowe wcielenie popularnego odtwarzacza MP3
We wrzeúniowym numerze EP opisa³em budowÍ sprzÍtowego odtwarzacza MP3 zaprojektowanego przez Jespera Hansena i nazwanego yampp-3. W†tym artykule skupiÍ siÍ na opisie jego nowego wcielenia - yamppa-3 wyposaøonego w†interfejs USB. Jest on zbudowany podobnie jak poprzednik, lecz dziÍki wyposaøeniu w†interfejs USB oraz impulsow¹ przetwornicÍ zasilaj¹c¹ zyska³ nowe moøliwoúci. Rekomendacje: nowoczesny odtwarzacz dla fanÛw empetrÛjkowych nagraÒ, doskonale dostosowany do wspÛ³pracy z†programowymi odtwarzaczami stosowanymi w†PC.
Niebagateln¹ zalet¹ prezentowanego yamppa jest to, øe wyposaøono go w†nowszy, znacznie lepszy od poczciwego AT90S8515 procesor - ATmega161. Jego g³Ûwnym atutem jest dwukrotnie wiÍksza pojemnoúÊ pamiÍci Flash na program steruj¹cy odtwarzaczem. Kolejnym waønym ìdodatkiemî jest szybki, szeregowy interfejs USB umoøliwiaj¹cy ³atw¹ i†szybk¹ wymianÍ utworÛw zgromadzonych na do³¹czonym dysku twardym oraz ³atwy i†szybki sposÛb uaktualniania oprogramowania bez koniecznoúci otwierania obudowy odtwarzacza.
Moøliwoúci nowego yamppa Podobnie jak w†poprzedniku, jako ürÛd³o plikÛw MP3 dla yamppa zastosowano 2,5-calowy twardy dysk, lecz nic nie stoi na przeszkodzie, aby zastosowaÊ zwyk³y 3,5-calowy dysk ze standardowego PC lub standardowy CD-ROM z†interfejsem ATAPI. Moøna do niego ìza³adowaÊî oprogramowanie przeznaczone dla standardowego yamppa-3 i†bÍdzie wtedy dzia³a³ jak poprzednik, lecz
46
wtedy interfejs USB pozostaje niewykorzystany. Po ìza³adowaniuî nowego oprogramowania odtwarzacz zyskuje nowe oblicze. Do sterowania odtwarzaczem s³uøy 4lub 8-przyciskowa lokalna klawiatura, dowolny pilot na podczerwieÒ lub szeregowy port komunikacyjny RS232 lub RS485. Opcjonalny port RS485 zosta³ przewidziany do wspÛ³pracy z†dodatkowym modu³em graficznego wyúwietlacza LCD i†klawiatury, tak aby moøna by³o umieúciÊ wyúwietlacz i†klawiaturÍ w†innym miejscu niø sam odtwarzacz (np. w†przypadku zamontowania yamppa w†samochodzie). Modu³ ten jest w†trakcie opracowywania, wiÍc nie mogÍ jeszcze podaÊ øadnych informacji na jego temat. Bezpoúrednio do yamppa moøna oczywiúcie do³¹czyÊ standardowy alfanumeryczny wyúwietlacz LCD o†organizacji od 2x16 do 4x20 znakÛw. Na wyúwietlaczu LCD wyúwietlane s¹ informacje o†bieø¹cej playliúcie, nazwie i†wykonawcy utworu, a takøe linijka ukazuj¹ca postÍp w†odtwarzaniu danego utworu oraz czas trwania utworu. Moøna teø zmieniÊ wy-
Elektronika Praktyczna 12/2002
Yampp−3/USB toúci poprzez interfejs USB. W†formacie YADL przewidziano kilka dodatkowych moøliwoúci, ktÛre jeszcze nie zosta³y wykorzystane. Przyk³adem moøe byÊ specjalna baza systemowych plikÛw MP3 zawieraj¹cych g³osowe komunikaty odtwarzane w†odpowiedzi na naciskanie klawiszy lub podczas przegl¹dania menu czy playlist. Ma to na celu u³atwienie obs³ugi yamppa niewyposaøonego w†wyúwietlacz LCD lub w†trakcie prowadzenia samochodu.
Interfejs USB Jak sama nazwa wskazuje, do przesy³ania plikÛw MP3 na dysk yamppa-3/USB uøyto popularnego úwietlanie czasu trwania utworu Nowy format dysku interfejsu szeregowego USB 1.0. na wyúwietlanie czasu pozosta³eSpecjalnie dla potrzeb yamppa Pozwala on na przesy³anie dago do koÒca utworu (Remain zosta³ opracowany nowy format nych z†prÍdkoúci¹ 300...400 kiloTime). Ze wzglÍdu na wprowa- dysku nazwany YADL (Yampp bajtÛw na sekundÍ, a†wiÍc za³adzenie obs³ugi playlist, sterowaAdvanced Disk Layout). Nasuwa dowanie jednego utworu trwaj¹cenie nowym yamppem jest nieco siÍ pytanie: ìpo co?î. go oko³o 4†minut zajmuje oko³o inne niø jego poprzednika. OpG³Ûwnym celem przyjÍcia no10 sekund. Dodatkowo, dziÍki rÛcz standardowych funkcji typu wego formatu by³o jak najwiÍksze moøliwoúci samoprogramowania Play, Stop, Pauza, NastÍpny usprawnienie obs³ugi plikÛw MP3, siÍ procesora ATmega161, moøliutwÛr, Poprzedni utwÛr, Szybkie w†tym obs³ugi playlist, czyli moøwa jest wymiana g³Ûwnego oprogprzewijanie do przodu i†do ty³u, liwoúÊ tworzenia dowolnych list ramowania odtwarzacza poprzez w³¹czenia lub wy³¹czenia funkcji utworÛw do odtwarzania oraz ³¹cze USB bez koniecznoúci otLoudness i†Random oraz regulacji utworzenie bazy danych o†utwowierania obudowy i†pod³¹czania g³oúnoúci, nowy yampp posiada rach zawieraj¹cej ich nazwÍ, wyinterfejsu programuj¹cego. Do tego jeszcze funkcje Menu, celu potrzebny jest jedynie Playlist i†Play Mode. krÛtki program bootloadera W yamppie 3 USB zastosowano nowy Funkcja Menu umoøliwia umieszczony w†dostÍpnej paformat dysku nazwany YADL (Yampp sterowanie odtwarzaczem miÍci Flash procesora (jedAdvanced Disk Layout), dzięki któremu za pomoc¹ jedynie 4 klanorazowo podczas uruchasposób przechowywania danych na dysku wiszy. Po w³¹czeniu memiania yamppa). zoptymalizowano pod kątem MP3. nu jest wyúwietlany spis Zastosowany w†roli interwszystkich dostÍpnych fejsu uk³ad FT8U245AM jest funkcji. Klawiszami g³oúnoúci wykonawcÍ, d³ugoúÊ, czas trwania, kompletnym i†³atwym w†uøyciu bieramy interesuj¹c¹ nas funkcjÍ szybkoúÊ prÛbkowania i†kilka insprzÍgiem pomiÍdzy magistral¹ i†potwierdzamy klawiszem Play. nych waønych informacji. Poza mikrokontrolera a†z³¹czem USB Funkcja playlist jest jedn¹ z†bartym format ten zosta³ przystosoi†ma wewn¹trz wszystkie uk³ady dziej interesuj¹cych, poniewaø powany do obs³ugi relatywnie d³upotrzebne do nawi¹zania, synzwala na przegl¹danie zawartoúci gich plikÛw, jakimi s¹ pliki MP3 chronizacji i†kontroli komunikacji dysku bez przerywania odtwarzaoraz umoøliwia prost¹ realizacjÍ z†komputerem PC oraz dwa odnia. Najpierw moøemy wybraÊ ³adowania danych na dysk podzielne bufory FIFO na wysy³ane interesuj¹c¹ nas playlistÍ, po czym przez interfejs USB. Ma to na i†odbierane dane. z†niej wybraÊ konkretny utwÛr, celu zminimalizowanie obci¹øenia Po zainstalowaniu na kompuøeby w†koÒcu nakazaÊ odtwarzaprocesora yamppa przez dodatkoterze PC dostarczonych przez proczowi odtwarzanie wybranego we procedury niezwi¹zane z†odducenta - firmÍ FTDI - sterowniutworu. Podczas przegl¹dania czytem strumienia danych, lecz kÛw, widziany jest jako szybki yampp nie przerywa odtwarzania wymagane do poprawnego odczywirtualny port komunikacyjny poprzedniego utworu, jedynie nie tu zawartych na dysku plikÛw. COM. Takie podejúcie do sprawy wyúwietla o†nim informacji. FunW†trakcie ³adowania plikÛw wymaga uøycia specjalnej aplikakcja Play Mode jest podobna do wiÍkszoúÊ ìczarnej robotyî zosta³a cji uruchomionej na komputerze funkcji Repeat w†odtwarzaczach przerzucona na program komunii†s³uø¹cej do przygotowania CD i†umoøliwia odtwarzanie ìw kacyjny uruchomiony na kompui†transmisji danych poprzez wirkÛ³koî jednego utworu, jednej terze PC, a†procesor yamppa jetualny port COM. Oczywiúcie playlisty, wszystkich playlist b¹dü dynie realizuje proste operacje transmisja jest dwukierunkowa, zatrzymanie odtwarzacza po zaodczytu/zapisu wybranych sektowiÍc jest moøliwy rÛwnieø odczyt koÒczeniu bieø¹cej playlisty. rÛw dysku i†transmisjÍ ich zawarzawartoúci dysku yamppa poprzez Rys. 1. Schemat blokowy odtwarzacza
Elektronika Praktyczna 12/2002
47
Yampp−3/USB
Rys. 2a. Schemat elektryczny sterownika, stabilizatora napięcia zasilającego i dekodera MP3
48
Elektronika Praktyczna 12/2002
Yampp−3/USB
Rys. 2.b. Schemat elektryczny interfejsów: USB, RS−232, RS−485 i zasilacza impulsowego
USB. Aplikacja ta pomaga rÛwnieø w†przygotowaniu i†zarz¹dzaniu playlistami, w†úci¹ganiu wczeúniej za³adowanych plikÛw MP3 z†powrotem na dysk w†komputerze oraz w†uaktualnianiu oprogramowania yamppa.
waÊ w†instalacji elektrycznej samochodu. WydajnoúÊ pr¹dowa zasilacza wynosi oko³o 2†A. Umoøliwia to wiÍc zasilenie elektroniki yamppa wraz z†2,5-calowym twardym dyskiem lub uzyskanie napiÍcia do zasilenia 5-woltowej czÍúci elektroniki 3,5-calowego Opis budowy dysku lub CD-ROM-a. Na schemaSchemat blokowy odtwarzacza cie yamppa moøemy jeszcze znaprzedstawiono na rys. 1, a†scheleüÊ interfejs RS232 w†postaci mat elektryczny na rys. 2. ìSeruk³adu IC4 - MAX202CSE lub cemî uk³adu jest mikrokontroler zamiennie interfejs RS485 zbudojednouk³adowy IC1 - ATwany przy uøyciu uk³adu mega161 firmy Atmel. Jest IC12 - MAX481CSA. Uk³ad Najważniejszą sprzętową modyfikacją on odpowiedzialny za ododtwarzacza zosta³ zmonwprowadzoną w nowego yamppa jest czyt i†zapis danych na towany na niewielkiej p³ytwbudowanie interfejsu USB, za pomocą dysk, przekazywanie struce drukowanej o†wymiaktórego może on szybko wymieniać dane mienia danych MPEG do rach 105 x†70 mm - idenz aplikacjami PC. sprzÍtowego dekodera tycznych z†wymiarami 2,5VS1001, obs³ugÍ klawiatucalowego dysku. ry, wyúwietlacza, interfejsu Montaø i†uruchomienie USB oraz za dekodowanie rozkaT1 i†d³awikiem L3. Jako tranzysSchemat montaøowy p³ytki odzÛw zdalnego sterowania. Podobtor kluczuj¹cy wykorzystano MOStwarzacza pokazano na rys. 3. Ze nie jak w†standardowym yamppieFET z†kana³em typu P, co w†powzglÍdu na zastosowanie elemen3, oprÛcz mikrokontrolera znaj³¹czeniu z†moøliwoúci¹ osi¹gniÍtÛw montowanych powierzchniodziemy tu 32 kB zewnÍtrznej cia 100% wype³nienia przez stewo, montaø uk³adu naleøy przepropamiÍci RAM (uk³ad IC3), zatrzask rownik IC9 pozwala na uzyskanie wadziÊ szczegÛlnie starannie. NajadresÛw (IC2), dekoder MPEG stabilnego napiÍcia wyjúciowego lepiej jest zastosowaÊ podan¹ po(IC7), stabilizator napiÍcia 3,3†V 5V przy napiÍciu wejúciowym niøej kolejnoúÊ montaøu, co ustrze(IC5) oraz konwerter poziomÛw w†zakresie od 7†do 15V. øe nas przed uszkodzeniem uk³aw†postaci uk³adu IC6 - 74LVC245. Dioda D3 i†transil D4 zabezpiedÛw scalonych przez üle dzia³aj¹cy Nowymi elementami w†tym odczaj¹ yamppa przed odwrotnym zasilacz, u³atwi uruchomienie oraz twarzaczu s¹: uk³ad IC11 - czyli pod³¹czeniem zasilania oraz przed usuniÍcie ewentualnych b³ÍdÛw. interfejs USB - FT8U245AM firmy przepiÍciami mog¹cymi wystÍpo-
Elektronika Praktyczna 12/2002
FTDI wraz z†dekoderem adresowym IC8 - 74HC138 oraz impulsowa przetwornica step-down, daj¹ca na wyjúciu napiÍcie 5†V†potrzebne do zasilania pozosta³ej elektroniki i†do³¹czonego twardego dysku. Interfejs USB jest widziany przez procesor jako komÛrka zewnÍtrznej pamiÍci RAM o†adresie 8000h. Zasilacz zosta³ oparty na scalonym sterowniku przetwornicy IC9 - MAX1626ESA wraz z†tranzystorem kluczuj¹cym
49
Yampp−3/USB Na pocz¹tku naleøy zamontowaÊ wszystkie rezystory oraz kondensatory ceramiczne, diodÍ LED - D1 oraz elementy zasilacza, czyli IC9, T1, L3, diody D2...D4, kondensatory C18 i†C19, z³¹cze J5 i†przewlekane rezystory ogranicznika pr¹dowego R4 i†R7. Waøne jest, aby jako C18 i†C19 zastosowaÊ specjalne kondensatory przystosowane do pracy impulsowej, o†niskim wspÛ³czynniku ESR (np. Sanyo Organic typ OS-CON). NastÍpnie do z³¹cza J5 pod³¹czamy zasilacz pr¹du sta³ego o†napiÍciu od 9†do 12V i†sprawdzamy prawid³owoúÊ pracy zasilacza poprzez pomiar napiÍcia VCC*. Powinno wynosiÊ 5V ±†5%. Jeúli napiÍcie jest prawid³owe oraz úwieci dioda D1, od³¹czamy zasilacz i†moøemy przyst¹piÊ do kolejnego etapu montaøu. W nastÍpnym etapie naleøy zamontowaÊ pozosta³e elementy za wyj¹tkiem uk³adu dekodera MP3 - IC7. Naleøy pamiÍtaÊ, øe nie moøna jednoczeúnie zamontowaÊ uk³adÛw IC4 i†IC12. Trzeba wybraÊ albo interfejs RS232 i†zamontowaÊ uk³ad MAX202, albo interfejs RS485 i†zamontowaÊ uk³ad MAX481. Po ponownym pod³¹czeniu zasilania naleøy zmierzyÊ napiÍcie za stabilizatorem IC5 (na dodatnich koÒcÛwkach kondensatorÛw C5 lub C6). Powinno ono wynosiÊ 3†lub 3,3 V†w†zaleønoúci od wersji zastosowanego stabilizatora. Jeøeli napiÍcie jest prawid³owe, moøemy w koÒcu zamontowaÊ dekoder IC7. NastÍpn¹ czynnoúci¹ jest zaprogramowanie mikrokontrolera programem bootloadera (plik yampp3_boot.hex dostÍpny na CDEP12/2002B). W†tym celu pod³¹-
50
czamy interfejs programuj¹cy do portu drukarkowego komputera, 10-stykow¹ wtyczkÍ interfejsu (opisaliúmy go przy okazji opisu poprzedniej wersji yamppa) wk³adamy do z³¹cza J1, w³¹czamy zasilanie yamppa i†uruchamiamy program ³aduj¹cy na komputerze. Opis sposobu programowania mikrokontrolera jest identyczny jak w†przypadku poprzedniego yamppa i†podany by³ w†EP10/2002. Po zaprogramowaniu mikrokontrolera bootloaderem musimy wykonaÊ jeszcze jedn¹ waøn¹ czynnoúÊ. Øeby procesor yamppa mÛg³ skorzystaÊ z†bootloadera, trzeba go poinformowaÊ o†jego istnieniu. Do tego celu s³uø¹ specjalne opcje konfiguracyjne procesora, czyli tak zwane bity fuse. Aby ustawiÊ te opcje wykorzystuj¹c program yapp, naleøy skorzystaÊ z†menu Program>Lock Bits & Fuses. Po wywo³aniu tej funkcji w†okienku Fuses naleøy zaznaczyÊ nastÍpuj¹ce pozycje: CKSEL0, CKSEL2, BOODLEVEL, BOOTRST. Wszystkie pozosta³e opcje musz¹ pozostaÊ niezaznaczone, co zosta³o pokazane na rys. 4. NastÍpnie naleøy klikn¹Ê Write Fuses, øeby wys³aÊ ustawienia do procesora yamppa. Poniewaø bity fuse nie s¹ kasowane razem z†pamiÍci¹ Flash mikrokontrolera, operacja ta jest jednorazowa i†nie jest konieczne jej powtarzanie po zmianie oprogramowania. Romuald Bia³y http://www.yamppsoft.prv.pl/ Wzory p³ytek drukowanych w formacie PDF s¹ dostÍpne w Internecie pod adresem: http://www.ep.com.pl/ ?pdf/grudzien02.htm oraz na p³ycie CD-EP12/2002B w katalogu PCB.
WYKAZ ELEMENTÓW Rezystory (SMD w obudowach 0805 jeśli nie zaznaczono inaczej) R1, R8, R12, R15: 10kΩ R2: 1kΩ R3: 47Ω R4, R7: 0,1Ω standardowy 0,25W R5: 5kΩ 23B Trimpot R6: 1MΩ R9: 4,7kΩ R10, R11: 15Ω R13, R14, R23: 100kΩ R18, R19: 10Ω R20: 1,5kΩ R24: 470Ω Kondensatory C1...C4: 33pF 0805 C5...C7: 10µF/16V: ELNA RV2_4 C8, C11...C17, C20...C22, C24...C27: 100nF 0805 C9, C10: 100µF/10V ELNA RV2_63 C18: 220µF/16V (przewlekany LOW ESR) C19: 47µF/16V (przewlekany LOW ESR) C23: 470nF C3225 Połprzewodniki IC1: ATmega161 TQFP44 IC2: 74HC573 SO20L IC3: 62256 SO28L IC4: MAX202CSE SO16 IC5: LP2980−3,3 SOT23−5 IC6: 74LVC245 SO20L IC7: VS1001 SOIC−28 IC8: 74HC138D SO16 IC9: MAX1626ESA SO8 IC11: FT8U245AM QFP32 IC12: MAX481CSA SO8 T1: MTD20P03HDL DPAK T2: BC817 SOT23 D1: EL17−21 LED0805 D2: PRLL5818 SOD87 D3: LL4004 SOD87 D4 (Transil): SM15T15A SOD15 Różne L1, L2: 10µH L1210 L3: 22µH HM50 Q1: 7,3728 MHz HC49U−V Q2: 12,288 MHz HC49U−V Q3: 6,00MHz 3−końcówkowy rezonator ceramiczny J1: PROG 5*2 0,1" header J2: DISPLAY 8*2 0.1" header J3: RS−232 3*1 0.1" header J4: IR 3*1 0.1" header J5: POWER 2*1 0.1" header J6: Headphones 3,5mm Stereo JACK J7: ATA_IF 44−pin złącze − rozstaw 2mm J8: USB Gniazdo USB Typu B S1: RESET ALPS_45
Elektronika Praktyczna 12/2002
S P R Z Ę T
No wy zestaw ew aluacyjny dla mikrok ontroleró w H8/300 TTiny iny Nowy ewaluacyjny mikrokontroleró ontrolerów Firma MSC jest europejskim promotorem mikrokontrolerÛw firmy Hitachi. OprÛcz dzia³aÒ czysto handlowych inøynierowie MSC opracowuj¹ takøe niebanalne zestawy ewaluacyjne, z†ktÛrych jeden przedstawiamy w†artykule.
Takøe w†Polsce MSC przyk³ada szczegÛln¹ uwagÍ do promocji mikrokontrolerÛw produkowanych przez Hitachi, co przejawia siÍ m.in. wprowadzeniem do krajowej oferty zestawu H8 Tiny SDK+. ìSercemî tego zestawu jest 16-bitowy mikrokontroler z†rodziny Tiny H8/3664F, ktÛry wyposaøono w†programowan¹ w†systemie pamiÍÊ Flash. W†otoczeniu tego uk³adu znajduj¹ siÍ m.in.: alfanumeryczny, podúwietlany wyúwietlacz LCD 2†x†16 znakÛw, interfejs RS232 z†konwerterem pozio-
Elektronika Praktyczna 12/2002
Mikrokontroler H8/3664F w skrócie:
mÛw, 8†diod LED do wykorzystania przez uøytkownika, 4†przyciski do wykorzystania przez uøytkownika, 2†potencjometry s³uø¹ce do ustawia napiÍÊ na wejúciach multipleksera analogowego wspÛ³pracuj¹cego z†przetwornikiem A/C, interfejs
✦ rdzeń H8/300H, ✦ maksymalna częstotliwość taktowania: 16 MHz, ✦ pojemność pamięci Flash: 32 kB, ✦ pojemność pamięci RAM: 2 kB, ✦ pojemność wbudowanej pamięci EEPROM: 512 B, ✦ wbudowane porty komunikacyjne: SCI i I2C, ✦ wbudowane dwa 8−bitowe timery, ✦ wbudowany 10−bitowy przetwornik A/C z 8− kanałowym multiplekserem analogowym, ✦ 37 uniwersalnych linii I/O, ✦ wbudowany interfejs OnChipDebug.
51
S P R Z Ę T Zestaw prezentowany w artykule jest jednym z pierwszych znanych nam przykładów, kiedy to firma dystrybucyjna przygotowała dla swoich klientów zestaw ewaluacyjny i to o możliwoś− ciach przewyższających opracowania producenta. rej jakoúci programÛw przyk³adowych, ktÛre doskonale ilustruj¹ moøliwoúci mikrokontrolera H8/3664F. S¹ wúrÛd nich przyk³ady obs³ugi klawiatury PC, wyúwietlaczy LED i†LCD, przetwornika A/C, a†takøe - bardzo przydatny w†praktyce - obs³ugi UART-a. Jest to Rys. 1 umoøliwiaj¹cy do³¹czenie klawiatury PS2, a†takøe stabilizator napiÍcia zasilaj¹cego. Na z³¹cza wyprowadzono wszystkie linie I/O, magistralÍ I 2C i†wyjúcia przetwornikÛw C/A. Jak widaÊ, sprzÍtowa strona zestawu zosta³a dobrze pomyúlana, ale rÛwnie duø¹ atrakcj¹ jest oprogramowanie do³¹czone do zestawu. W†jego sk³ad wchodz¹: - Hitachi Embedded Workbench, czyli pe³na wersja kompilatora C/C++ dla mikrokontrolerÛw H8 Tiny, a†takøe asembler, linker i†generator bibliotek, - FDT (Flash Development Toolkit)shareware'owy program do programowania ISP (rys. 1) pamiÍci programu w†mikrokontrolerach produkowanych przez firmÍ Hitachi (szczegÛ³y: http://www.hmse.com/ products/fdt/index.htm), - CodeLines - generator aplikacji (rys. 2) dla mikrokontrolerÛw produkowanych przez firmÍ Hitachi, dziÍki ktÛremu obs³uga wyúwietla-
Rys. 2 czy LED i†LCD (takøe alfanumerycznych), klawiatur, przetwornikÛw A/C i†C/A, pamiÍci EEPROM i†Flash, a†takøe portÛw szeregowych jest znacznie uproszczona (szczegÛ³y: http://www.hmse.com/ products/codelines/index.htm). Dwa ostatnie z†wymienionych programy s¹ dostÍpne bezp³atnie na stronie www.hmse.com. Producent zestawu zadba³ o†dostarczenie jego uøytkownikom dob-
interesuj¹cy przyk³ad, kiedy to firma zajmuj¹ca siÍ dystrybucj¹ (miÍdzy innymi) mikrokontrolerÛw przygotowa³a dla swoich klientÛw zestaw o†moøliwoúciach przewyøszaj¹cych opracowania producenta. Nam zestaw siÍ bardzo podoba³ i†z†czystym sumieniem polecamy go projektantom zainteresowanym poznaniem nowoczesnych mikrokontrolerÛw H8 Tiny. Andrzej Gawryluk, AVT
Dodatkowe informacje Zestaw prezentowany w artykule udostêpni³a redakcji firma MSC Polska Sp. z o.o. tel.: (32) 330 54 50 mail:
[email protected], http: www.msc-ge.com. Dodatkowe informacje s¹ dostêpne w Internecie: - CodeLines: http://www.hmse.com/products/ codelines/index.htm, - Flash Development Toolkit: http://www.hmse.com/products/fdt/index.htm), - mikrokontrolery H8 Tiny: http://www.hitachieu.com/hel/ecg/products/micro/8_16bit/ h8300h_tiny/index.html, - narzêdzia wspomagaj¹ce projektowanie: www.hmse.com.
52
Elektronika Praktyczna 12/2002
S P R Z Ę T
Nowe mikrokontrolery z pamięcią Flash To pewnie monachijskie targi electronica 2002 sta³y siÍ jedn¹ z†przyczyn zintensyfikowania prac nad mikrokontrolerami z†pamiÍci¹ Flash przez dwie duøe firmy: MotorolÍ i†Ziloga. W†artykule przedstawiamy efekty tych prac, oficjalnie ujawnione w†ostatnich dniach paüdziernika 2002.
Rodziny uk³adÛw HC05 i†HC08 firmy Motorola w†latach swojej úwietnoúci by³y prekursorami wspÛ³czesnych mikrokontrolerÛw, ale lata zaniedbaÒ ze strony producenta, przede wszystkim ignorowanie rynkowych trendÛw†i†niezbyt przyjazne podejúcie do klientÛw o†nik³ym potencjale zakupowym spowodowa³y, øe miejsce tych uk³adÛw skutecznie zajͳy AVRíy, PICíe, flashowe wersje ë51, a†takøe ST62/ 72. Ciekawostk¹ jest fakt, øe te ostatnie s¹ jawnie konkurencyjn¹ propozycj¹ dla fanÛw HC08 - ich architektura jest bowiem bardzo bliskim odpowiednikiem HC08, a†co wiÍcej STM oferuje bezp³atny program narzÍdziowy (Mnemonic Translator - opublikowaliúmy go na CD-EP11/ 2002A) do konwersji programÛw napisanych w†asemblerze HC08 na asembler
Elektronika Praktyczna 12/2002
ST72. Takøe firma Metrowerks - dostawca narzÍdzi programistycznych dla Motoroli - dostosowa³a†swoje najnowsze úrodowisko CodeWarrior na potrzeby ST72. Dlaczego tak siÍ dzieje? Moim zdaniem powaønym b³Ídem Motoroli by³o bardzo pÛüne wprowadzenie do oferty mikrokontrolerÛw z†pamiÍci¹ programu typu Flash. Pierwsze tak wyposaøone uk³ady pojawi³y siÍ oko³o†trzech lat pÛüniej niø konkurencyjne, a†w†elektronice trzy lata to niemal wiecznoúÊ. Podobnie potoczy³y siÍ losy Ziloga, firmÍ maj¹c¹ niegdyú szansÍ - dziÍki legendarnemu Z80 - pokonaÊ Intela. Zilog wiele lat lekcewaøy³ rynek mikrokontrolerÛw, ale po pewnym czasie wprowadzi³ do produkcji proste mikrokontrolery Z8 i†Z8Plus. Niestety by³y one wyposaøone
w†pamiÍÊ programu typu OTP-EPROM, co doúÊ skutecznie zniechÍca³o konstruktorÛw do korzystania z†nich. Po tym, z†pewnoúci¹ przykrym dla producentÛw, wstÍpie mam dobr¹ wiadomoúÊ: Motorola i†Zilog rozpoczͳy pro-
Rys. 1
53
S P R Z Ę T
Rys. 2 dukcjÍ nowoczesnych mikrokontrolerÛw z†pamiÍci¹ Flash tyle, øe obra³y zupe³nie odmienne strategie dzia³ania.
Motorola stawia na maluchy
n¹ HC08, takøe wiÍkszoúÊ programÛw†pisanych dla HC05 bÍdzie moøna wykorzystaÊ w†nowych aplikacjach. Ze wzglÍdu na szeroki zakres temperatur pracy (40...+85 oC), mikrokontrolery Nitron moøna stosowaÊ w†aplikacjach samochodowych, a†takøe w†urz¹dzeniach montowanych na zewn¹trz pomieszczeÒ.
Pomys³ Motoroli na zaistnienie na rynku mikrokontrolerÛw jest doúÊ prosty: do sprawdzonego rdzenia HC08 dodano uniwersalMotorola i Zilog ny 16-bitowy timer o†duz wielkim opóźnieniem Zilog woli duøe øych moøliwoúciach (w wkraczają na rynek Inne podejúcie moøna tym PWM), 8-bitowy mikrokontrolerów zaobserwowaÊ u†Ziloga: przetwornik A/C, programikrokontrolery Z8Enmowany generator zegaz pamięcią Flash, ale core! naleø¹ do grona rowy z†moøliwoúci¹ jest to „wkroczenie” uk³adÛw dobrze wypowspÛ³pracy z†elementami dające sporą nadzieję saøonych (rys. 2), oferoRC lub kwarcem i†sukna sukces. wanych tylko w†obudoces niemaløe gotowy wach o†relatywnie du(rys. 1). Istotn¹ nowoúøej liczbie wyprowadzeÒ†- od 40 do 80 ci¹ w†rodzinie Nitron (tak¹ nazwÍ hand(tab. 2). Zastosowano w†nich nowoczesn¹ low¹ nadano nowym mikrokontrolerom) pamiÍÊ programu typu Flash z†moøliwoújest fakt skupienia siÍ producenta na ci¹ programowania w†systemie, co zdecyuk³adach w†obudowach o†niewielkiej liczdowanie upraszcza ich stosowanie. bie wyprowadzeÒ: 8†lub 16. Pomimo teObudowom mikrokontrolerÛw dorÛwnugo pojemnoúÊ wbudowanej pamiÍci Flash je wyposaøenie: wszystkie mikrokontrolejest doúÊ duøa i†wynosi 1,5 kB lub 4†kB ry maj¹ trzy niezaleøne kontrolery kanaw†zaleønoúci od wersji (tab. 1). Ciekawos³Ûw DMA, interfejsy SPI i†I2C (jednoczeútk¹ jest moøliwoúÊ wykorzystania tej panie), przy czym I2 C moøe pracowaÊ wymiÍci jako nieulotnej pamiÍci danych, ³¹cznie jako Master (bez obs³ugi trybu moøna j¹ programowaÊ w†systemie juø po multimaster) z†adresowaniem 7†lub 10-bizamontowaniu mikrokontrolera. Niebagatowym. Interesuj¹ce moøliwoúci ma takøe telnym atutem nowej rodziny jest fakt, øe 9-bitowy UART, ktÛry moøna skonfigurodziÍki jej pe³nej kompatybilnoúci z†rodzi-
Tab. 1. Zestawienie podstawowych parametrów mikrokontrolerów HC08 Nitron Typ
54
Pojemność Pojemność pamięci pamięci RAM {B} Flash [kB]
68HC908QT1
128
1,5
68HC908QT2
128
1,5
68HC908QT4
128
4
68HC908QY1
128
1,5
68HC908QY2
128
1,5
68HC908QY4
128
4
Timer
I/O
A/C
Obudowy Napięcie zasilania [V]
2−CH, 16−bit I/C, O/C lub PWM 2−CH, 16−bit I/C, O/C lub PWM 2−CH, 16−bit I/C, O/C lub PWM 2−CH, 16−bit I/C, O/C lub PWM 2−CH, 16−bit I/C, O/C lub PWM 2−CH, 16−bit I/C, O/C lub PWM
do 6
−
SOIC/DIP8 2,7 − 5,5
do 6
4 kanały, SOIC/DIP8 2,7 − 5,5 8−bit do 6 4 kanały, SOIC/DIP8 2,7 − 5,5 8−bit do 14 − SOIC/DIP/ 2,7 − 5,5 TSSOP16 do 14 4 kanały, SOIC/DIP/ 2,7 − 5,5 8−bit TSSOP16 do 14 4 kanały, SOIC/DIP/ 2,7 − 5,5 8−bit TSSOP16
Elektronika Praktyczna 12/2002
S P R Z Ę T Tab. 2. Typ
Pamięć
Linie Przer− 16−bi− I/O wania towe Flash RAM timery/ [kB] [kB] PWM
Liczba UART Napię− Licz− kanałów cie za− ba wy− analo− silania prowa− gowych [V] dzeń
Z8F6401 64
4
31
23
3
8
2
Z8F6402 64
4
46
24
4
12
2
3,0 − 3,6 40, 44 3,0 − 3,6 64, 68
Z8F6403 64
4
60
24
4
12
2
3,0 − 3,6
Z8F4801 48
4
31
23
3
8
2
3,0 − 3,6 40, 44
80
Z8F4802 48
4
46
24
4
12
2
3,0 − 3,6 64, 68
Z8F4803 48
4
60
24
4
12
2
3,0 − 3,6
Z8F3201 32
2
31
23
3
8
2
3,0 − 3,6 40,44
Z8F3202 32
2
46
24
4
12
2
3,0 − 3,6 64, 68
Z8F2401 24
2
31
23
3
8
2
3,0 − 3,6 40, 44
80
Z8F2402 24
2
46
24
4
12
2
3,0 − 3,6 64,68
Z8F1601 16
2
31
23
3
8
2
3,0 − 3,6 40, 44
Z8F1602 16
2
46
24
4
12
2
3,0 − 3,6 64, 68
waÊ do pracy w†trybie IrDA. Przetwornik A/C wbudowany z†mikrokontrolery Z8Encore! ma rozdzielczoúÊ 10 bitÛw, wspÛ³pracuje on z†wewnÍtrznym precyzyjnym ürÛd³em napiÍcia odniesienia i†12-kana³owym multiplekserem analogowym. Bardzo duøe moøliwoúci ma takøe blok obs³ugi przerwaÒ, ktÛrych w†Z8Encore! wystÍpuje aø 24. Zilog zadba³ o†wygodÍ programowania nowych mikrokontrolerÛw za pomoc¹ jÍzyka C, co przejawia siÍ bardzo duøymi pojemnoúciami wbudowanej pamiÍci RAM (2 lub 4†kB). Zmodyfikowany rdzeÒ eZ8 moøe byÊ taktowany sygna³em zegarowym o†czÍstotliwoúci do 20 MHz, a†rozkazy s¹ wykonywane w†2...8 cyklach. Producent zadba³ o†zachowanie kompatybilnoúci Z8Encore! ze starszymi wersjami Z8, w†zwi¹zku z†czym stare programy wymagaj¹ tylko niewielkich adaptacji. Lista rozkazÛw Z8Encore! zosta³a poszerzona o†kilka nowych poleceÒ, ktÛre nieco upraszczaj¹ pisanie programÛw.
Elektronika Praktyczna 12/2002
Podsumowanie Zadanie stoj¹ce przed producentami mikrokontrolerÛw prezentowanych w†artykule nie jest proste, poniewaø rozwi¹zania konkurencyjne zd¹øy³y podbiÊ serca konstruktorÛw. Warto jednak zwrÛciÊ uwagÍ na rozs¹dn¹ polityk͆zwi¹zan¹ z†narzÍdziami projektowymi: Motorola bezp³atnie udostÍpnia dla rodziny Nitron bardzo przyjazny pakiet IDE CodeWarrior (z kompilatorem C), natomiast Zilog dla Z8Encore! oferuje za 49 USD zestaw ewaluacyjny z†kompilatorem ANSI C. Takøe inne narzÍdzia s¹ dostÍpne po bardzo preferencyjnych cenach. Czy to wystarczy? Andrzej Gawryluk, AVT Dodatkowe informacje
Dodatkowe informacje o mikrokontrolerach prezentowanych w artykule s¹ dostêpne na p³ycie CD-EP12/2002A oraz w Internecie pod adresami: - http://www.zilog.com/z8encore/, - http://e-www.motorola.com/ webapp/sps/site/taxonomy.jsp?nodeId=01M98634.
55
S P R Z Ę T
część 1 Wykrywanie losowych anomalii sygnału za pomocą oscyloskopów cyfrowych Powszechne jest przekonanie, øe oscyloskopy cyfrowe s¹ pozbawione wad. I†tak w†zasadzie jest, pod warunkiem øe uøytkownicy potrafi¹ radziÊ sobie z†ich niedoskona³oúciami wynikaj¹cymi z†konwersji A/C. W artykule naúwietlamy problem akwizycji i zobrazowania przebiegÛw z†rzadko wystÍpuj¹cymi zaburzeniami losowymi. Stale wzrastaj¹cy stopieÒ z³oøonoúci wspÛ³czesnych urz¹dzeÒ elektronicznych wymusza nie tylko ci¹g³¹ poprawÍ parametrÛw przyrz¹dÛw pomiarowych uøywanych w†laboratoriach badawczo-rozwojowych, fabrykach czy serwisach, ale rÛwnieø wzbogacanie ich moøliwoúci funkcjonalnych, pozwalaj¹cych na pe³niejsze úledzenie dzia³ania badanych systemÛw. Ten technologiczny trend nie mÛg³ nie obj¹Ê takøe takich przyrz¹dÛw pomiarowych, jakimi s¹ oscyloskopy. Jednym z†kamieni milowych na drodze rozwoju tych przyrz¹dÛw jest niew¹tpliwie skonstruowanie i†wprowadzenie na rynek w†latach osiemdziesi¹tych oscyloskopÛw cyfrowych DSO (Digital Storage Oscilloscope). Zastosowana w†tego typu przyrz¹dach cyfrowa technologia akwizycji i†przetwarzania sygna³Ûw umoøliwi³a implementacjÍ wielu uøytecznych, a†niedostÍpnych w†oscyloskopach analogowych funkcji, do ktÛrych miÍdzy innymi moøna zaliczyÊ rÛwnoczesn¹, wielokana³ow¹ akwizycjÍ i†zapamiÍtywanie przebiegÛw, szybkie zautomatyzowane okreúlanie parametrÛw badanych sygna³Ûw, zaawansowane funkcje
Elektronika Praktyczna 12/2002
matematyczne (w tym FFT) czy teø moøliwoúÊ ³atwego po³¹czenia oscyloskopu z†komputerem, co pozwala na przes³anie danych i†ich przetwarzanie za pomoc¹ wyrafinowanych narzÍdzi programowych. Jedyny, ale za to bardzo istotny obszar, na ktÛrym oscyloskopy cyfrowe musia³y uznaÊ wyøszoúÊ oscyloskopÛw analogowych, to zobrazowanie przebiegu. Na pierwszy rzut oka moøe siÍ wydawaÊ, øe takie stwierdzenie jest niedorzecznoúci¹. Przecieø ma³ych, úwiec¹cych na zielono ekranÛw lamp oscyloskopowych wykorzystywanych w†przyrz¹dach analogowych nie da siÍ porÛwnaÊ z†duøymi, kolorowymi ekranami oscyloskopÛw cyfrowych, wyúwietlaj¹cych przebiegi we wszystkich kolorach tÍczy.
Pozostaje jednak niebanalne pytanie o†to, co tak naprawdÍ na tych ekranach widaÊ? Bardzo dobre zobrazowanie sygna³Ûw w†oscyloskopach analogowych wynika z†po³¹czenia persystencji (poúwiaty ekranu luminescencyjnego), intensywnoúci úwiecenia luminoforu oraz bardzo duøej czÍstotliwoúci odúwieøania ekranu. Zmieniaj¹ca siÍ w†sposÛb ci¹g³y, a†wiÍc nieskoÒczenie wielopoziomowa intensywnoúÊ úwiecenia punktÛw na ekranie oscyloskopÛw analogowych, wspierana przez zjawisko persystencji, pozwala na wychwycenie bardzo subtelnych szczegÛ³Ûw ogl¹danego sygna³u. Drugi czynnik wp³ywaj¹cy znacz¹co na jakoúÊ zobrazowania, tj. czÍstotliwoúÊ odú-
61
S P R Z Ę T
Rys. 1 wieøania ekranu, ma bezpoúredni wp³yw na szybkoúÊ odpowiedzi oscyloskopu i†jest úciúle zwi¹zana z†innym, czÍsto spotykanym parametrem, a†mianowicie z†czasem martwym oscyloskopu. Jak moøna zauwaøyÊ na rys. 1, czas martwy jest to okres miÍdzy kolejnymi cyklami akwizycji, podczas ktÛrego w†uk³adach oscyloskopu cyfrowego odbywa siÍ przeliczanie zebranych prÛbek na punkty, ktÛre nastÍpnie zostan¹ wyúwietlone na ekranie. Pierwsze oscyloskopy cyfrowe nie posiada³y w†ogÛle takich cech zobrazowania, jak intensywnoúÊ czy persystencja (punkt ekranu úwieci³ siÍ, úwieci³ siÍ intensywnie albo by³ wygaszony - 3 poziomy intensywnoúci), natomiast czÍstotliwoúÊ odúwieøania ekranu by³a w†nich na poziomie od 1 do 2 przebiegÛw na sekundÍ, podczas gdy oscyloskopy analogowe by³y w†stanie wyúwietliÊ setki tysiÍcy przebiegÛw na sekundÍ. Nic w†tym dziwnego. D³ugoúÊ okresu martwego w oscyloskopie analogowym wynika jedynie z†czasu potrzebnego na powrÛt plamki na pocz¹tek ekranu, natomiast w†oscyloskopach cyfrowych wi¹øe siÍ z†procesami przetwarzania danych i†ich przesy³ania miÍdzy blokami funkcjonalnymi oscyloskopu. Co wiÍcej, czas martwy oscyloskopÛw cyfrowych roúnie wraz z†pojemnoúci¹ wykorzystywanej pamiÍci, co jest ca³kowicie zrozumia³e - roúnie liczba danych wymagaj¹cych przetworzenia. Konstruktorzy nowoczesnych oscyloskopÛw cyfrowych podejmuj¹ mniej lub bardziej udane prÛby cyfrowej emulacji persystencji oraz statystycznego odwzorowania sygna³Ûw za pomoc¹ zrÛønicowania intensywnoúci úwiecenia punktÛw. DoúÊ powszechnie znane s¹ technologie takie jak analog persistence, DPO (Digital Phosphor Oscilloscope) czy TrueTrace. Producenci d¹ø¹ rÛwnieø do zminimalizowania czasu martwego, a†tym samym do zwiÍkszenia czÍstotliwoúci odúwieøania ekranu. Na tym drugim parametrze zobrazowania chcielibyúmy siÍ skupiÊ w†niniejszym artykule, a†w†szczegÛlnoúci
62
na analizie jego wp³ywu na prawdopodobieÒstwo wykrywania sporadycznych, losowych anomalii sygna³u. Chcielibyúmy rÛwnieø sprÛbowaÊ odpowiedzieÊ na pytanie, czy liczba przebiegÛw wyúwietlanych na ekranie oscyloskopu w†ci¹gu sekundy jest jedynym wyznacznikiem jego zdolnoúci do wychwytywania nieprawid³owoúci sygna³Ûw, ktÛre pojawiaj¹ siÍ rzadko i†w†nierÛwnomiernych odstÍpach czasu, jak rÛwnieø przedstawiÊ nowe techniki zwiÍkszaj¹ce prawdopodobieÒstwo wykrywania takich zdarzeÒ. Potrzeba detekcji i†analizy rzadko wystÍpuj¹cych losowych zaburzeÒ sygna³Ûw pojawia siÍ w†bardzo wielu aplikacjach. Konstruktorzy systemÛw cyfrowych, ktÛrych g³Ûwnym narzÍdziem pomiarowym jest zwykle analizator logiczny, uøywaj¹ oscyloskopÛw do obserwacji kszta³tu przebiegÛw, oceny jakoúci sygna³u zegarowego w†rÛønych punktach badanego uk³adu itp. Sporadyczne zak³Ûcenia sygna³Ûw cyfrowych mog¹ powodowaÊ, w†zaleønoúci od ich nasilenia i†czasu wyst¹pienia, nieprzewidziane dzia³anie pewnych blokÛw funkcjonalnych b¹dü ca³ego systemu. Czas uruchamiania systemÛw cyfrowych zaleøy w†duøej mierze od parametrÛw i†funkcjonalnoúci wykorzystywanych urz¹dzeÒ pomiarowych, w†tym m.in. od zdolnoúci oscyloskopu do wykrywania sporadycznych zdarzeÒ.
W†kontekúcie detekcji rzadkich anomalii wystÍpuj¹cych podczas uruchamiania systemÛw cyfrowych, naleøa³oby jeszcze wspomnieÊ o†stanach metastabilnych przerzutnikÛw. Stany te pojawiaj¹ siÍ wÛwczas, kiedy czas miÍdzy zmian¹ poziomu logicznego na wejúciu przerzutnika a†zboczem zegarowym powoduj¹cym jego zapis (setup-and-hold time) jest zbyt krÛtki. Stany metastabilne s¹ bardzo niekorzystne i†ujawniaj¹ siÍ w†sposÛb losowy. Ich szybkie wykrywanie jest niew¹tpliwie wyzwaniem dla konstruktorÛw oscyloskopÛw cyfrowych. Drugi obszar wykorzystywania oscyloskopu w†charakterze detektora rzadkich anomalii wystÍpuj¹cych w†badanych przebiegach jest zwi¹zany z†wszelkiego rodzaju transmisj¹ danych, podczas ktÛrej analizuje siÍ kszta³t przesy³anych impulsÛw i†ocenia ich jakoúÊ albo zlicza siÍ te impulsy, ktÛre odpowiadaj¹ bitom przesy³anym b³Ídnie. To drugie zastosowanie pozwala na wyznaczenie i†analizÍ bitowej stopy b³ÍdÛw BER (Bit Error Rate) w†systemach teletransmisyjnych. Wykorzystanie oscyloskopÛw cyfrowych wspomaganych programowymi narzÍdziami symulacyjnymi do okreúlania stopy b³ÍdÛw w†wielu aplikacjach - od transmisji g³osowych (BER na poziomie 10-3...10-4) do przesy³u danych w†twardych dyskach (BER na poziomie 10-14...10-16) - moøe byÊ tematem odrÍbnego, doúÊ obszernego artyku³u.
Jak zwiÍkszano szybkoúÊ odpowiedzi oscyloskopÛw DSO SzybkoúÊ odúwieøania ekranu oscyloskopu wp³ywa, jak juø wspomniano wczeúniej, na prawdopodobieÒstwo wykrywania rzadkich losowych zak³ÛceÒ sygna³Ûw, ale nie tylko. W†pierwszej kolejnoúci dostrzegana jest
Elektronika Praktyczna 12/2002
S P R Z Ę T zwykle dogodnoúÊ uøytkowania. D³ugi czas odpowiedzi oscyloskopu frustruje uøytkownika oraz wyd³uøa uruchamianie i†testowanie uk³adÛw elektronicznych. To w³aúnie komfort pracy by³ podstawowym czynnikiem stymuluj¹cym dzia³ania projektantÛw oscyloskopÛw zmierzaj¹ce do zwiÍkszenia szybkoúci odúwieøania ekranu. Pierwsze oscyloskopy DSO wyúwietla³y na ekranie od 1†do 2†przebiegÛw na sekundÍ i†operowa³y na rekordzie o†d³ugoúci 1000 punktÛw. Pierwszym, aczkolwiek nierewolucyjnym krokiem zmierzaj¹cym do poprawy tej sytuacji by³o skonstruowanie oscyloskopÛw o†czÍstotliwoúci odúwieøania ekranu na poziomie 20 wfm/s (waveforms per second - przebiegi na sekundÍ) przy pojemnoúci pamiÍci oko³o 100†kpkt. Przyrz¹dÛw z†tak¹ szybkoúci¹ odúwieøania nadal nie da siÍ porÛwnaÊ pod wzglÍdem szybkoúci odpowiedzi z†oscyloskopami analogowymi, ale praca z†nimi mog³a juø zadowoliÊ uøytkownika. Niestety, problem zbyt wolnej odpowiedzi powraca³ w†tych urz¹dzeniach przy wykorzystywaniu pamiÍci o†pojemnoúci 1†Mpkt i†wiÍkszej. Znowuø trzeba by³o czekaÊ kilka lub nawet kilkanaúcie sekund na wyúwietlenie przebiegu, a†czekaÊ, jak wiadomo, nikt nie lubi. Z†tego wzglÍdu, z†duøej pojemnoúci pamiÍci uøytkownik mÛg³ korzystaÊ jedynie w†specjalnym trybie pracy oscyloskopu, uzbroiwszy siÍ uprzednio w†cierpliwoúÊ. Prace nad popraw¹ szybkoúci odúwieøania ekranu trwa³y nadal i†zaowocowa³y wkrÛtce dwoma odmiennymi rozwi¹zaniami wprowadzonymi przez dwie duøe korporacje zajmuj¹ce siÍ produkcj¹ przyrz¹dÛw pomiarowych. Pierwsze podejúcie umoøliwi³o uzyskanie szybkoúci odúwieøania ekranu na poziomie setek tysiÍcy przebiegÛw na sekundÍ, czyli jak w oscyloskopach analogowych, ale tylko przy spe³nieniu pewnego, okreúlonego zbioru warunkÛw i†tylko w†okreúlonym trybie pracy zwanym Fast Acquisition (FA). Praca oscyloskopu w†tym trybie charakteryzuje siÍ ograniczeniem pojemnoúci pamiÍci i†czÍstotliwoúci prÛbkowania w†porÛwnaniu z†wartoúciami maksymalnymi podanymi w†specyfikacji oraz niemoønoúci¹ wykorzystania dodatkowych funkcji przyrz¹du, takich jak: powiÍkszanie fragmentÛw wyúwietlanego przebiegu (zoom), funkcje matematyczne oraz automatyczne wyznaczanie parametrÛw badanego sygna³u. Jak to przedstawimy w†dalszej czÍúci artyku³u, korzyúci wynikaj¹ce z†zastosowania w†oscyloskopie trybu Fast Acqui-
64
sition s¹ dostrzegalne jedynie przy bardzo szybkich podstawach czasu (40 ns/dz. i†szybszych) z†ograniczeniami czÍstotliwoúci prÛbkowania (do 1,25 GSa/s) oraz pojemnoúci pamiÍci (do 1†Mpkt). W rozwi¹zaniach konstrukcyjnych oscyloskopÛw obserwuje siÍ takøe inn¹ koncepcjÍ rozszerzenia ich moøliwoúci funkcjonalnych. Projektanci firmy Agilent Technologies po³oøyli szczegÛlny nacisk na efektywne zarz¹dzanie pamiÍci¹ oscyloskopu. Wykreowana przez nich technologia MegaZoom umoøliwia wykorzystanie duøej pojemnoúci pamiÍci przez ca³y czas pracy przyrz¹du i†unikniÍcie tworzenia specjalnych trybÛw pracy. Dodatkowo, ustawianie czÍstotliwoúci prÛbkowania i†pojemnoúci pamiÍci jest realizowane w†oscyloskopie automatycznie, w†optymalny - ze wzglÍdu na rozdzielczoúÊ ogl¹danego sygna³u - sposÛb. CzÍstotliwoúci odúwieøania ekranu, ktÛre uda³o siÍ uzyskaÊ stosuj¹c technologiÍ MegaZoom, siÍgaj¹ dziesi¹tkÛw tysiÍcy przebiegÛw na sekundÍ. SposÛb, w†jaki technologia MegaZoom wp³ywa na zwiÍkszenie prawdopodobieÒstwa wykrywania sporadycznych, losowych anomalii sygna³Ûw, zostanie przedstawiony w†dalszej czÍúci artyku³u.
PrawdopodobieÒstwo wykrycia losowego zaburzenia sygna³u Typowa, spotykana w†wiÍkszoúci opracowaÒ na temat oscyloskopÛw cyfrowych definicja prawdopodobieÒstwa detekcji Pd losowych zaburzeÒ sygna³u jest funkcj¹ czasu martwego Tdead i†czasu akwizycji sygna³u Tacq (rys. 1). Sformu³owana jest ona w†nastÍpuj¹cy sposÛb:
Pd =
Tacq Tacq + Tdead
PrawdopodobieÒstwo detekcji P d oznacza tu szansÍ wykrycia pojedynczej anomalii sygna³u w†pewnym skoÒczonym czasie obserwacji. Z†powyøszej definicji jednoznacznie wynika, øe minimalizacja czasu martwego oscyloskopu, czyli osi¹gniÍcie moøliwie najwiÍkszej liczby przebiegÛw wyúwietlanych na jego ekranie w†jednostce czasu, prowadzi do maksymalizacji prawdopodobieÒstwa wykrycia losowego zaburzenia sygna³u. PorÛwnajmy dla przyk³adu dwa oscyloskopy, z†ktÛrych pierwszy - nazwijmy go ìklasycznyî - wyúwietla 100, zaú drugi - ìszybkiî - †50000 przebiegÛw w†ci¹gu sekundy. Dla ustalenia uwagi przyjmijmy, øe szukamy zaburzenia sygna³u zegarowego o†czÍstotliwoúci 1†MHz, ktÛre pojawia siÍ úrednio raz
na sekundÍ. Podstawy czasu obydwu oscyloskopÛw ustawione s¹ na 1†µs/ dz., co dla ekranu o†szerokoúci rÛwnej 10 dzia³ek daje d³ugoúÊ czasu akwizycji T acq = 10 µs. Wykorzystuj¹c informacjÍ o†liczbie przebiegÛw wyúwietlanych w†jednostce czasu przez obydwa oscyloskopy oraz o†d³ugoúci czasu akwizycji, moøemy z†³atwoúci¹ okreúliÊ wartoúci czasÛw martwych. I†tak, czas martwy oscyloskopu klasycznego T dead1 = 9,99†ms ≈ 10†ms, zaú dla drugiego przyrz¹du parametr ten przyjmuje wartoúÊ rÛwn¹ czasowi akwizycji, czyli 10 µs. Po podstawieniu wyliczonych wartoúci do wzoru moøemy obliczyÊ prawdopodobieÒstwa wykrycia losowej anomalii badanego sygna³u, przy za³oøeniu czasu obserwacji rÛwnego 1†s, co jest rÛwnoznaczne z†jednokrotnym wyst¹pieniem poszukiwanego zaburzenia. PrawdopodobieÒstwa te wynosz¹ odpowiednio: Pd1 = 0,1% dla oscyloskopu klasycznego oraz P d2 = 50,0% dla oscyloskopu szybkiego. Juø na pierwszy rzut oka widaÊ, øe rÛønica jest kolosalna, ale jeszcze lepszy pogl¹d na jej istotÍ da³oby oszacowanie dla obydwu przyrz¹dÛw czasu, jaki by³by potrzebny, aby prawdopodobieÒstwo co najmniej jednokrotnego pojawienia siÍ na ekranie poszukiwanej anomalii sygna³u osi¹gnͳo 95%. Oszacowania takiego moøemy dokonaÊ, korzystaj¹c z rozk³adu Bernoulliego (dwumianowego). Po wykonaniu obliczeÒ okazuje siÍ, øe czasy te wynosz¹ 5†sekund dla szybkiego oscyloskopu oraz 50 minut dla oscyloskopu o†klasycznej architekturze. Czasy obserwacji rzÍdu jednej godziny raczej nie s¹ akceptowalne, bior¹c pod uwagÍ obecny poziom technologiczny. Z†powyøszego przyk³adu moøemy wysnuÊ dwa wnioski. Po pierwsze, pokazuje nam on, jak istotnie szybkoúÊ odúwieøania ekranu oscyloskopu wp³ywa na zdolnoúÊ tego przyrz¹du do wykrywania sporadycznych zaburzeÒ sygna³u. Po drugie natomiast, moøemy siÍ przekonaÊ, øe twÛrcy klasycznej definicji prawdopodobieÒstwa wykrycia rzadko wystÍpuj¹cych cech sygna³u, ktÛr¹ do tej pory siÍ pos³ugiwaliúmy, milcz¹co za³oøyli, øe juø sam fakt dokonania akwizycji fragmentu sygna³u zawieraj¹cego zaburzenie wystarczy do wykrycia poszukiwanej anomalii. W drugiej czÍúci artyku³u postaramy siÍ udzieliÊ odpowiedzi na pytanie, czy za³oøenie takie jest s³uszne. Jacek Falkiewicz AM Technologies Polska
[email protected]
Elektronika Praktyczna 12/2002
S P R Z Ę T
Bezprzewodowa transmisja danych na niewielkie odległości, część 1 W†1994 roku szwedzki koncern telekomunikacyjny Ericsson rozpocz¹³ prace badawcze nad ìkomputerowym interfejsem wykorzystuj¹cym fale radioweî. Projekt ten na czeúÊ Haralda I†SinozÍbego (syn krÛla Gnome i†krÛlowej Thyre, urodzony w†908 roku w†Danii) nazwano Bluetooth. Harald I†by³ wielkim wojownikiem, ktÛry w†970 roku podbi³ ca³¹ NorwegiÍ. Wikingowie nazywali Haralda BlaTan - Bla oznacza siny, ciemnoskÛry (od jego ciemnej karnacji), a†Tan - wielki Pan. Tonn w†ich jÍzyku oznacza³ z¹b, st¹d zapewne przek³amanie i†angielska nazwa Harald I Bluetooth. Tyle historii, przechodzimy do wspÛ³czesnoúci. W†1997 roku do Ericssona do³¹czy³y inne wielkie koncerny, jak Lucent, Motorola, Microsoft, 3COM, tworz¹c tzw. SIG (Special Interest Group). Opracowany przez nich interfejs mia³ byÊ tani, a†technologia udostÍpniana bez op³at patentowych firmom, ktÛre bÍd¹ przystÍpowaÊ do SIG. Pierwsze prototypowe urz¹dzenie wykorzystuj¹ce Bluetooth powsta³o w†roku 1999. By³a to s³ynna bezprzewodowa s³uchawka Ericssona do telefonu komÛrkowego (jej nowsz¹ wersjÍ pokazujemy na fot. 1).
Fot. 1
Elektronika Praktyczna 12/2002
Z interfejsem Bluetooth uøytkownicy oswajaj¹ siÍ wolniej niø z interfejsem USB. Jednak obydwa nie maj¹ zbyt ³atwej drogi, g³Ûwnie ze wzglÍdu na swoje skomplikowanie, ktÛre zmusza konstruktorÛw i uøytkownikÛw do studiowania ich bardzo obszernych norm. Stan ten uleg³ pewnej poprawie wraz z†pojawieniem siÍ kompletnych modu³Ûw Bluetooth, ale jak wskazuje praktyka, jest to poprawa tylko czÍúciowa. Niestety, przez d³ugi czas by³o to jedyne dzia³aj¹ce i†istniej¹ce urz¹dzenie wykorzystuj¹ce tÍ technologiÍ. Znakomita wiÍkszoúÊ opisywanych urz¹dzeÒ stanowi³a tylko marketingowy szum lub poboøne øyczenia. Firmom brakowa³o ludzi, ktÛrzy potrafiliby przedrzeÊ siÍ przez obszern¹ dokumentacjÍ standardu oraz zaj¹Ê siÍ tworzeniem oprogramowania. Jeszcze w†zesz³ym roku istnia³y ogromne trudnoúci ze znalezieniem producenta - sprzedawcy samych modu³Ûw lub chipÛw do BT (fot. 2) - pomimo deklarowania dostÍpnoúci tych uk³adÛw w†ofertach takøe najwiÍkszych firm pÛ³przewodnikowych.
KrÛtki opis techniczny Modu³ BT to z†za³oøenia ma³y element - najmniejsze z†nich maj¹ powierzchniÍ 1†cm2 (wygl¹d przyk³adowych modu³Ûw BT pokazano na fot. 3 i†4) - pobieraj¹cy niewiele pr¹du, maj¹cy niewielki zasiÍg i†odporny na zak³Ûcenia. Uk³ady interfejsÛw pracuj¹ w†paúmie 2,4†GHz, dziÍki czemu do korzystania z†nich nie jest potrzebna licencja. Kana³ radiowy BT zajmuje pasmo o†szerokoúci ok. 85 MHz. Ze wzglÍdu na duøy poziom zak³ÛceÒ elektromagnetycznych wystÍpuj¹cych w†otoczeniu, urz¹dzenia BT zosta³y wyposaøone w†specjalne mechanizmy obrony przed nimi. S¹ to miÍdzy innymi pseudolosowa zmiana czÍstotliwoúci pracy, ktÛra odbywa
siÍ aø 1600 razy na sekundÍ (FH od Frequency Hopping) oraz trzy metody korekcji b³ÍdÛw: - nadmiarowe zabezpieczenie typu FEC (Forward Error Correction) o†wspÛ³czynniku 1/3, - nadmiarowe zabezpieczenie typu FEC o†wspÛ³czynniku 2/3, - zabezpieczenie typu ARQ (Automatic Repeat Request). Niestety, czÍsto okazywa³o siÍ, øe pomimo zastosowania w modu³ach BT skomplikowanych technik zabezpieczaj¹cych, ich pracÍ skutecznie potrafi³a zak³ÛciÊ np. pracuj¹ca obok kuchenka mikrofalowa. Nadajniki w†systemie BT dysponuj¹ niewielk¹ moc¹: w†klasie A maksymalna dopuszczalna moc ma wartoúÊ 10 mW, co teoretycznie zapewnia zasiÍg ok. 10 metrÛw. W†klasie B†maksymalna dopuszczalna moc wynosi juø 100 mW, co pozwala oczekiwaÊ zasiÍgu do 100 metrÛw. Maksymalna prÍdkoúÊ z†jak¹ moøemy prze-
Fot. 2
65
S P R Z Ę T
Fot. 3 s³aÊ dane wynosi 1†Mbd. Nie jest ona rÛwnoznaczna z†prÍdkoúci¹ wymiany danych, poniewaø sk³adaj¹ siÍ na ni¹: - potrÛjne, rÛwnoleg³e synchroniczne kana³y po 64 kbd, kaødy do przesy³ania mowy. - kana³ synchroniczny po 432,6 kbd w†obie strony albo - kana³ asynchroniczny 721 kbd i†57,6 kbd w†jedn¹ stronÍ. Dodatkowo, dane przesy³ane drog¹ radiow¹ mog¹ byÊ zaszyfrowane za pomoc¹ 128 bitowych kluczy. Niestety, modu³y i†urz¹dzenia, ktÛre wykorzystywa³em w†swoich opracowaniach, po prze³¹czeniu w†ten tryb zachowywa³y siÍ bardzo niestabilnie. Podczas transmisji g³osu lub danych wielokrotnie dochodzi³o do zrywania po³¹czenia i znacz¹co zmniejsza³ siÍ transfer. Prawdopodobnie proces szyfrowania po³¹czenia zabiera³ zbyt wiele mocy obliczeniowej procesorowi steruj¹cemu BT. Uk³ady modu³Ûw BT posiadaj¹ jeszcze jedn¹ interesuj¹c¹ moøliwoúÊ, po-
Fot. 4
66
trafi¹ bowiem stworzyÊ mikrosieÊ, tzw. PicoNet. W†PicoNecie moøe byÊ maksymalnie 8†urz¹dzeÒ BT, w†tym 7 podrzÍdnych oraz jedno zarz¹dzaj¹ce. I†tu niestety kolejne rozczarowanie: wiele z†testowanych modu³Ûw BT nie potrafi³o utworzyÊ PicoNetu. RÛwnieø wiele obecnie dostÍpnych urz¹dzeÒ tego nie potrafi lub potrafi stworzyÊ sieÊ PicoNet tylko z†dwoma lub trzema urz¹dzeniami.
Profile, warstwy, o†co w†tym wszystkim chodzi? Jak fizycznie komunikowaÊ siÍ z†modu³em BT? Moøna to zrobiÊ dwoma sposobami. W pierwszym moøna wykorzystaÊ standardowe z³¹cze RS232, ale wtedy musimy siÍ liczyÊ z†tym, øe nie bÍdziemy mogli przesy³aÊ danych szybciej niø 115 kbd oraz øe wiele modu³Ûw nie obs³uguje strumienia mowy przez to z³¹cze (oczywiúcie dzia³a osobne wyjúcie PCM). W drugim sposobie wykorzystuje siÍ ³¹cze USB. Aby przes³aÊ nasze dane do/z Bluetootha oraz nim sterowaÊ, musimy skorzystaÊ z†protoko³u HCI (Host Controller Interface). Jest to najniøsza dostÍpna dla uøytkownika warstwa (rys. 5). W†ramkach protoko³u HCI s¹ umieszczane ramki warstwy L2CAP (Logical Link Control And Adaptation Protocol). Warstwa ta jest odpowiedzialna za komunikacjÍ na wielu kana³ach, wspÛ³dzielenie ³¹cza, transmitowanie przez wyøsze warstwy swoich porcji danych (maks. 64 kB). Warstwy HCI i†L2CAP musz¹ byÊ zaimplementowane w†module BT oraz pod³¹czonym do niego mikrokontrolerze. Natomiast wyøsze warstwy (oparte na L2CAP) s¹ zaimplementowane w†oprogramowaniu mikrokontrolera. Kolejne warstwy: RFCOMM, TCS, SDP s¹ w†zasadzie sobie rÛwnowaøne pod wzglÍdem miejsca w†tzw. stosie BT. Warstwa RFCOMM (moim zdaniem najtrudniejsza do zrozumienia, wymaga wczeúniejszego przeczytania i†opanowania normy ETSI TS 07.10)
Rys. 5 jest odpowiedzialna za tworzenie wirtualnych ³¹cz szeregowych (RS232). Maksymalnie moøe byÊ ich 60. WiÍkszoúÊ aplikacji uøywa warstwy RFCOMM do przesy³ania danych. Warstwa SDP (Service Discovery Protocol) pozwala na identyfikacjÍ drugiej strony (klient) lub udzielenie informacji o†sobie (serwer). Upraszczaj¹c - modu³ BT dziÍki SDP moøe wykryÊ np. wszystkie s³uchawki bezprzewodowe w†swoim otoczeniu lub informowaÊ inne urz¹dzenia, øe jest drukark¹ laserow¹. OprÛcz wyøej wymienionych warstw istniej¹ tzw. profile. Profile s¹, krÛtko mÛwi¹c, aplikacjami, kawa³kami programÛw, ktÛre komunikuj¹c siÍ poprzez warstwy (korzystaj¹ z†RFCOMM do utworzenia wirtualnego ³¹cza RS232 - umoøliwiaj¹ np. dostÍp do Internetu poprzez ³¹cze bezprzewodowe), daj¹ moøliwoúÊ korzystania z†FTP, WAP, s³uchawki bezprzewodowej. W†zasadzie kaøda funkcja BT (na poziomie uøytkownika) jest opisywana i†standaryzowana za pomoc¹ profili. Henryk Nowak Dodatkowe informacje Dodatkowe informacje s¹ dostêpne na p³ycie CD-EP12/2002B oraz w Internecie pod adresami: - http://www.bluetooth.com/pdf/Bluetooth_11_Specifications_Book.pdf, - http://www.bluetooth.com/pdf/Bluetooth_11_Profiles_Book.pdf, - http://www.bluetooth.prv.pl.
Elektronika Praktyczna 12/2002
P O D Z E S P O Ł Y
ìLepsze jest wrogiem dobregoî - to stara øyciowa prawda. Przekonujemy siÍ o†tym czasami, gdy kupiwszy najnowsz¹ wersjÍ jakiegoú programu stwierdzamy, øe zastosowane w†nim skrÛty klawiaturowe s¹ zupe³nie inne niø te, do ktÛrych przyzwyczailiúmy siÍ przez lata. Walimy piÍúci¹ w†stÛ³, wszystkiego musimy siÍ uczyÊ od nowa. Nie ma rady. Software jest szczegÛlnie podatny na tego rodzaju dzia³ania. Okazuje siÍ jednak, øe nie tylko. Ostatnio, w†sposÛb doúÊ przypadkowy, dowiedzia³em siÍ, øe firma Analog Devices wycofa³a z†dokumentacji najnowszej wersji mikrokontrolera ADuC812 opis interfejsu I2C. Mikrokontroler ten jest dostÍpny na rynku juø kilka lat i†z†pewnoúci¹ powsta³o do tej pory wiele aplikacji, w ktÛrych wykorzystuje siÍ ten interfejs do komunikowania z†otoczeniem. Gdyby Analog zrezygnowa³ z I2C, to narazi³by na k³opoty niejednego producenta sprzÍtu wykorzystuj¹cego Ûw mikrokontroler. Jak siÍ okaza³o, ca³e zamieszanie spowodowane jest brakiem umowy licencyjnej miÍdzy AD i†Philipsem w³aúcicielem praw do I2C. KonstruktorÛw i†uøytkownikÛw ADuC†mogÍ uspokoiÊ: wed³ug zapewnieÒ przedstawiciela Analog Devices, stosowany obecnie interfejs jest i†nadal bÍdzie zgodny z†I2C, pomimo tego, øe nazywa siÍ inaczej. Znacznie powaøniej wygl¹daj¹ zmiany wprowadzone do rodziny atmelowskich mikrokontrolerÛw ATmega. Moøna je okreúliÊ jako rewolucyjne. Widocznie liczba i†jakoúÊ b³ÍdÛw w†mikrokontrolerach dotychczasowych wersji by³a na tyle powaøna, øe firma zdecydowa³a siÍ na bardzo radykalne posuniÍcia. Wpro-
Nowe mikrokontrolery Atmela Elektronika Praktyczna Elektronika Praktyczna12/2002 12/2002
67
P O D Z E S P O Ł Y Tab. 1. Zmiany w nazwach bitów stosowanych w mikrokontrolerach ATmega163 i ATmega323 Nazwy bitów Nazwy bitów Rejestry I/O w mikrokontrolerach w mikrokontrolerach w mikrokontrolerach ATmega163 ATmega16 ATmega163 i ATmega323 i ATmega32 i ATmega323 PWMn(0)
WGMn0
TCCRn(A)
PWMn1 CTCn CHR9 OR ASB ASRE ADFR
WGMn1 WGMn2 UCSZ2 DOR RWWSB RWWSRE ADATE
TCCRnA TCCRn(B) USCRB UCSRA SPMCR SPMCR ADSCR
wadzono wiÍc trzy nowe uk³ady serii ATmega, ktÛre bÍd¹ zastÍpowa³y produkowane do tej pory. I†tak: mikrokontroler ATmega32 zastÍpuje dotychczasowy ATmega232, ATmega16 zastÍpuje ATmega163 i†ATmega8 zastÍpuje (uwaga!) AT90S4433. Taki sposÛb naprawiania b³ÍdÛw nie by³aby moøe†nawet bardzo dokuczliwy, gdyby nie to, øe nowe uk³ady nie zachowuj¹ pe³nej kompatybilnoúci ze starymi. Zmiany dotycz¹ m.in. parametrÛw czasowych, zasad funkcjonowania niektÛrych blokÛw†mikrokontrolera, znaczenia i†nazw wybranych rejestrÛw, ustawieÒ bezpiecznikÛw, poprawienia interfejsu JTAG, a†takøe procedur programowania. CzÍúÊ nowoúci wynika ze zmian w†technologii produkcji tych mikrokontrolerÛw. SzczegÛ³owy opis poprawek moøna znaleüÊ w†dokumentach AVR081, AVR083 i†AVR084 oraz w†notach katalogowych dostÍpnych na stronach firmowych Atmela (http://www.atmel.com). Wiele punktÛw opisywanych dotychczas w erratach dla starych uk³adÛw staje siÍ nieaktualnych dla uk³adÛw nowych. Trzeba rÛwnieø pamiÍtaÊ, øe niektÛre b³Ídy opisywane w†erratach zosta³y†poprawione w†ostatnich seriach starych uk³adÛw. Dotyczy to g³Ûwnie mikrokontrolera ATmega163. Poniøej zostan¹ omÛwione zmiany wprowadzone dla mikrokontrolerÛw ATmega16, ATmega32 i†wybranych przypadkÛw dotycz¹cych mikrokontrolera ATmega8. Dalsza czÍúÊ artyku³u bÍdzie dotyczy³a tylko ATmega8.
Rozszerzenie moøliwoúci przerywania instrukcji mikrokontrolera Przerwania w†sposÛb ca³kowicie pewny mog¹ zmieniaÊ sterowanie
68
Komentarz
„A” i „0” tylko w 16−bitowym timerze „B” tylko w 16−bitowym timerze dotyczy tylko ATmega16 dotyczy tylko ATmega16
dotyczy tylko ATmega16
bez wzglÍdu na wykonywan¹ instrukcjÍ mikrokontrolera ATmega16. Wyeliminowano moøliwoúÊ powstawania martwych pÍtli, co zdarza³o siÍ w†uk³adzie starej wersji.
ZakoÒczenie przerwaÒ TWI w†stanie power-down Operacje interfejsu 2-wire w†stanie power-down nie bÍd¹ przerywane przez inne przerwania. Przerwania tego interfejsu nie spowoduj¹ powrotu do stanu Idle, jeúli nast¹pi¹ w†stanie power-down.
TWI Master uodporniony na zak³Ûcenia Zastosowano filtr cyfrowy w†celu wyeliminowania zak³ÛceÒ impulsowych powoduj¹cych b³Ídn¹ interpretacjÍ pocz¹tku transmisji. Ponadto, jeúli warunek startu zostanie üle rozpoznany, zostanie wygenerowany status b³Ídu (Bus Error) i†ustawiony bit TWINT, gdy linia SDA przejdzie w†stan idle. Poprzednio w†takich sytuacjach powstawa³a martwa pÍtla.
Operacja zapisu TWCR jest ignorowana, jeúli jest powtarzana (bezpoúrednio jedna po drugiej) Kolejne zapisy do rejestru TWCR dzia³aj¹ obecnie tak, jak byúmy tego oczekiwali. Nie s¹ potrzebne instrukcje NOP pomiÍdzy poszczegÛlnymi zapisami.
Poprawna faza sygna³u PWM W†nowych mikrokontrolerach wprowadzono zmiany w†generowaniu sygna³u PWM pod k¹tem poprawnoúci jego fazy.
Wyeliminowanie ograniczenia prÍdkoúci TWI w†trybie Slave Ograniczenie prÍdkoúci interfejsu TWI nie obowi¹zuje w†nowych mikrokontrolerach. CzÍstotliwoúÊ taktowania CPU musi byÊ w†trybie slave co najmniej 16-krotnie wiÍksza niø czÍstotliwoúÊ sygna³u†SCL (patrz nota katalogowa).
Eliminacja problemÛw z†ustawianiem UBRR Zmiany ustawieÒ prÍdkoúci transmisji powoduj¹ natychmiastowy efekt zarÛwno dla nadajnika, jak i†odbiornika. Zapisuj¹c UBRRL, nie trzeba zerowaÊ UBRRH.
Poprawki zwi¹zane z†OverRun Flag i†Frame Error dla USART-a Znacznik OverRun w†mikrokontrolerze ATmega32 jest zawsze na bieø¹co zwi¹zany z†FIFO, nie wystÍpuj¹ fa³szywe b³Ídy ramek sygnalizowane przez OverRun.
Zmiany nazw W†tab. 1 zestawiono zmiany nazw niektÛrych bitÛw, a†w†tab. 2 zmiany nazw rejestrÛw (cechy funkcjonalne pozosta³y bez zmian).
Poprawki timerÛw/licznikÛw W†celu pe³niejszego zaznajomienia siÍ z†wprowadzonymi w†tym zakresie poprawkami naleøy zajrzeÊ do not katalogowych. Zmiany dotycz¹: - ustawiania wartoúci zliczanej w†trybie PWM, - rozszerzenia timera/licznika0 o†funkcje compare i†PWM, - wprowadzenia opcji Frequency Correct dla timera/licznika1 pracuj¹cego w†trybie PWM. Phase Correct pozostaje zachowana.
Tab. 2. Zmiany w nazwach rejest− rów mikrokontrolerów ATmega163 i ATmega323 Stare Nowe Komentarz nazwy nazwy rejestrów rejestrów ADCSR GIMSK MCUSR UBRRHI
ADCSRA GICR MCUCSR UBRRH
Dotyczy ATmega32 Dotyczy ATmega16 Dotyczy ATmega16 Dotyczy ATmega16 ta lokacja daje dostęp do dwóch rejestrów (patrz punkt dotyczący ulepszenia UART−u)
Elektronika Praktyczna 12/2002
P O D Z E S P O Ł Y
Poprawki dotycz¹ce aktualizowania rejestru OCR w†trybie PWM WartoúÊ zapisana do rejestru Output Compare Register w†trybie PWM nie jest uøywana jako wartoúÊ porÛwnywana, dopÛki timer/licznik nie osi¹gnie wartoúci TOP. W†mikrokontrolerach ATmega163 i†ATmega323 nowa wartoúÊ OCR jest uøywana juø w†tym cyklu, w†ktÛrym timer/licznik osi¹ga wartoúÊ TOP. W†ATmega32 osi¹gniÍcie wartoúci TOP powoduje dopiero aktualizacjÍ wartoúci porÛwnywanej.
Udoskonalenie przetwornika A/C Obecnie przetwornikiem analogowo-cyfrowym moøna wykonywaÊ pomiary rÛønicowe ze wzmocnieniem.
Usprawnienia UART-a Zastosowany w†AT90S4433 i†ATmega163 UART zosta³ zast¹piony przez USART w†ATmega8 i†ATmega16. Jest on kompatybilny z†wczeúniejszym z†jednym wyj¹tkiem: zastosowano dwupoziomowy rejestr odbiorczy dzia³aj¹cy jak pamiÍÊ kolejkowa FIFO (First In First Out). Musz¹ byÊ przestrzegane poniøsze zasady: - Funkcjonuj¹ce de facto dwa rejestry odbiorcze dzia³aj¹ jak jeden rejestr cykliczny FIFO. Z†tego powodu UDR musi byÊ czytany tylko raz dla kaødej przychodz¹cej danej. Waøne jest, øe flagi b³ÍdÛw (FE i†DOR - uwaga nowe nazwy!), a†takøe dziewi¹ty bit danej (RXB8) s¹ buforowane razem z†dan¹ w†rejestrze odbiorczym. Dlatego bity statusowe musz¹ byÊ sprawdzane zawsze przed odczytem rejestru UDR, w†przeciwnym razie informacja o†b³Ídzie zostanie utracona w†chwili, gdy zostanie utracona dana w†buforze. - Odbiorczy rejestr przesuwaj¹cy dzia³a teraz jak 3-poziomowy bufor. Jest tak, gdyø umoøliwiono pozostawienie danej odbieranej w†rejestrze przesuwaj¹cym do czasu wykrycia nowego bitu startu, jeúli rejestry buforowe s¹ pe³ne. DziÍki takim rozwi¹zaniom nowy USART jest bardziej odporny na b³Ídy naczytania danych (Data OverRun - DOR). Rejestr UBRRHI jest umieszczony pod tym samym adresem, co dwa urz¹dzenia. W†ATmega8 i†ATmega16 adres ten jest wspÛ³dzielony z†rejestrem UCSRC. DostÍp do UBRRH b¹dü
70
do UCSRC ustala bit URSEL. Po zerowaniu URSEL zostaje wybierany rejestr UBRRH - zachowana jest tym samym kompatybilnoúÊ z†AT90S4433 (ATmega163). Jest jeszcze jedna, mniej istotna rÛønica w†dzia³aniu interfejsÛw. Po zainicjowaniu procesora, RXB8 przybiera³ stan ì1î w†AT90S4433 i†ATmega163, a†w†USART-cie ATmega8 i†ATmega16 jest on zerowany.
Zmiany parametrÛw elektrycznych W†nowych mikrokontrolerach zastosowano odmienn¹ w†stosunku do poprzednich technologiÍ wytwarzania. Wskutek tego nast¹pi³y zmiany niektÛrych parametrÛw elektrycznych. Na przyk³ad pr¹d Icc w†stanie uúpienia (Power Down Sleep Mode) zwiÍkszy³ siÍ z†ok. 4†µA dla do ok. 15 µA dla nowych uk³adÛw. SzczegÛ³y w†notach katalogowych.
Zmiany timingu dla operacji zapisu pamiÍci EEPROM Operacje zapisu pamiÍci EEPROM wymagaj¹ w†nowych mikro-
kontrolerach 8448 cykli oscylatora (2048 w†uk³adach poprzednich). Oscylator RC jest kalibrowany na czÍstotliwoúÊ 1†MHz w†obydwu uk³adach. Na czas zapisu pamiÍci EEPROM moøna wp³ywaÊ, wpisuj¹c odpowiedni¹ wartoúÊ do zmiennej OSCCAL.
Zmiany dotycz¹ce programowania Zastosowano nowy algorytm programowania rÛwnoleg³ego obs³uguj¹cy stronicowanie pamiÍci EEPROM. Zmianie uleg³ przy tym timing tej operacji.
Nowe ustawienia bezpiecznikÛw W†tab. 3 przedstawiono porÛwnanie ustawieÒ bezpiecznikÛw dla uk³adÛw starej i†nowej wersji.
Oscylatory i†ustawienie opÛünienia startu Bezpieczniki CKSEL okreúlaj¹, ktÛry oscylator ma byÊ aktywny, a†takøe jak d³ugie ma byÊ opÛünienie startu. SzczegÛ³Ûw dzia³ania tych
Tab. 3. Porównanie ustawienia bezpieczników w układach ATmega163− ATmega16 i ATmega323−ATmega32(1) Bezpiecznik
Domyślne ustawienie w mikrokontrolerach Atmega163 i ATmega323
Domyślne ustawienie w mikrokontrolerach Atmega16 i ATmega32
Ustawienie kompatybilne w mikrokontrolerach ATmega163 i ATmega323
OCDEN − 1 1 JTAGEN − (ATmega163) 0 (Atmega323) 0 1(2a) (ATmega163) 0 (ATmega323) SPIEN 0 0 0 CKOPT − 1 0(3) (ATmega163) 0(2b) (ATmega323) EESAVE 1 1 1 BOOTSZ1 1 0 1 BOOTSZ0 1 0 1 BOOTRST 1 1 1 BODLEVEL 1 1 1 BODEN 1 1 1 SUT1 − 1 patrz uwaga (4) SUT0 − 0 patrz uwaga (4) CKSEL3 0 0 patrz uwaga (4) CKSEL2 0 0 patrz uwaga (4) CKSEL1 1 0 patrz uwaga (4) CKSEL0 0 1 patrz uwaga (4) Objaśnienia: 1. Kreska oznacza, że bezpiecznik nie występuje 2a. Patrz punkt “Interfejs JTAG” 2b. Patrz punkt “Oscylatory i ustawienie opóźnienia startu” 3. Patrz punkt “Oscylatory i ustawienie opóźnienia startu” 4. Bezpiecznik CKSEL jest dostępny zarówno w ATmega323, jak i w ATmega32, jakkolwiek działanie SUT i CKSEL powinno być przeanalizowane przy przejściu na mikrokontroler ATmega32. Patrz punkt Oscylatory i ustawienie opóźnienia startu.
Elektronika Praktyczna 12/2002
P O D Z E S P O Ł Y Tab. 4. Zmiany nazw bitów w mikrokontrolerze ATmega8 Nazwa bitu w mikrokontrolerze AT90S4433
Nazwa bitu w mikrokontrolerze Atmega8
Rejestr I/O (AT90S4433)
PWM10
WGM1n0
TCCR1A
PWM11
WGM1n1
TCCR1A
CTC1
WGM12
TCCR1B
CHR9
UCSZ2
USCRB
OR
DOR
USCRA
OCIE1
OCIE1A
TIMSK
zmieniono pozycję bitu
OCF1
OCF1A
TIFR
zmieniono pozycję bitu
WDTOE
WDCE
WDTCR
nie zachowano bezpośredniej kompatybilności
AINBG
ACBG
ACSR
bezpiecznikÛw w†nowych mikrokontrolerach naleøy szukaÊ w†notach katalogowych, w†rozdziale System Clock and Clock Option. Wykorzystanie oscylatora jako ürÛd³a przebiegÛw zegarowych poprzez wyjúcie XTAL2 jest w†starych mikrokontrolerach moøliwe bez øadnych ograniczeÒ. W†nowych naleøy w†tym celu zaprogramowaÊ bezpiecznik CKOPT. Trzeba pamiÍtaÊ o†zwiÍkszonym poborze mocy w†takiej konfiguracji. Wyjúcie pracuje w†trybie rail-torail (w pe³nym zakresie napiÍcia zasilaj¹cego).
Zmiany w†timerze-watchdogu CzÍstotliwoúÊ pracy watchdoga w†nowych mikrokontrolerach dochodzi do 1†MHz bez wzglÍdu na wartoúÊ napiÍcia zasilaj¹cego (poprzednio by³o to moøliwe tylko dla napiÍcia rÛwnego 5†V).
Interfejs JTAG Zastosowany w†ATmega16 interfejs JTAG moøe byÊ wykorzystywany do programowania, testowania krawÍdziowego (boundary-scan) i†debugowania. W†celu umoøliwienia programowania mikrokontrolera poprzez interfejs JTAG, bezpiecznik JTAGEN powinien byÊ ustawiony. Aby zachowaÊ kompatybilnoúÊ z†ATmega163, bezpiecznik ten powinien byÊ wyzerowany. W³¹czenie interfejsu powoduje zajÍcie czterech linii portÛw I/O na jego potrzeby.
Ulepszenie interfejsu JTAG Mikrokontrolery ATmega323 i†ATmega32 wykorzystuj¹ interfejs JTAG do programowania, skanowania krawÍdziowego i†debugowania. W†po-
72
Komentarz
rÛwnaniu z†uk³adem ATmega323, w†ATmega32 zwiÍkszono liczbÍ skanowanych komÛrek, dziÍki czemu znacznie poprawiono m.in. obs³ugÍ funkcji analogowych. Wprowadzono ponadto now¹ instrukcjÍ BREAK, ktÛra jest niezwykle przydatna podczas debugowania programu. DziÍki niej liczba ustawianych pu³apek nie jest niczym limitowana.
Zmiany w†operacji samoprogramowania Samoprogramowanie by³o dostÍpne w†mikrokontrolerach starych wersji i†zachowano je oczywiúcie w†nowych. Wprowadzono jednak pewne zmiany w†zachowaniu siÍ CPU podczas tej operacji. Obecnie CPU jest zatrzymywane jedynie podczas programowania (No-Read-While-Write NRWW) pamiÍci Flash. Bit SPMEN w†rejestrze SPMCR jest automatycznie zerowany w†obu wersjach mikrokontrolera.
Inne Nowe mikrokontrolery wyposaøono w†odmienne w†porÛwnaniu ze starymi sygnatury elektroniczne.
ATmega8 Uøytkownicy mikrokontrolera AT90S4433 musz¹ powoli ìprzesiadaÊ siÍî na ATmega8, ktÛry jest nowoczeúniejsz¹ i†poprawion¹ wersj¹ poprzednika. Przesiadka jest moøliwa nawet w†aplikacjach juø istniej¹cych, aczkolwiek z†pewnymi zastrzeøeniami, gdyø i†w†tym przypadku nie zachowano pe³nej kompatybilnoúci uk³adÛw. Niew¹tpliwa przewaga mikrokontrolerÛw ATmega nad poprzednikami jest zwi¹zana z wiÍksz¹ pojemnoúci¹ pamiÍci Flash, SRAM i†EEPROM, nowymi
komponentami wewnÍtrznymi i†nowymi cechami uøytkowymi. Zachowano tÍ sam¹ topografiÍ wyprowadzeÒ. Wymieniaj¹c jednak mikrokontroler w†dzia³aj¹cym urz¹dzeniu, trzeba siÍ upewniÊ, czy rÛønice miÍdzy wersjami uk³adÛw na to pozwalaj¹. Przeszkod¹ mog¹ byÊ choÊby nieco inne zasady dostÍpu do rejestrÛw, nie mÛwi¹c juø o†rÛønicach w†wartoúciach parametrÛw elektrycznych. Punkty budz¹ce ewentualne w¹tpliwoúci w†odniesieniu do uk³adu AT90S4433 zostan¹ omÛwione pokrÛtce poniøej (dotycz¹ rozwi¹zaÒ wykorzystywanych w†ATmega8). Bezpieczniki i†tryby programowania W†mikrokontrolerze ATmega8 umoøliwiono programowanie pamiÍci Flash i†EEPROM w†trybie programowania szeregowego po zaprogramowaniu bezpiecznikÛw. Niepoprawne zmienianie kana³Ûw w†trybie Free Running W†mikrokontrolerze ATmega8 bity MUXn i†REFS1/0 rejestru ADMUX s¹ buforowane przez rejestr tymczasowy. DziÍki temu CPU moøe w†sposÛb swobodny zmieniaÊ kana³y†w†bezpiecznym momencie konwersji (bez zak³ÛceÒ). SzczegÛ³y w†nocie katalogowej. Czas stabilizacji ürÛd³a napiÍcia referencyjnego W†mikrokontrolerze ATmega8 czas ustabilizowania siÍ ürÛd³a napiÍcia referencyjnego jest okreúlony parametrami zamieszczonymi w†nocie katalogowej niezaleønie od tego czy uk³ad Brown-out Detector jest w³¹czony, czy nie. Dzia³anie uk³adu Brown-out Dzia³anie detektora Brown-out jest obecnie niewraøliwe na aktywnoúÊ wyprowadzeÒ I/O. Programowanie szeregowe przy zasilaniu poniøej 2,9 V Jeúli uk³ad ATmega8 pracuje w†warunkach zgodnych ze specyfikacj¹ techniczn¹ (dotyczy napiÍcia i†czÍstotliwoúci pracy), nie powinny wystÍpowaÊ øadne problemy z†programowaniem szeregowym.
Tab. 5. Zmiany nazw rejestrów w mikrokontrolerze ATmega8 Nazwy rejestrów Komentarz w AT90S4433 w ATmega8 SP GIMSK MCUSR UBRRHI
SPL GICR MCUCSR UBRRH
zmieniono adres rejestru
Elektronika Praktyczna 12/2002
P O D Z E S P O Ł Y Zmiany nazw
Tab. 6. Zmiany lokacji bitów w ATmega8 TIMSK
TIFR
TOIE1 OC1E1 TCIE1 TOIE0
TOV1 OCF1 ICF1 TOV0
Pozycja bitu w AT90S4433 ATmega8 7 6 3 1
2 4 5 8
Utrata synchronizacji przez UART, jeúli linia RxD jest na poziomie niskim, podczas gdy UART jest zablokowany Podobnie jak w†mikrokontrolerach ATmega16 i†ATmega32, w†ATmega8 rÛwnieø zast¹piono UART przez USART. Wyeliminowano przy tym b³¹d utraty synchronizacji w†opisywanej sytuacji.
RÛønice w†wyprowadzeniach uk³adÛw AT90S4433 i†ATmega8 W†mikrokontrolerze ATmega8 wprowadzono nowe, w†stosunku do AT90S4433, funkcje alternatywne niektÛrych wyprowadzeÒ I/O. Jeúli pozostan¹ niewykorzystywane, nie bÍd¹ stwarza³y problemÛw z†kompatybilnoúci¹. PC6 (!Reset) Uk³ad AT90S4433 posiada dedykowane wyprowadzenie !RESET. Niestety w†ATmega8 funkcja zerowania jest przypisana do wyprowadzenia PC6, ktÛrego funkcjonowanie zaleøy od ustawienia bezpiecznika RSTDISBL. PB7/6(XTAL/OSC) ATmega8 nie ma dedykowanych wyprowadzeÒ XTAL1 i†XTAL2. Funkcja XTAL2 i†TOSC2 jest aktualnie dzielona z†wyprowadzeniem PB7, natomiast XTAL1 i†TOSC1 z†PB6. KonfiguracjÍ ustala bezpiecznik CKSEL. ADC7/6 W†uk³adzie ATmega8 w†obudowie TQFP (i MLF) wyprowadzenia ADC6 i†ADC7 zosta³y do³¹czone do wyprowadzeÒ 19 i 22. W†AT90S4433 by³y one niewykorzystywane. Vcc/GND W†uk³adzie ATmega8 w†obudowie TQFP (i MLF) wprowadzono dodatkow¹ parÍ wyprowadzeÒ zasilaj¹cych: Vcc - nÛøka 6†i†GND - nÛøka 3. W†AT90S4433 by³y†one niewykorzystywane. Po³¹czenie tych wyprowadzeÒ zgodnie z†przeznaczeniem zwiÍksza odpornoúÊ na szumy, jednak w†przypadku zastÍpowania uk³adu AT90S4433 przez ATmega8, powinny pozostaÊ niepod³¹czone.
74
W†tab. 5†i†6 przedstawiono zmiany w†nazewnictwie bitÛw i†rejestrÛw. Zmiany w†timerach/licznikach i†preskalerach Najwaøniejsze zmiany dotycz¹ce timerÛw/licznikÛw wprowadzone w†ATmega8 to: - moøliwoúÊ zerowania, - ustawianie wartoúci zliczanej w†trybie PWM, - wprowadzenie korekcji fazy i†czÍstotliwoúci w†trybie PWM dla timera/licznika1 i†2. - tryb szybkiej PWM Po³oøenie bitÛw w†rejestrach TIMSK i†TIFR Wszystkie maski i†flagi przerwaÒ mikrokontrolera AT90S4433 zosta³y uwzglÍdnione w†uk³adzie ATmega8, przy czym zmieniono ich lokacjÍ. Zmiany przedstawiono w†tab. 6. Zerowanie TCNT1 w†trybie PWM RozdzielczoúÊ modulacji PWM moøe byÊ rÛwna 8, 9†lub 10 bitÛw, jednakøe wykorzystywany przy tym timer/licznik jest 16-bitowy. Mikrokontroler AT90S4433 umoøliwia³ wpisanie do rejestru TCNT1 liczby przewyøszaj¹cej rozdzielczoúÊ, co mog³o powodowaÊ nieprawid³owoúci w†modulacji. W†uk³adzie ATmega8 efekt ten zosta³ wyeliminowany poprzez zerowanie niewykorzystywanych bitÛw.
Zerowanie OCR1xH w†trybie PWM W†mikrokontrolerze AT90S4433 wykorzystuj¹cym PWM, szeúÊ bardziej znacz¹cych bitÛw OCR1xH by³o zawsze zerowanych, bez wzglÍdu na wykorzystywan¹ rozdzielczoúÊ modulacji, co mog³o prowadziÊ do b³Ídnego dzia³ania uk³adu. W†ATmega8 poprawiono ten b³¹d zerowane s¹ tylko te bity, ktÛre wynikaj¹ z†ustawionej rozdzielczoúci. Zerowanie timera/licznika1 w†trybie porÛwnania z†preskalerem Timer/licznik1 uk³adu AT90S4433 wykazywa³ b³Ídy podczas pracy w†trybie porÛwnywania z†preskalerem. Licznik by³ w†nim zerowany natychmiast po zliczeniu do stanu zapisanego w†rejestrze OCR1 bez wzglÍdu na ustawienia preskalera. W†ATmega8 jest on zerowany dopiero w†momencie n-tego zliczenia, gdzie n zaleøy od ustawienia preskalera. Ustawienia wyprowadzeÒ i†znacznikÛw w†trybie porÛwnania z†preskalerem (dotyczy wszystkich timerÛw/licznikÛw) Przypadek ten jest podobny do poprzedniego, dotyczy tylko momentu ustawiania znacznikÛw i†wyjúcia wyniku porÛwnania. Aktualizacja OCR1x w†trybie PWM PomiÍdzy uk³adami AT90S4433 i†ATmega8 wystÍpuj¹ w†pewnych przypadkach rÛønice dotycz¹ce aktu-
Tab. 7. Porównanie bezpieczników w układach AT90S4433 i ATmega8(1) Bezpiecznik
Domyślne ustawienie w AT90S4433
Domyślne ustawienie w ATmega8
Ustawienie kompatybilne w ATmega8
RSTDISBL − 1 1 WDTON − 1 1(2) SPIEN 0 0 0 CKOPT − 1 0(3) EESAVE − 1 1 BOOTSZ1 − 0 0 (N/A)(4) BOOTSZ0 − 0 0 (N/A)(4) BOOTRST − 1 1 BODLEVEL 1 1 1 BODEN 1 1 1 SUT1 − 1 patrz uwaga (5) SUT0 − 0 patrz uwaga (5) CKSEL3 − 0 patrz uwaga (5) CKSEL2 0 0 patrz uwaga (5) CKSEL1 1 0 patrz uwaga (5) CKSEL0 0 1 patrz uwaga (5) Objaśnienia: 1. Kreska oznacza, że bezpiecznik nie występuje 2. Patrz punkt “Zmiany w timerze watchdog” 3. Patrz punkt “Oscylatory i ustawienie opóźnienia startu” 4. SPM i samoprogramowanie nie występowało w AT90S4433. Ustawienie domyślne jest dobre, jeśli projekt jest dostosowany do ATmega8. 5. Działanie SUT i CKSEL powinno być przeanalizowane przy przejściu na mikrokontroler ATmega8. Patrz punkt Oscylatory i ustawienie opóźnienia startu.
Elektronika Praktyczna 12/2002
P O D Z E S P O Ł Y alizacji rejestru OCR1. Zapisanie nowej wartoúci do OCR1 odbywa siÍ poprzez rejestr tymczasowy (nie jest natychmiastowe). Jeúli OCR1A jest czytany przed dokonaniem aktualizacji (dotyczy AT90S4433), faktycznie pobierana jest wartoúÊ z†bufora OCR1A. Moøe to byÊ przyczyn¹ uøywania do pÛüniejszych porÛwnaÒ innej wartoúci niø odczytana. W†mikrokontrolerze ATmega8 rejestr OCR1x jest odczytywany przed jego aktualizacj¹ - nie korzysta siÍ z†dodatkowego bufora. ZapamiÍtywanie stanu wyjúcia OCnx Poziom wyprowadzenia OCnx w†mikrokontrolerze ATmega8 jest zapamiÍtywany przed zablokowaniem trybu Output Compare. Ponowne jego odblokowanie przywraca zapamiÍtywany stan. Wszystkie wyjúcia wyniku porÛwnaÒ†s¹ ustawiane na zero po wyzerowaniu mikrokontrolera. Zmiany dotycz¹ce przetwornika analogowo-cyfrowego Przetwornik A/C zosta³ w†mikrokontrolerze ATmega8 ulepszony w†porÛwnaniu z†AT90S4433 o: - obs³ugÍ 10-bitowych wynikÛw adjustowanych w†lewo lub w†prawo, - wyposaøenie uk³adu w†dwa dodatkowe kana³y ADC (tylko dla obudÛw MLF i†TQFP). Projektuj¹c urz¹dzenia wykorzystuj¹ce przetworniki A/C w†oparciu o†mikrokontroler ATmega8, trzeba pamiÍtaÊ, øe kana³y ADC4 i†ADC5 charakteryzuj¹ siÍ w†nim mniejsz¹ dok³adnoúci¹ niø pozosta³e. Niedogodnoúʆta wynika ze wspÛ³dzielenia wyprowadzeÒ przypisanych do tych kana³Ûw z†interfejsem 2-wire. Konsekwencj¹ takiego rozwi¹zania jest koniecznoúÊ zasilania ich z†napiÍcia Vcc, nie AVCC. Parametry elektryczne zamieszczono w†notach katalogowych. Ustawienie bitu ADCBG w†rejestrze ADMUX powodowa³o w†mikrokontrolerze AT90S4433 do³¹czenie ürÛd³a referencyjnego (1,22 V) do wybranego wejúcia przetwornika A/ C. Ten sam efekt jest osi¹gany w†ATmega8 przez ustawienie bitÛw
MUX3...0 na 1110b. Miejsce bitu ADCBG zosta³o zajÍte w†mikrokontrolerze ATmega8 przez bity REFS1/0 ustalaj¹ce wartoúÊ napiÍcia referencyjnego dla przetwornika A/C. Zmiany systemu zarz¹dzania moc¹ W†mikrokontrolerze ATmega8 zaimplementowano dodatkowe tryby uúpienia. Tak wiÍc bit SM stosowany w†AT90S4433 zosta³ teraz zast¹piony przez bity SM2...0. Powi¹zania miÍdzy starymi i†nowymi ustawieniami s¹ nastÍpuj¹ce: SM=0 (AT90S4433) odpowiada SM2...0=000b (ATmega8) SM=1 (AT90S4433) odpowiada SM2...0=010b (ATmega8) Waøne jest ponadto, øe zmieniono po³oøenie bitu SE. SzczegÛ³y w†notach katalogowych. Zmiany w†SPI i†USART Obydwa interfejsy mog¹ obecnie pracowaÊ z†podwÛjn¹ prÍdkoúci¹. UART stosowany w†AT90S4433 jest zast¹piony USART-em w†ATmega8. Zmiany s¹ identyczne jak w†mikrokontrolerach ATmega163 i†ATmega323. Zmiany w†interfejsie programowania W†mikrokontrolerze ATmega8 wprowadzono kilka udoskonaleÒ interfejsu programowania. SzczegÛlnie waøne s¹ te, ktÛre dotycz¹ interfejsu In-System Programming. Zmiany s¹ zwi¹zane z†wprowadzeniem dodatkowych bezpiecznikÛw w†uk³adzie ATmega8. SzczegÛ³y w†notach katalogowych. Zmieniono rÛwnieø algorytm programowania rÛwnoleg³ego. Obecnie wykorzystuje siÍ dodatkowe wyprowadzenia PAGEL (PD7) i†BS2 (PA0) niezbÍdne do prawid³owego programowania pamiÍci Flash, EEPROM i†dodatkowych bezpiecznikÛw. Niestety uleg³ zmianie rÛwnieø timing operacji programowania. SzczegÛ³y w†notach katalogowych. Ustawienia bezpiecznikÛw W†tab. 7 opisano wszystkie zmiany zwi¹zane z†bezpiecznikami stosowanymi w†mikrokontrolerze ATmega8.
Tab. 8. Porównanie ustawienia watchdoga w AT90S4433 i ATmega8 Układ AT90S4433 ATmega8 ATmega8
WDTON
Poziom za− bezpieczenia
Stan początkowy WDT
Jak zablo− kować WDT?
Jak zmienić time−out?
N/A
N/A
zablokowany
bez restrykcji
niezaprogra− mowany zaprogramo− wany
1
zablokowany
2
odblokowany
sekwencja czasowa sekwencja czasowa zawsze odblokowany
Elektronika Praktyczna 12/2002
sekwencja czasowa sekwencja czasowa
Oscylatory i†ustawienie opÛünienia startu Mikrokontroler ATmega8 wykorzystuje wiÍcej oscylatorÛw i†ustawieÒ czasu startu niø AT90S4433. Podczas oczekiwania na wyjúcie z†trybu Power-down moøe korzystaÊ z†czÍstotliwoúci CPU, podczas gdy AT90S4433 wykorzystywa³ do tego celu jedynie oscylator watchdoga. WiÍcej informacji zwi¹zanych z†faz¹ Start-up mikrokontrolera jest zawartych w†rozdziale System Clock and Clock Options. SzczegÛln¹ uwagÍ naleøy zwrÛciÊ na zmiany ustawieÒ bezpiecznikÛw w†trybie ISP, ktÛry jest zaleøny od zegara systemowego. Z³e ustawienie oscylatora moøe uniemoøliwiÊ ponowne zastosowanie programowania szeregowego. WÛwczas bÍdzie moøliwe jedynie zastosowanie programowania rÛwnoleg³ego. Wykorzystanie oscylatora jako ürÛd³a przebiegÛw zegarowych poprzez wyjúcie XTAL2 jest w†AT90S4433 moøliwe bez øadnych ograniczeÒ. W†ATmega8 naleøy w†tym celu zaprogramowaÊ bezpiecznik CKOPT. Trzeba pamiÍtaÊ o†zwiÍkszonym poborze mocy w†takiej konfiguracji. Wyjúcie pracuje w†trybie rail-to-rail (w pe³nym zakresie napiÍcia zasilaj¹cego). Zmiany w†timerze watchdog Watchdog mikrokontrolera ATmega8 jest udoskonalon¹ wersj¹ stosowanego w†AT90S4433. Jego w³¹czenie lub wy³¹czenie nie jest tak ³atwe jak w†pierwotnym uk³adzie. Obecnie zastosowano dwupoziomowe zabezpieczenie, ustawiane bezpiecznikiem WDTON (patrz tab. 8). CzÍstotliwoúÊ pracy watchdoga w†ATmega8 dochodzi do 1MHz bez wzglÍdu na wartoúÊ napiÍcia zasilaj¹cego (poprzednio obowi¹zywa³o to tylko dla napiÍcia rÛwnego 5†V). Przed zastosowaniem watchdoga koniecznie trzeba zapoznaÊ siÍ z†not¹ katalogow¹. Na podstawie materia³Ûw firmy Atmel opracowa³ Jaros³aw Doliñski, AVT
[email protected]
75
P R O G R A M Y
Środowisko programistyczne dla mikrokontrolerów AVR Z†pewnoúci¹ wiÍkszoúÊ elektronikÛw zauwaøy³a, øe ostatnio nasta³a moda na stosowanie mikrokontrolerÛw jednouk³adowych nawet w†bardzo prostych uk³adach. SzczegÛlnym zainteresowaniem cieszy siÍ rodzina AVR firmy Atmel. S¹ to doúÊ nowoczesne, szybkie i†bogato wyposaøone mikrokontrolery. Aby u³atwiÊ uøytkownikowi uruchamianie uk³adÛw, producent wprowadzi³ moøliwoúÊ programowania uk³adÛw juø po zamontowaniu w†systemie docelowym. Bardzo interesuj¹ce cechy tych mikrokontrolerÛw s¹ zwi¹zane z†ich architektur¹ i†list¹ rozkazÛw stworzon¹ z†myúl¹ o†stosowaniu kompilatorÛw jÍzyka C. Nie chcÍ w†tym miejscu wywo³ywaÊ polemiki miÍdzy osobami uznaj¹cymi za jedynie ìs³usznyî jÍzyk asembler i†ich przeciwnikami. Jak zwykle prawda leøy poúrodku. Asembler pozwala úciúle kontrolowaÊ zasoby i†przebieg programu, a†jÍzyki wysokiego poziomu - skrÛciÊ czas przygotowywania programu, ktÛry jednoczeúnie moøe byÊ bardziej czytelny. Atmel udostÍpnia nieodp³atnie zintegrowane úrodowisko programistyczne dla AVR-Ûw - oprogramowanie AVR Studio. Posiada ono edytor (z†rozpoznawaniem sk³adni), asembler, symulator umoøliwiaj¹cy úledzenie wykonywania programÛw z†podgl¹dem wszystkich wbudowanych w†mikrokontroler uk³adÛw. Da siÍ
Rys. 1
Elektronika Praktyczna 12/2002
rÛwnieø tworzyÊ, kompilowaÊ i†uruchamiaÊ programy napisane w†jÍzyku C. Ta ostatnia cecha daje duøe moøliwoúci, ale rÛwnieø sprawia najwiÍcej k³opotÛw w†poprawnym skonfigurowaniu úrodowiska i†dopasowaniu do niego kompilatora. Dobrym uzupe³nieniem dla AVR Studio jest bezp³atny kompilator jÍzyka C†- AVR-GCC. Pierwotnie powsta³ on z†myúl¹ o†systemach typu Unix, ale po pewnym czasie przeniesiono go rÛwnieø na platformÍ Windows. GCC to skrÛt od GNU Compiler Collection, a†GNU to skrÛt od GNU's Not Unix. WiÍcej informacji o†GCC i†projekcie GNU moøna znaleüÊ na stronie g³Ûwnej GCC (http:// gcc.gnu.org/).
Instalacja kompilatora Przed instalacj¹ naleøy zaopatrzyÊ siÍ w†pakiet instalacyjny AVR-GCC w†wersji 3.2 (opatrzonej dat¹ 2002-0625) dostÍpny w postaci jednego pliku do úci¹gniÍcia ze strony AVR Freaks (http://www.avrfreaks.net) i†AVR Studio (aktualnie wersja 3.55) udostÍpnione przez Atmela na stronie internetowej firmy. Instalacja AVR-GCC sprowadza siÍ do uruchomienia instalatora i†postÍpowania wed³ug wskazÛwek. Naleøy pozwoliÊ programowi instalacyjnemu za³oøyÊ domyúlny katalog. Podczas instalacji nie powinny siÍ pojawiÊ øadne b³Ídy. Na koniec zostaniemy poinformowani o†poprawnym zakoÒczeniu instalacji. Utworzony zostaje katalog c:\avrgcc, a†w†nim kilka podkatalogÛw. Najwaøniejsze z†nich to: - avr\include - zawieraj¹cy pliki nag³Ûwkowe (.h), - avrfreaks z†plikiem avr_make (globalna czÍúÊ makefile), makefile (dla projektu) oraz plikiem wsadowym uruchamiaj¹cym kompilacjÍ gcc_cmp.bat, - bin - w†ktÛrym s¹ zawarte programy wykonywalne pakietu.
Wracamy do tematu úrodowiska AVR Studio z†bezp³atnym kompilatorem C†dla mikrokontrolerÛw AVR - GCCAVR. W†artykule przedstawimy instalacjÍ i†konfiguracjÍ tego oprogramowania do pisania, kompilacji i†uruchamiania programÛw w†C†pod system Windows.
AVR Studio rÛwnieø instaluje siÍ bardzo ³atwo, przy czym domyúlnym katalogiem jest c:\Program Files\Atmel\AVR Studio. W†podkatalogu appnotes znajduj¹ siÍ przyk³adowe programy napisane w†asemblerze i†pliki definicyjne (.inc).
Konfiguracja i†tworzenie projektu Opis konfiguracji przedstawiÍ na przyk³adzie krÛtkiego programu. Po uruchomieniu AVR Studio, z†menu Project wybieramy polecenie New.... Pojawi siÍ okno Select new project (rys. 1). W†polu Project name wpisujemy nazwÍ projektu led. Pole Location okreúla úcieøkÍ dostÍpu do tego projektu, przyjmijmy, øe bÍdzie to katalog c:\avr\pierwszy. Na koniec waøne jest, aby podúwietliÊ w†polu Project type pozycjÍ Generic 3rd Party C Compiler. Podczas klikniÍcia prawym klawiszem myszy w†oknie projektu otwiera siÍ menu podrÍczne, z†ktÛrego wybieramy Create New File... (rys. 2). W†wywo³anym oknie wpisujemy nazwÍ tworzonego pliku - led.c i†úcieøkÍ dostÍpu do katalogu, w†ktÛrym utworzyliúmy projekt. Aby zachowaÊ porz¹dek, przeci¹gamy w†oknie projektu ikonÍ z†nazw¹ nowego pliku do folderu Source Files. W†otwartym oknie zatytu³owanym led.c wpisujemy krÛtki program w†jÍzyku C (list. 1). Spowoduje on, øe mikrokontroler bÍdzie wystawia³ na wyjúciach portu B na zmianÍ poziomy wysokie i†niskie. Waøna uwaga: ostatnia linia kaødego pliku przetwarzanego przez kompilator powinna byÊ zakoÒczona znakiem koÒca linii!
77
P R O G R A M Y
Rys. 2 Maj¹c juø gotowy program, musimy go skompilowaÊ przy uøyciu AVR-GCC. Pakiet kompilatora po naszej instalacji jest juø w†zasadzie przygotowany. Trzeba jedynie utworzyÊ plik makefile w†katalogu projektu. Jest to plik tekstowy okreúlaj¹cy przebieg przetwarzania, kompilacji i†konsolidacji. Dla u³atwienia, w†pakiecie przygotowanym przez AVR Freaks plik ten zawiera parametry konfiguracyjne, ktÛre naleøy zmodyfikowaÊ dla konkretnego projektu. W†koÒcowych liniach sterowanie jest przekazywane plikowi avr_make znajduj¹cemu siÍ w†katalogu c:\avrgcc\avrfreaks, ktÛry zawiera wspÛlne dla wszystkich projektÛw polecenia i†nie jest potrzebna jego modyfikacja. Przyk³adowy plik makefile znajdziemy w†wyøej wymienionym katalogu. Naleøy go skopiowaÊ do katalogu z†projektem - w†naszym przypadku do c:\avr\pierwszy. Na list. 2 przedstawiam go w wersji w†jÍzyku polskim, przystosowanej do prezentowanego przyk³adu. Najproúciej jest go modyfikowaÊ poprzez dodanie do projektu w†AVR Studio. W†tym celu klikamy prawym klawiszem w†oknie projektu, z†menu wybieramy Add File (rys. 3) i†otwieramy plik makefile. Przeci¹gnijmy go myszk¹ do folderu Other Files. Najwaøniejsze parametry, jakie musimy przede wszystkim okreúliÊ to: - MCU, czyli typ mikrokontrolera, - TRG - nazwa pliku wynikowego, przy czym musi to byÊ ta sama naList. 1. #include
#include int main(void) { outp(0xff,DDRB); while(1) { outp(0xff,PORTB); outp(0x00,PORTB); } }
78
Rys. 3 zwa jak nazwa projektu i†programu g³Ûwnego, - SRC - lista plikÛw ürÛd³owych do kompilacji, - zaleønoúci obiektÛw wynikowych od innych plikÛw (tutaj led.o jest zaleøny od led.c) Zapis $(TRG) oznacza wywo³anie zmiennej (makra) okreúlonej wczeúniej poprzez przyporz¹dkowanie TRG=. Teraz trzeba poinstruowaÊ AVR Studio, jak ma wspÛ³pracowaÊ z†kompilatorem GCC. Upewnijmy siÍ, øe w†oknie projektu jest wybrana zak³adka Target-Debug. Wskazuj¹c myszk¹ na rdzeÒ drzewa Target-Debug, klikamy prawym klawiszem i†z†menu wybieramy pozycjÍ Settings... Pojawi siÍ okno, ktÛre naleøy wype³niÊ tak, jak to pokazano na rys. 4. Ustawienia te powoduj¹ podjÍcie odpowiednich akcji przy kompilowaniu i†debuggowaniu programu. AVR Studio uruchamia program wsadowy (gcc_cmp.bat) przeprowadzaj¹cy kompilacjÍ, a†nastÍpnie, jeúli nie zasygnalizowano øadnych b³ÍdÛw, ³aduje plik debuggera o†na-
zwie takiej, jak nazwa projektu z†rozszerzeniem .cof. Przy okazji warto utworzyÊ dodatkow¹ zak³adkÍ Clean, ktÛra bÍdzie s³uøy³a do usuwania plikÛw tworzonych przez kompilator. W†tym celu klikamy prawym klawiszem na oknie projektu i†wybieramy Targets>Add. W†polu Name wpisujemy Clean, a†poniøej wybieramy Copy settings from>Debug. Wybieramy zak³adkÍ Target-Clean i†podobnie jak wyøej modyfikujemy ustawienia. Linia polecenia ma mieÊ postaÊ c:\avrgcc\avrfreaks\gcc_cmp.bat clean, co oznacza, øe program bÍdzie wywo³ywany z†parametrem clean. Oba okienka z†grupy Run Stage Settings pozostawiamy puste. W†systemie Windows 2000 trzeba wywo³ywaÊ program wsadowy z†podkatalogu win2000, czyli c:\avrgcc\avrfreaks\win2000\gcc_cmp.bat. Jeúli w†oknie wyjúciowym AVR Studio pojawia siÍ komunikat b³Ídu, informuj¹cy o†k³opocie z†odnalezieniem pliku c:\tmpout.txt, naleøy w†pliku gcc_cmp.bat podaÊ pe³n¹ úcieøkÍ dostÍpu do pliku gcc_cmp2.bat (@start
List. 2. # Simple Makefile Volker Oth (c) 1999 # edited by AVRfreaks.net nov.2001 # tłumaczenie: Michał Lankosz sierpień 2002 ###### zmień poniższe parametry dla swojego projektu ########## #wpisz typ mikrokontrolera (np. at90s8535, attiny22, atmega128 itd.) MCU = at90s2313 #wpisz nazwę pliku docelowego (bez rozszerzenia!) TRG = led #wpisz nazwy plików źródłowych w C rozdzielając spacją SRC = $(TRG).c #wpisz dodatkowe pliki źródłowe w asemblerze ASRC = #dodatkowe biblioteki i pliki obiektowe do dołączenia (zlinkowania) LIB = #dodatkowe pliki include do kompilacji INC = #flagi dla asemblera ASFLAGS = -Wa, -gstabs #flagi dla kompilatora CPFLAGS = -g -O3 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst) #flagi dla linkera LDFLAGS = -Wl,-Map=$(TRG).map,-cref ########### tej linijki nie powinieneś modyfikować ############# include $(AVR)/avrfreaks/avr_make # zależności $(TRG).o: $(TRG).c
Elektronika Praktyczna 12/2002
P R O G R A M Y /MIN /wait cmd /c c:\avrgcc\avrfreaks\win2000\gcc_cmp2.bat %1). Na tym etapie mamy juø wszystko ustawione. W†oknie projektu wybieramy zak³adkÍ Target-Debug i†naciskamy klawisz F7 (menu Project>Build), aby skompilowaÊ program. Komunikaty kompilatora s¹ wyúwietlane w†oknie zatytu³owanym Project Output. W†katalogu projektu wygenerowany zostanie miÍdzy innymi plik led.hex. Jest to gotowy plik w†formacie Intel Hex, ktÛrym programuje siÍ mikrokontroler, na przyk³ad za pomoc¹ programatora YAAP (EP7/2002) lub Ponyprog (www.lancos.com). Ten drugi szczegÛlnie polecam ze wzglÍdu na duø¹ liczbÍ obs³ugiwanych uk³adÛw. Ca³y projekt ze wszystkimi zmodyfikowanymi plikami najproúciej jest zapisaÊ poleceniem Save All (ikona z†kilkoma dyskietkami).
Uruchamianie i†debugging programu DoúÊ waøne podczas uruchamiania nowego kodu jest analizowanie dzia³ania niektÛrych jego fragmentÛw. W†szczegÛlnoúci przydatna jest praca krokowa i†wgl¹d w†zawartoúÊ poszczegÛlnych zmiennych. årodowisko AVR Studio jest przygotowane do úledzenia dzia³ania zarÛwno programÛw napisanych w†asemblerze, jak i†w†jÍzyku C. Konieczne by³o jednak odpowiednie przystosowanie kompilatora. G³Ûwnym problemem jest to, øe kompilator GCC normalnie generuje plik debuggera w†formacie ELF, ktÛrego nie akceptuje AVR Studio. Najnowszy pakiet kompilatora zawiera juø zewnÍtrzny program konwersji formatu ELF na COFF (elfcof.exe), ktÛry jest automatycznie uruchamiany wed³ug polecenia zawartego w†pliku avr_make. Z†doúwiadczenia wiem, øe konwersja formatÛw jest b³Ídna lub AVR Studio zawiera b³Ídy. Objawiaj¹ siÍ one tym, øe nie da siÍ podgl¹daÊ niektÛrych zmiennych i†czasami nie
Rys. 4
Elektronika Praktyczna 12/2002
dzia³aj¹ pu³apki (breakpointy). Dotyczy to szczegÛlnie bardziej z³oøonych programÛw. Z†tego wzglÍdu dobrze jest, w†celu analizy danego fragmentu programu, utworzyÊ pomocniczy projekt zawieraj¹cy tylko istotne dla jego dzia³ania instrukcje. Przeúledzimy teraz skompilowany program led. Zauwaømy, øe po pierwszej kompilacji sta³y siÍ aktywne niektÛre przyciski na gÛrnej listwie AVR Studio zawieraj¹cej zestaw poleceÒ do sterowania przebiegiem programu. Oznacza to, øe zosta³ odnaleziony plik dla symulacji led.cof. Automatycznie rÛwnieø otworzy³o siÍ okno Simulator Options (rys. 5), w†ktÛrym moøna wybraÊ typ mikrokontrolera i†czÍstotliwoúÊ jego taktowania. Opcje te s¹ dostÍpne z†menu Options>Simulator Options. SymulacjÍ rozpoczynamy klawiszem F5 (Run) lub wybieraj¹c ikonÍ 9. W†oknie z†programem ürÛd³owym pojawia siÍ øÛ³ta strza³ka wskazuj¹ca liniÍ kodu, ktÛra zostanie wykonana w†kolejnym kroku. Aby wykonaÊ linijkÍ wskazywan¹ strza³k¹, przyciskamy klawisz F11 (Trace Into, ikona 11). To dopiero pocz¹tek moøliwoúci symulatora. Moøemy bowiem ìzobaczyÊî poziom, jaki wystÍpuje na wyprowadzeniach portu B. W†tym celu klikamy na ikonÍ 6 (lub przyciskamy klawisze Alt+5) i†rozwijamy ga³¹ü PORTB. Wykonuj¹c kolejne kroki, obserwujemy zawartoúÊ rejestru portu wyjúciowego (rys. 6). OtwÛrzmy teraz okno procesora kombinacj¹ klawiszy Alt+3 (lub ikon¹ 4). Znajduj¹ siÍ w nim przynajmniej dwie przydatne funkcje: stoper i†licznik cykli zegarowych. DziÍki nim moøemy ³atwo zmierzyÊ czas wykonania danego fragmentu programu. W†pÍtli while programu moøna na przyk³ad zauwaøyÊ, øe na wyjúciu portu B poziom wysoki bÍdzie siÍ utrzymywa³ przez jeden
Rys. 5 cykl zegara, a†niski przez trzy. Niesymetria wynika z†budowy pÍtli. Przy tej okazji warto siÍ rÛwnieø zapoznaÊ z†moøliwoúci¹ podgl¹du kodu maszynowego úledzonego programu. Klikaj¹c na ikonce 21 (Ctrl+F11), otworzymy okno zawieraj¹ce linijki tekstu w rodzaju: +0000002C: BA18 OUT 0x18,R1 Powyøsza linia zawiera informacjÍ, øe pod adresem 2Ch znajduje siÍ instrukcja o†kodzie BA18h, ktÛrej odpowiada zapis asemblerowy OUT 0x18,R1. Uruchomienie pracy krokowej w†tym trybie powoduje wykonywanie pojedynczych instrukcji asemblera. Aby powrÛciÊ do analizy kodu w†C, ponownie uøywamy ikony 21. Za pomoc¹ ikony 19 (Shift+F5) zeruje siÍ symulowany mikrokontroler, czyli doprowadza do jego stanu wyjúciowego, jaki jest tuø po ìresecieî w†rzeczywistym uk³adzie.
Podgl¹d zmiennych OprÛcz wewnÍtrznych rejestrÛw i†pamiÍci procesora moøemy rÛwnieø podgl¹daÊ zmienne uøywane w†programie. Dla przyk³adu zmodyfikujmy nasz program led.c do postaci pokazanej na list. 3. Musimy jeszcze usun¹Ê niepotrzebne pliki z†poprzedniej kompilacji, zmieniaj¹c zak³adkÍ w†projekcie na Target-Clean i†wciskaj¹c klawisz F7. Wracamy do Target-Debug, kompilujemy i†uruchamiamy kombinacj¹ kla-
Rys. 6
79
P R O G R A M Y
Opis ikon menu AVR Studio
Ikony podglądu (Views): 1. Wartości zmiennych 2. Rejestrów 3. Pamięci 4. Istotnych parametrów pracy procesora 5. Informacji 6. Urządzeń wejścia/wyjścia
Ikony sterowania programem (Debug): 7. Dodanie zmiennej do podglądu 8. Usunięcie zmiennej z podglądu 9. Uruchomienie symulacji 10. Przerwanie symulacji 11. Krok z wejściem do funkcji 12. Krok z przeskokiem funkcji
13. Wyskoczenie z funkcji 14. Uruchomienie i zatrzy− manie w miejscu kursora 15. Wykonanie n kroków 16. Wykonanie n kroków 17. Ustawienie lub usunięcie pułapki 18. Usunięcie wszystkich pułapek 19. Wyzerowanie procesora Pozostałe
20. Kompilacja i uruchomienie programu wiszy Ctrl+F7. Klikamy na ikonÍ 7†(okularki) i†podajemy nazwÍ interesuj¹cej nas zmiennej, czyli x. Rozpoczynamy pracÍ krokow¹. Instrukcja w†pÍtli while powinna powodowaÊ przesuwanie o†jeden bit w†lewo bitÛw zmiennej x i†zapisywanie tego bajtu do rejestru wyjúciowego portu B. Rzeczywiúcie, widzimy efekt ìwÍøaî na bitach portu, podgl¹daj¹c stany jego wyjúÊ w†oknie IO. Jednak zmienna x ma przez ca³y czas wartoúÊ 0xFF. Taki stan rzeczy spowodowa³ kompilator, ktÛry zoptymalizoList. 3. #include #include char x; int main(void) { outp(0xff,DDRB); x = 0xff; while(1) outp(x <<= 1,PORTB); }
80
wa³ kod. Kompilator ìstwierdzi³î, øe nie ma potrzeby specjalnie czytaÊ i†zapisywaÊ zmiennej x do pamiÍci RAM. Wystarczy operowaÊ na jednym z†rejestrÛw, co skrÛci kod i†jednoczeúnie przyspieszy dzia³anie programu. Dla celÛw uruchomieniowych moøna zmieniÊ parametry kompilacji tak, aby kod nie by³ optymalizowany. Wystarczy w†pliku makefile w†linii zaczynaj¹cej siÍ od wyrazu CPFLAGS= zamiast -O3 wpisaÊ -O0. Po usuniÍciu plikÛw poprzedniej kompilacji, ponownej kompilacji i†uruchomieniu pracy krokowej, zmienna x jest juø obserwowalna. RÛønice moøna dostrzec, analizuj¹c kod asemblerowy tego fragmentu programu. Gdy program jest z³oøony z†kilku plikÛw ürÛd³owych i†nag³Ûwkowych, dodajemy ich nazwy do odpowied-
21. Przełącznik widoku źródła
nich folderÛw w†oknie projektu. W†ten sposÛb mamy do nich szybki i†³atwy dostÍp. Naleøy pamiÍtaÊ, aby w†pliku makefile znalaz³a siÍ lista plikÛw do kompilacji i†odpowiednie zaleønoúci. Po przebrniÍciu przez przedstawiony opis i†uruchomieniu pierwszego programu, proponujÍ odwiedziÊ stronÍ AVR Freaks zawieraj¹c¹ mnÛstwo przyk³adÛw, projektÛw i†dokumentÛw pomocniczych. Mam nadziejÍ, øe niniejszy opis pozwoli pokonaÊ trudy zwi¹zane z†przygotowaniem wspÛ³pracy AVR Studio z†kompilatorem AVR-GCC i†zachÍci CzytelnikÛw zainteresowanych programowaniem mikrokontrolerÛw do w³asnych eksperymentÛw. Micha³ Lankosz [email protected] http://sq9fqq.prv.pl
Elektronika Praktyczna 12/2002
M I N I P R O J E K T Y
Odbiornik radiowy AM
W³asnorÍczne wykonanie radioodbiornika przynosi kaødemu elektronikowi duøo satysfakcji, nawet wtedy, gdy jest to urz¹dzenie tak proste, jak opisane w†artykule. Rekomendacje: projekt dos³ownie dla kaødego, kto choÊby trochÍ lubi lutownicÍ. Ponadto, samodzielne wykonanie radia jest dla elektronika rodzajem sprawdzianu umiejÍtnoúci.
Na rys. 1 przestawiono schemat elektryczny odbiornika. Inwertery U1C i†U1B pracuj¹ jako wzmacniacze w.cz., a dioda D1 z†kondensatorem C4 stanowi obwÛd detektora. Cztery kolejne (po³¹czone rÛwnolegle) inwertery wraz z rezystorami R3i R4 tworz¹ wzmacniacz mocy. Obwody wejúciowe zosta³y zestrojone na czÍstotliwoúÊ Programu I†Polskiego Radia. Mimo konstrukcyjnej prostoty odbiornika, Program I Polskiego Radia moøe byÊ odbierany przez odbiornik bez anteny zewnÍtrznej, w†promieniu co najmniej 200 km od nadajnika w†Solcu Kujawskim.
Odbiornik wraz z bateri¹ i anten¹ mieúci siÍ na jednej p³ytce drukowanej o†wymiarach 25 cm x†3,5 cm. P³ytka drukowana przypomina linijkÍ szkoln¹. Takie wymiary s¹ narzucone rozmiarem anteny ferrytowej uøytej do budowy odbiornika. AntenÍ ferrytow¹ wraz z†cewkami odzyskano z†zepsutego odbiornika radiowego z†zakresem fal d³ugich. Takie rozwi¹zanie pozwala na unikniÍcie czasoch³onnego nawijania cewek, co dla wiÍkszoúci pocz¹tkuj¹cych elektronikÛw jest zajÍciem nielubianym. Po zmontowaniu uk³adu, sprawdzeniu poprawnoúci montaøu i†w³¹czeniu zasila-
Rys. 1
WYKAZ ELEMENTÓW Rezystory R1: 2,2MΩ R2: 10kΩ R3: 1kΩ R4: 100kΩ Kondensatory C1: 100pF C2: 200pF obrotowy C3, C5, C8: 100nF C4: 10nF C6, C7: 220µF/16V
Półprzewodniki D1: 1N4148 U1: 4049 Różne L1, L2: cewka na fale długie wraz z anteną ferrytową Bateria 9V 6F22
P³ytka drukowana jest dostÍpna w AVT - oznaczenie AVT-1360. Wzory p³ytek drukowanych w formacie PDF s¹ dostÍpne w I n t e r n e c i e p o d a d r e s e m : ht t p: / / w w w . e p . c o m .pl /? pdf/ grudzien02.htm oraz na p³ycie CD-EP12/2002 w katalogu PCB.
88
nia, moøemy przyst¹piÊ do uruchamiania. Polega ono na dostrojeniu obwodu LC do czÍstotliwoúci sygna³u noúnego Programu I PR. W†zaleønoúci od uøytego kondensatora obrotowego i†cewki anteny ferrytowej, podczas strojenia moøe wynikn¹Ê potrzeba wlutowania rÛwnolegle do C2 dodatkowego kondensatora o†pojemnoúci kilkunastu...kilkudziesiÍciu pF lub przemieszczenia cewek na prÍcie ferrytowym. Krzysztof Górski, AVT Rys. 2
Elektronika Praktyczna 12/2002
S P R Z Ę T Chociaø mikrokontrolery PIC firmy Microchip nie s¹ tak popularyzowane jak AVR-y czy 8051, to jednak zdoby³y fragment krajowego rynku. Jest on na tyle duøy, øe dwaj krajowi dystrybutorzy programatorÛw firmy Elnec wprowadzili do swoich ofert wyspecjalizowane programatory opracowane z†myúl¹ o†konstruktorach stosuj¹cych PIC-e.
Prezentujemy programator PIKprog+ produkowany przez s³owack¹ firmÍ Elnec. Firma ta jest nam dobrze znana. Na ³amach EP prezentowaliúmy juø wielokrotnie jej wyroby. Oferta handlowa Elneca†jest bardzo bogata. Obejmuje zarÛwno duøe, uniwersalne programatory, jak i†ma³e wrÍcz kieszonkowe, przeznaczone dla okreúlonych rodzin mikrokontrolerÛw. Programator PIKprog+ jest reprezentantem tej drugiej grupy przyrz¹dÛw. Obs³uguje ca³¹ rodzinÍ aktualnie dostÍpnych PIC-Ûw produkowanych w†obudowach od 8- do 40-nÛøkowych. Wykorzystywane s¹ algorytmy programowania zarÛwno rÛwnoleg³ego jak i†szeregowego. OprÛcz mikrokontrolerÛw, PIKprog+ moøe rÛwnieø programowaÊ szeregowe pamiÍci z†interfejsem I 2 C†(uk³ady 24Cxx), Microwire (93Cxx) i†SPI (25Cxx). Na gÛrnej jego úciance zamontowana jest 40nÛøkowa podstawka ZIF, w†ktÛrej moøna umieszczaÊ uk³ady w†obudowach DIL o†szerokoúci 300 lub 600
mils. Jeúli zachodzi potrzeba, moøna skorzystaÊ z†bogatej oferty adapterÛw DIL/SOIC oraz DIL/PLCC dostÍpnej na stronie http:// www.elnec.com/redpr_uk.htm#UNIVERSAL_SOIC. Na úciance bocznej umieszczono gniazdo interfejsu ICSP (In Circuit Serial Programming), poprzez ktÛre programuje siÍ uk³ady zamontowane w†systemie (programowanie szeregowe). Trzeba przyznaÊ, øe jest to metoda bardzo wygodna dla uøytkownika i†z†tego wzglÍdu stosowana coraz czÍúciej. Projektuj¹c programator, zwrÛcono uwagÍ na jego szybkoúÊ dzia³ania. Z†jednej strony na parametr ten wp³ywaj¹ zastosowane algorytmy, z†drugiej zaú port, przez ktÛry odbywa siÍ komunikacja z†komputerem PC. W†PIKprog+ wykorzystywany jest standardowy port rÛwnoleg³y pracuj¹cy w†trybie ECP/EPP (zgodnie z†norm¹ IEEE1284), nie jest wiÍc potrzebna øadna specjalizowana karta instalowana w†komputerze. Uzyskuje siÍ transfer danych rzÍdu 1MB/s. Jeúli powyøsze
Tab. 1. Układy obsługiwane przez programator PIKprog+. Mikrokontrolery
serie: 12xxx, 14xxx, 16xxx, 17xxx i 18xxx, 8...40−nóżkowe (dostępne są również adaptery dla układów o innej liczbie wyprowadzeń lub w innych obudowach), programowanie szeregowe lub równoległe Pamięci szeregowe E(E)PROM: 17Cxxx, 24Cxxx, 24Fxxx, 25Cxxx, 59Cxxx, 85xxx, 93Cxxx
84
cechy po³¹czymy z†³atwoúci¹ instalacji programu obs³uguj¹cego PIKproga+ oraz z jego niewielkimi wymiarami, to okaøe siÍ, øe moøe byÊ on bardzo przydatny w†rÛønych zastosowaniach serwisowych. Wszystkie wyprowadzenia podstawki programatora s¹ dostosowane do pracy w†konfiguracji H/L/ pull_up/pull_down, co pozwala na ca³kowit¹ dowolnoúÊ topografii wyprowadzeÒ programowanych uk³adÛw. Wyprowadzenia te mog¹ prawid³owo dzia³aÊ z†napiÍciami od 1,8†V, obs³uguj¹c tym samym wszystkie aktualnie dostÍpne niskonapiÍciowe wersje uk³adÛw. Procedura programowania rozpoczyna siÍ od sprawdzenia poprawnoúci umieszczenia uk³adu w†podstawce i†jakoúci kontaktÛw pomiÍdzy nÛøk¹ uk³adu i†podstawki. Wskutek odczytu sygnatury sprawdzana jest teø zgodnoúÊ typu programowanego uk³adu zadeklarowanego w†programie z†fizycznie w³oøonym do podstawki. Zapobiega siÍ w†ten sposÛb przed ewentualnymi pomy³kami operatora. W†sk³ad standardowego wyposaøenia programatora PIKprog+ wchodzi zasilacz wtyczkowy. Jak to jest w†wyrobach Elneca, nie zastosowano wy³¹cznika zasilania, wiÍc programator jest gotowy do pracy zawsze, gdy zasilacz wtyczkowy jest w³oøony do gniazdka sieciowego. Metalowa pokrywka zabezpiecza podstawkÍ ZIF przed zakurzeniem. Jedyn¹ niedogodnoúci¹, wed³ug mojej subiektywnej oceny, jest zbyt sztywny kabel ³¹cz¹cy komputer z†programatorem. Programator po-
Elektronika Praktyczna 12/2002
S P R Z Ę T Tab. 2. Cennik usługi Keep−Current Service Opcja
e−mail
QUICK 50 DM/30 USD STANDARD 25 DM/15 USD 1/Y bezpłatnie
Rys. 1 siada znak CE. Na kr¹øku instalacyjnym znajduje siÍ kopia certyfikatu w†postaci elektronicznej.
Programator od strony PC PG4UW to program obs³uguj¹cy wiele typÛw programatorÛw Elneca†(przyk³adowe okno pokazano na rys. 2). By³ on opisywany nie tak dawno na ³amach EP, przy okazji opisu SmartProga. Dla polskiego uøytkownika niespodziank¹ jest na pewno dostÍpnoúÊ programu w polskiej wersji jÍzykowej. Po zainstalowaniu oryginalnej wersji jÍzykowej naleøy do katalogu, w†ktÛrym s¹ przechowywane pliki, przekopiowaÊ pliki dodatkowe. S¹ one dostÍpne na p³ycie instalacyjnej (rys. 1). Moøna je rÛwnieø pobraÊ ze strony internetowej Elneca (http://www.elnec.sk/sw/pg4_lng/ lng_pl.zip). Po ponownym uruchomieniu programu menu pojawia siÍ
86
Poczta − 60 DM/35 USD −
juø w†rodzimym jÍzyku. Niestety, wbudowana w†program pomoc pozosta³a w†duøej czÍúci (w tym m.in. okna informacji o†elemencie oraz niektÛre komunikaty ostrzegawcze) w†wersji angielskiej. MÛwi¹c szczerze tego typu rozwi¹zania s¹ trochÍ irytuj¹ce, bo powstaje wraøenie, øe albo czÍúÊ ìrobotyî zosta³a wykonana niepotrzebnie, albo nie zosta³a zakoÒczona. Pomijaj¹c te niedogodnoúci trzeba przyznaÊ, øe program jest wyúmienity i†w†duøej mierze stanowi o†przydatnoúci urz¹dzenia. Na uwagÍ zas³uguje trafiona w†dziesi¹tkÍ polityka Elneca, polegaj¹ca na zastosowaniu jednego programu dla wielu swoich wyrobÛw. DziÍki temu klient przywi¹zuje siÍ do firmy, gdyø kupuj¹c nowy programator, doskonale zna juø jego obs³ugÍ. Nie musi nawet specjalnie konfigurowaÊ programu - do³¹czony do komputera programator jest bowiem rozpoznawany automatycznie. W†przypadku w¹tpliwoúci moøna skorzystaÊ z†autotestu stanowi¹cego jedn¹ z†pozycji menu. Sprawdzane s¹ takie elementy jak: komunikacja z†komputerem, pamiÍÊ EEPROM, zasilanie, przetworniki cyfrowo-analogowe, sterowniki TTL, a†takøe sterowniki GND i†wyprowadzeÒ analogowych. Do jednej z†dwÛch dostÍpnych wersji testu wymagana jest specjalna podstawka diagnostyczna (jest w†wyposaøeniu standardowym).
Rys. 2 ma now¹ wersjÍ programu steruj¹cego uwzglÍdniaj¹cego propozycje zmian. Innym, bardzo sympatycznym gestem w†stronÍ klientÛw jest tzw. Keep-Current Service. DziÍki tej us³udze uøytkownik moøe liczyÊ na bieø¹ce update'y programu uwzglÍdniaj¹ce zmiany na rynku podzespo³Ûw, mieszcz¹ce siÍ w†zakresie danego programatora. Nowe wersje programu mog¹ byÊ rozsy³ane poczt¹ elektroniczn¹ lub tradycyjn¹. Us³uga KeepCurrent Service jest trzypoziomowa: - Quick - uøytkownik dostaje (tylko poprzez e-mail) bieø¹ce wersje oprogramowania oraz dokumentacji z†opÛünieniem co najwyøej miesiÍcznym. Ta opcja jest p³atna. - Standard - uøytkownik dostaje (poprzez pocztÍ tradycyjn¹ lub email) bieø¹ce wersje oprogramowania oraz dokumentacji z†opÛünieniem kwartalnym. Ta opcja jest rÛwnieø p³atna. - 1/Y - uøytkownik dostaje (tylko poprzez e-mail) bieø¹ce wersje oprogramowania oraz dokumentacji raz na rok. Ta opcja jest bezp³atna. Cennik us³ugi Keep-Current Service przedstawiono w†tab. 2.
Mocne punkty
Podsumowanie
Programatory Elneca†s¹ dostarczane ze standardow¹ dla danego typu przyrz¹du list¹ obs³ugiwanych uk³adÛw i†zastosowanych algorytmÛw programowania. Gdyby jednak uøytkownik mia³ w³asne propozycje dotycz¹ce np. zmian algorytmÛw programowania lub uwzglÍdnienia nowego uk³adu, moøe skorzystaÊ z†us³ugi AlgOR (Algorithms On Request). W†tym celu powinien wype³niÊ odpowiedni formularz, ktÛrego wzÛr jest dostÍpny na p³ycie instalacyjnej oraz na stronach WWW Elneca, a†nastÍpnie przes³aÊ go, najlepiej z†prÛbk¹ uk³adu do siedziby firmy. Po czasie niezbÍdnym do wprowadzenia poprawek otrzy-
Programatory Elneca†s¹ bardzo ìmi³e w†uøyciuî. Kto raz ich sprÛbuje, na pewno pozostanie im wierny. ZachÍt¹ jest duøa szybkoúÊ programowania oraz dobry stosunek moøliwoúci do ceny. 3-letnia gwarancja oraz dobre wsparcie techniczne rÛwnieø zachÍcaj¹ do zakupu s³owackich urz¹dzeÒ. Jaros³aw Doliñski, AVT [email protected] Dodatkowe informacje Dystrybutorami firmy Elnec s¹: - Eurodis Microdis, tel. (71) 301-04-00, [email protected], www.microdis.net. - W.G. Electronics, tel. (22) 847-97-20, 847-9721, [email protected], [email protected].
Elektronika Praktyczna 12/2002
M I N I P R O J E K T Y Wspólną cechą układów opisywanych w dziale "Miniprojekty" jest łatwość ich praktycznej realizacji. Zmontowanie układu nie zabiera zwykle więcej niż dwa, trzy kwadranse, a można go uruchomić w ciągu kilkunastu minut. Układy z „Miniprojektów” mogą być skomplikowane funkcjonalnie, lecz łatwe w montażu i uruchamianiu, gdyż ich złożoność i inteligencja jest zawarta w układach scalonych. Wszystkie układy opisywane w tym dziale są wykonywane i badane w laboratorium AVT. Większość z nich znajduje się w ofercie kitów AVT, w wyodrębnionej serii „Miniprojekty” o numeracji zaczynającej się od 1000.
„Przedłużacz” pilota RC5 Czasami leniwe polegiwanie przed telewizorem musi byÊ przerywane wskutek zbyt krÛtkiego zasiÍgu pilota. Przygotowaliúmy na øyczenie CzytelnikÛw uk³ad eliminuj¹cy ten problem. Rekomendacje: urz¹dzenie niezbÍdne w†wiÍkszoúci przypadkÛw, w†ktÛrych zasiÍg standardowego pilota jest niewystarczaj¹cy.
Niejednokrotnie spotykaliúmy siÍ z†proúbami o†projekt prostego i†skutecznego ìprzed³uøaczaî pilotÛw do odbiornika telewizyjnego, odtwarzacza wideo czy odbiornika satelitarnego. Wychodz¹c naprzeciw temu zapotrzebowaniu, opracowaliúmy prosty i†skuteczny w†dzia³aniu przed³uøacz zasiÍgu pilotÛw RC5. Pozwala on na sterowanie sprzÍtem audiowideo z†innego pomieszczenia. NajczÍúciej jest to sypialnia, gdzie widocznoúÊ pomiÍdzy pilotem a†urz¹dzeniem znajduj¹cym siÍ w†pokoju dziennym uniemoøliwiaj¹ úciany i†drzwi. Schemat elektryczny ìprzed³uøaczaî przedstawiono na rys. 1. W†czÍúci odbiorczej zastosowano scalony odbiornik podczerwieni SFH506 zawieraj¹cy w†swej strukturze fotodiodÍ odbior-
cz¹, wzmacniacz wstÍpny, uk³ad ARW, filtr o†bardzo stromej charakterystyce oraz uk³ad detekcyjny. Uk³ad formuj¹cy impulsy wyjúciowe to dwa multiwibratory monostabilne 74HC221 sterowane ze scalonego odbiornika podczerwieni. CzÍúÊ nadawcza to dwie diody nadawcze IRED sterowane z†multiwibratora poprzez wzmacniacz pr¹do-
drukowanej, ktÛrej schemat montaøowy przedstawiono na rys. 2. Ze wzglÍdu na prostotÍ uk³adow¹, montaø jest ³atwy i†nie wymaga specjalnych wskazÛwek. Jedynie diody D1 i†D2 naleøy zamontowaÊ na przewodzie o†d³ugoúci od jednego do dwÛch metrÛw, aby umieúciÊ je w†pomieszczeniu, w†ktÛrym znajduje siÍ sterowane pilotem urz¹dzenie. Krzysztof Górski, AVT [email protected]
WYKAZ ELEMENTÓW
Rys. 1
Rys. 2
Elektronika Praktyczna 12/2002
wy T2. Ca³oúÊ jest zasilana ze stabilizatora U2, ktÛry dostarcza do wszystkich obwodÛw napiÍcie +5V. Impulsy pochodz¹ce z†pilota s¹ odbierane i†dekodowane przez scalony odbiornik podczerwieni. NastÍpnie s¹ one regenerowane za pomoc¹ dwÛch generatorÛw monostabilnych i†wyemitowane przez diody IRED. Poprawna praca uk³adu sygnalizowana jest úwieceniem diody LED w†takt impulsÛw przychodz¹cych z†uk³adu formowania. Urz¹dzenie zosta³o zmontowane na niewielkiej p³ytce
Rezystory R1: 47Ω R2, R4: 4,7kΩ R3: 1,5kΩ R5, R6: 6,8kΩ R7, R8: 3,9kΩ R9, R11: 10Ω R10: 820Ω P1, P2: 10kΩ Kondensatory C1, C4: 100nF C2: 1000µF/16V C3: 470µF/10V C5: 47µF/10V C6, C7: 1nF C8: 1µF/10V Półprzewodniki D1, D2: IRED D3: LED M1: mostek 1,5A T1: BC557 T2: BD135 T3: BC237 U1: 74HCT221 U2: 7805 U3: SFH 506−36
P³ytka drukowana jest dostÍpna w AVT - oznaczenie AVT-1359. Wzory p³ytek drukowanych w formacie PDF s¹ dostÍpne w Internecie pod adresem: ht t p: //w ww .e p.c o m.pl/?pdf/ grudzien02.htm oraz na p³ycie CD-EP12/2002 w katalogu PCB.
87
K U R S
Programowe dekodowanie sygnałów zdalnego sterowania WiÍkszoúÊ wspÛ³czeúnie produkowanych elektronicznych urz¹dzeÒ powszechnego uøytku jest wyposaøona w†zdalne sterowanie, czyli tzw. ìpilotaî. DostÍpnoúÊ pilotÛw zamiennych oraz ich niska cena sk³ania do wykorzystania tego ìdobrodziejstwaî we w³asnych projektach. Celem niniejszego artyku³u jest przybliøenie Czytelnikom sposobu dekodowania - za pomoc¹ dowolnego mikrokontrolera sygna³Ûw zdalnego sterowania wysy³anych przez wiÍkszoúÊ obecnie stosowanych pilotÛw. Na pocz¹tek trochÍ historii W pierwszych systemach bezprzewodowego zdalnego sterowania wykorzystywano do przekazywania informacji o†naciúniÍciu klawiszy sygna³y wieloczÍstotliwoúciowe. Oznacza³o to, øe kaødemu klawiszowi pilota przyporz¹dkowana by³a fala prostok¹tna o†okreúlonej czÍstotliwoúci, ktÛra s³uøy³a do sterowania przetwornika piezoceramicznego lub do modulacji úwiat³a diody LED emituj¹cej úwita³o podczerwone. System ten zosta³ doúÊ szybko zast¹piony przez bardziej zaawansowane systemy cyfrowej transmisji danych, ze wzglÍdu na duø¹ komplikacje uk³adu odbiorczego oraz niewielk¹ liczbÍ komend moøliwych do przekazania. Zaniechano rÛwnieø stosowania ultradüwiÍkÛw jako medium transmisyjnego ze wzglÍdu na duø¹ podatnoúÊ na zak³Ûcenia oraz interferencje z†sygna³em odbitym od úcian pomieszczenia itp. W†wyniku ewolucji powsta³o kilka standardÛw kodowania sygna³Ûw zdalnego sterowania, a†do ich przekazywania stosuje siÍ nadal promieniowanie podczerwone.
Zasada dzia³ania toru transmisyjnego Budowa wspÛ³czesnego pilota jest bardzo prosta. Sk³ada siÍ on z†klawiatury, mikrokontrolera lub specjalizowanego uk³adu steruj¹cego, wzmacniacza pr¹dowego oraz jednej lub kilku diod emituj¹cych úwiat³o podczerwone. Mikrokontroler realizuje wszystkie funkcje zwi¹za-
Rys. 1
Elektronika Praktyczna 12/2002
ne z†identyfikacj¹ naciúniÍtego klawisza, przypisania mu odpowiedniego kodu oraz wys³ania odpowiedniego ci¹gu impulsÛw na wyjúcie steruj¹ce diod¹ úwiec¹c¹. Dla zwiÍkszenia odpornoúci na zak³Ûcenia stosuje siÍ dodatkowo modulacjÍ sygna³em cyfrowym danych kodu sygna³ o okreúlonej czÍstotliwoúci noúnej, ktÛra u³atwia odrÛønienie w³aúciwego sygna³u pilota od zak³ÛceÒ wywo³anych oúwietleniem odbiornika przez úwiat³o s³oneczne lub sztuczne. W†zwi¹zku z†tym dioda úwiec¹ca w†pilocie nie úwieci ci¹g³ym úwiat³em, tylko ìmrugaî z†czÍstotliwoúci¹ od 35 do 40 kHz. Odbiornik sk³ada siÍ z†filtru podczerwieni, za ktÛrym umieszczona jest fotodioda przekszta³caj¹ca padaj¹ce promieniowanie úwietlne na sygna³ elektryczny. Po odpowiednim wzmocnieniu we wzmacniaczu wejúciowym, sygna³ jest przepuszczony przez filtr pasmowo-przepustowy zestrojony na czÍstotliwoúÊ noún¹ (35...40†kHz), a†nastÍpnie podawany na detektor z†przerzutnikiem Schmitta. Wzmacniacz i†filtr objÍty jest pÍtl¹ automatycznej regulacji wzmocnienia, dziÍki czemu ustalane jest odpowiednie wzmocnienie uk³adu w†zaleønoúci od natÍøenia sygna³u promieniowania podczerwonego i†poziomu zak³ÛceÒ. Na wyjúciu detektora uzyskuje siÍ ci¹g bitÛw odpowiadaj¹cy kodowi naciúniÍtego klawisza. Zazwyczaj odbiornik jest wykonany jako pojedynczy element, zamkniÍty w†trÛjkoÒcÛwkowej obudowie wykonanej z†tworzywa przepuszczaj¹cego promienie podczerwone. Aby u³atwiÊ wspÛ³pracÍ
odbiornika z†mikrokontrolerem, sygna³ wyjúciowy odbiornika ma postaÊ zanegowan¹. Oznacza to, øe w†stanie spoczynkowym na wyjúciu odbiornika wystÍpuje poziom wysoki, a†pojawienie siÍ sygna³u (impulsu) powoduje wystÍpowanie na nim poziomu niskiego (zbocza opadaj¹cego).
Sposoby kodowania danych Kaøde naciúniÍcie klawisza w†pilocie powoduje wys³anie paczki impulsÛw identyfikuj¹cej urz¹dzenie, do ktÛrego dany sygna³ jest przeznaczony (adres) oraz kod naciúniÍtego klawisza. Ta paczka impulsÛw sk³ada siÍ z†kilkunastu lub kilkudziesiÍciu bitÛw zakodowanych w†sposÛb umoøliwiaj¹cy jak najlepsze odrÛønienie bitu o†wartoúci ì0î od ì1î - czasami uzupe³nionych o†bity startu, stopu i†sygna³ ìrozbiegowyî poprzedzaj¹cy transmisjÍ. Bity startu maj¹ na celu odpowiednie wysterowanie uk³adu ARW w†odbiorniku i†dostosowanie wzmocnienia do bieø¹cego poziomu sygna³u IR. Ponad 95% stosowanych obecnie pilotÛw wykorzystuje jeden z†trzech sposobÛw kodowania przesy³anych informacji. Przedstawiamy je poniøej.
Space Coding Pierwszy z†nich, zwany space coding, polega na modyfikacji czasu przerwy pomiÍdzy przesy³anymi impulsami (rys. 1). W†tym systemie czas trwania impulsu jest sta³y - nazwijmy go T. Jeúli dwa kolejne impulsy przedzielone s¹ przerw¹ o†czasie trwania rÛwnym T, to przesy³any bit ma wartoúÊ ì0î, a†jeúli przerwa ta wynosi 3T, to bit ma wartoúÊ ì1î Ostatni bit zakoÒczony jest impulsem o†czasie trwania T. WartoúÊ czasu T wynosi od 400 do 600 µs. Transmisja jednego rozkazu poprzedzona jest
95
K U R S List. 1. // kwarc 7.372MHz #define IR_PORT PORTB #define IR_BIT PB0
// PB0 to wejście z odbiornika
unsigned int get_ir(unsigned char std) // parametr std określa standard (0-4) { unsigned char i, T2, T4, time, tmp = 0; unsigned int code; code = 0; timer0_source(CK256); // prescaler timera 0 na ok. 32us timer0_start(); // uruchom timer loop_until_bit_is_set(IR_PORT-2, IR_BIT); // pomiń nagłówek if(std < 2) // standard REC80 lub NEC80 { timer0_start(); while (bit_is_set(IR_PORT-2, IR_BIT)) { T2 = inp(TCNT0); if (T2 >= 140) // maksymalny czas oczekiwania ok. 5ms return 0; // powrót z błędem } // Pomiar czasu T timer0_start(); // Uruchom timer loop_until_bit_is_set(IR_PORT-2, IR_BIT); T2 = inp(TCNT0); // Odczytaj czas T2 = T2 * 2; // Punkt podzialu (T lub 3T) T4 = T2 * 2; // maksymalny czas oczekiwania na bit(4T) // pętla dekodowania kolejnych bitów // 48 bitów dla REC80, 32 dla NEC80 for (i = 0; i < ((std == 0) ? 48 : 32); i++) { timer0_start(); // uruchom timer while(1) { time = inp(TCNT0); if (time > T4) return 0; // przekroczenie czasu bitu // pomiar czasu trwania "0" if (bit_is_clear(IR_PORT-2, { tmp <<= 1; // if (time >= T2) // tmp++; // break; // }
IR_BIT)) // logika ujemna! przesuń wynik o 1 bit jeśli czas większy od 2T bit jest jedynką (ustaw LSB) wyjdź z pętli
} // zapamiętanie wyniku if (std == 0) // { if( i == 39) // code = (u16)tmp << 8; if( i == 47) // code += tmp; } else // { if( i == 15) // code = (u16)tmp << 8; if( i == 31) // code += tmp; }
REC80 starszy bajt młodszy bajt
NEC80 bardziej znaczący bajt mniej znaczący bajt
// zaczekaj na nastepne "0" loop_until_bit_is_set(IR_PORT - 2, IR_BIT); } return (code);
// koniec odbioru standardu SONY
} else if(std < 4) { if (inp(TCNT0) <= 60) return 0;
// Standard SONY // Nagłówek ? // Nie - wróć z błędem
// pętla dekodowania kolejnych bitów // 12 lub 15 bitów do odczytania for(i=0; i < ((std == 3) ? 11 : 14); i++) { tmp = 0x01; // poczekaj na początek impulsu while (bit_is_set(IR_PORT-2, IR_BIT)) { T2 = inp(TCNT0); if (T2 >= 140) // przekroczenie czasu bitu ? return 0; // błąd } timer0_start(); // pomiar czasu trwania impulsu
96
nag³Ûwkiem sk³adaj¹cym siÍ z†sygna³u trwaj¹cego 16T oraz przerwy trwaj¹cej 4T. Standard ten stosowany jest g³Ûwnie przez firmÍ Panasonic, ale jest bardzo chÍtnie wykorzystywany przez wiele innych firm. Istniej¹ dwie odmiany tego standardu: REC80, w†ktÛrym przesy³ane jest 48 bitÛw danych, oraz NEC80, w†ktÛrym przesy³a siÍ 32 bity.
Pulse Coding Kolejny sposÛb kodowania - zwany pulse coding - polega na modyfikacji szerokoúci emitowanego impulsu (rys. 2). Ten system kodowania jest stosowany g³Ûwnie przez firmÍ Sony. W†tym sposobie ì1î logicznej przyporz¹dkowano impuls trwaj¹cy 1,2 ms, a†ì0î logicznemu impuls o†czasie 0,6 ms. PoszczegÛlne impulsy przedzielone s¹ przerw¹ o†sta³ej d³ugoúci - 0,6 ms. Nag³Ûwek transmisji sk³ada siÍ z†impulsu trwaj¹cego 2,4 ms i†przerwy o†d³ugoúci 0,6 ms. Standard ten wystÍpuje rÛwnieø w†dwÛch odmianach, w†ktÛrych przesy³ane jest 12 lub 15 bitÛw kodu, pocz¹wszy od bitu najmniej znacz¹cego. Transmisja jednego kodu w†tym standardzie trwa ok. 45 ms.
Shift Coding Trzeci sposÛb kodowania sygna³Ûw zdalnego sterowania - RC-5 - jest stosowany przez firmÍ Philips. Po naciúniÍciu klawisza pilota jest generowane 14bitowe s³owo kodowe zawieraj¹ce 2 bity startowe, bit úwiadcz¹cy o†przytrzymaniu klawisza, 5-bitowy adres urz¹dzenia i†6bitowy kod przesy³anej komendy (rys. 3). Czas trwania jednego bitu wynosi 1,778 ms, a transmisji kompletnego s³owa kodowego 25ms. OdstÍp miÍdzy kolejnymi s³owami kodu wynosi 114 ms. Bity ramki s¹ kodowane bifazowo (inaczej Shift Coding) - jedynka logiczna sk³ada siÍ kolejno z†przerwy i†z†impulsu o†czasach trwania rÛwnych po³owie czasu trwania bitu, a†zero logiczne odwrotnie czyli z†impulsu oraz przerwy. Inaczej mÛwi¹c, przy ì1î mamy narastaj¹ce zbocze sygna³u w†po³owie czasu trwania bitu, a†przy ì0î - opadaj¹ce.
Dekodowanie Sygna³ wyjúciowy z†odbiornika podczerwieni naj³atwiej jest dekodowaÊ za pomoc¹ odpowiednio oprogramowanego mikrokontrolera. Wystarczy wprowadziÊ ten sygna³ bezpoúrednio na dowoln¹ liniÍ portu I/O skonfigurowanego jako wejúcie, a†ca³¹ ìrobotÍî wykona zawarty w†mikrokontrolerze program. Czasami dobrze jest, gdy linia wejúciowa mikrokontrolera ma moøliwoúÊ wygenerowania przerwania w†celu powiadomienia mikrokontrolera o†pocz¹tku transmisji, lecz nie jest to niezbÍdne. Do dekodowania sygna³Ûw kaødego z†opisanych standardÛw jest potrzebna inna procedura, wiec musimy z†gÛry okreúliÊ, jaki sygna³ bÍdziemy dekodowaÊ lub umieúciÊ w†pamiÍci mikrokontrolera wszystkie procedury dekodowania i†w³¹czyÊ w program steruj¹cy prac¹ mikrokontrolera procedu-
Elektronika Praktyczna 12/2002
K U R S List. 1 − cd. while (bit_is_clear(IR_PORT-2, IR_BIT)) { T2 = inp(TCNT0); if (T2 >= 140) // przekroczenie czasu bitu return 0; // błąd } if (inp(TCNT0) >= 25) // czas impulsu większy niż 1ms ? code += ((u16)tmp << i); // ustaw odpowiedni bit wyniku } return (code);
// koniec odbioru
} else // std=4 czyli RC-5; { for(i=0; i<13; i++) // pozostało 13 bitów { if(bit_is_clear(IR_PORT-2, IR_BIT) ) T2 = 0; // aktualnie jest 1 else T2 = 1; // aktualnie jest 0 timer0_start(); // uruchom timer while(1) { time=inp(TCNT0); if(time > 0x21) // przekroczenie czasu bitu ? return 0; // błąd // narastające zbocze w połowie bitu ? if(bit_is_clear(IR_PORT-2, IR_BIT) && (T2==1) ) { tmp <<= 1; // tak - przesuń wynik tmp++; // i zapisz "1" break; } // opadające zbocze w połowie bitu ? else if(bit_is_set(IR_PORT-2, IR_BIT) && (T2==0) ) { tmp <<= 1; // tak - przesuń wynik break; // i zapisz "0" } } // zapamiętanie adresu urządzenia if(i == 6) { // zapisz adres i code = (tmp & 0x5f) << 8; // obetnij troggle bit tmp=0; // zeruj bajt odbioru } timer0_start(); while(1) { time=inp(TCNT0); if(time > 0x21) break; } } code += tmp; return(code);
// opóźnienie o 3/4 czasu bitu
// zapamiętanie kodu komendy // koniec odbioru standardu RC-5
} }
rÍ rozpoznania standardu. Do odmierzania okreúlonych odcinkÛw czasu najlepiej jest wykorzystaÊ sprzÍtowy timer. Na list. 1 przedstawiono uniwersaln¹ funkcjÍ dekodowania sygna³Ûw poszczegÛlnych standardÛw we wszystkich piÍciu wersjach napisan¹ w†jÍzyku C, przeznaczon¹ dla mikrokontrolerÛw AVR (do skompilowania bezp³atnym kompilatorem AVR-GCC). Jako parametr naleøy podaÊ numer standardu (0=REC80, 1=NEC80, 2=SONY15, 3=SONY12, 4=RC5). Funkcja zwraca dwubajtowy kod naciúniÍtego klawisza lub wartoúÊ 0, jeúli wyst¹pi³ b³¹d odbioru. Dla niektÛrych standardÛw jest zwracany tylko fragment s³owa kodowego, lecz wystarcza to do jednoznacznej identyfikacji naciúniÍtego klawisza. Na pocz¹tku inicjowane jest kilka zmiennych oraz uruchamiany timer. Konfiguracja preskalera powoduje, øe timer zwiÍksza swoj¹ zawartoúÊ co oko-
Elektronika Praktyczna 12/2002
³o 32 µs. NastÍpnie trzeba odczekaÊ do koÒca czasu trwania impulsu. Po pojawieniu siÍ na wejúciu poziomu wysokiego, w†zaleønoúci od wybranego standardu, sterowanie zostaje przekazane do jednego z†trzech fragmentÛw. Jeúli zmienna std jest rÛwna 0 lub 1, to bÍdziemy dekodowaÊ sygna³ w†formacie Space. Najpierw omijana jest pierwsza przerwa i†jest sprawdzane, czy nie jest zbyt d³uga. NastÍpnie zerowany
jest licznik timera i†rozpoczyna siÍ pomiar czasu trwania impulsu. Zmierzona wartoúÊ czasu po pomnoøeniu przez 2 s³uøy do rozrÛønienia ì0î trwaj¹cego T i†ì1î trwaj¹cej 3T. Na 4T zostaje ustawiony maksymalny czas trwania przerwy pomiÍdzy impulsami. NastÍpnie rozpoczyna siÍ pÍtla odbioru 32 lub 48 bitÛw danych, w†ktÛrej mierzony jest czas trwania przerwy pomiÍdzy impulsami. Jeúli jest on krÛtszy od 2T, to odczytany bit ma wartoúÊ ì0î, jeúli pomiÍdzy 2T a†4T, to odczytany bit ma wartoúÊ ì1î, a†jeúli powyøej 4T, to generowany jest b³¹d i†funkcja get_ir zwraca wartoúÊ 0. NastÍpnie sprawdzany jest numer odbieranego bitu i†w†odpowiednim momencie, w†zaleønoúci od tego, czy odbieramy 32, czy 48 bitÛw, kolejno do bardziej i mniej znacz¹cego bajtu zmiennej code wpisywana jest zawartoúÊ tymczasowego rejestru odbioru. NastÍpnie odczekuje siÍ do koÒca czasu trwania impulsu i†rozpoczyna siÍ kolejny obieg pÍtli. Po odczytaniu wszystkich bitÛw zwracana jest wartoúÊ zmiennej code i†funkcja koÒczy dzia³anie. Jeúli zmienna std jest rÛwna 2 lub 3, to bÍdziemy dekodowaÊ sygna³y w†formacie Pulse. Najpierw sprawdzane jest, czy pierwszy impuls trwa³ d³uøej niø 2†milisekundy, co oznacza, øe by³ to prawid³owy nag³Ûwek. NastÍpnie rozpoczyna siÍ pÍtla odbioru kolejnych 11 lub 14 bitÛw. W†zmiennej tmp ustawiamy ì1î na najmniej znacz¹cej pozycji. BÍdzie ona s³uøy³a jako maska numeru odbieranego bitu. NastÍpnie naleøy odczekaÊ do koÒca trwania przerwy, sprawdzaj¹c przy okazji, czy nie by³a zbyt d³uga. NastÍpnie zerowany jest timer i†rozpoczyna siÍ pomiar czasu trwania impulsu. Jeúli zmierzony czas jest d³uøszy od 1†ms, to odebrany bit jest rÛwny ì1î, jeúli krÛtszy, to ì0î. Przekroczenie czasu 4,5 ms traktowane jest jako b³¹d odbioru. Jeúli bit by³ jedynk¹, to na ì1î ustawiany jest rÛwnieø odpowiedni bit zmiennej code. Na tym koÒczy siÍ jeden obieg pÍtli i†rozpoczynamy odbiÛr kolejnego bitu. Po odczytaniu wszystkich bitÛw zwracana jest wartoúÊ zmiennej code i†funkcja koÒczy dzia³anie. Jeúli zmienna std jest rÛwna 4, to bÍdziemy dekodowaÊ sygna³ w†formacie Shift, czyli RC-5. Poniewaø pierwszy impuls zosta³ pominiÍty na pocz¹tku, dekodowanych jest 13 pozosta³ych bitÛw. Na pocz¹tku pÍtli sprawdzany jest i†zapamiÍtywany w†zmiennej T2 aktualny stan wejúcia. NastÍpnie zerowany
Rys. 2
97
K U R S Funkcje pomocnicze
List. 2. unsigned char ir_active(void) { unsigned char i = 50; while (i-- != 0) { if (bit_is_clear(IR_PORT-2, return 1; } return 0; }
// liczba kolejnych odczytów stanu wejścia
IR_BIT)) // testuj wejście // jest stan niski // no nie tym razem J
... // gdzieś w głównej pętli programu if (ir_active()) // jeśli stwierdzono aktywność if (code = get_ir(standard)); // odbierz kod i jeśli nie ma błędu { ... // tu jest reakcja na pilota } ...
List. 3. SIGNAL(SIG_ INTERRUPT0) { unsigned int temp; temp = get_ir(standard); if (temp) { code = temp; // code - globalna zmienna zawierająca kod klawisza ir_flag = 1; // ir_flag - flaga prawidłowego odebrania transmisji } // zerowana po obsłużeniu wyniku w programie głównym } ... // gdzieś w głównej pętli programu if (ir_flag) // jeśli stwierdzono aktywność { ... // tu jest reakcja na pilota } ...
List. 4. unsigned char recognize_std(void) { unsigned char stand = 0; // numer standardu unsigned char i=4; // licznik prób while(1) { if (ir_active()) // jeśli wykryto sygnał { if (get_ir(stand)) // jeśli nie ma błędu return (stand); // znaleziono właściwy standard -> koniec else { if(--i == 0) // zmniejsz licznik prób i jeśli =0 { stand = (stand+1) % 5; // sprawdź kolejny standard i=4; // ustaw od nowa licznik prób } } } } }
jest timer i†rozpoczyna siÍ odbiÛr jednego bitu. Jeúli w†czasie 1†ms nast¹pi zmiana poziomu na wejúciu odbiornika, to w†zaleønoúci od poprzedniego stanu mamy narastaj¹ce zbocze w†po³owie bitu, ktÛre oznacza, øe bit ma wartoúÊ ì0î lub opadaj¹ce zbocze oznaczaj¹ce bit rÛwny ì1î. Zapisujemy go do najmniej znacz¹cego bitu zmiennej tmp i†przesuwamy j¹ w†lewo. NastÍpnie odczekujemy oko³o 0,5 czasu trwania jednego bitu, aby moøna by³o okreúliÊ kierunek kolejnego zbocza wystÍpuj¹cego w†po³owie bitu. Po odebraniu szÛstego bitu, do bardziej znacz¹cego bajtu zmiennej code zapisywany jest kod urz¹dzenia (po usuniÍciu bitu úwiadcz¹cego o†przytrzymaniu
98
klawisza, ktÛry zmienia wartoúÊ po kaødym naciúniÍciu klawisza) oraz zerowana jest zmienna tmp. Po odebraniu ostatniego bitu, w†mniej znacz¹cym bajcie wyniku zapamiÍtywany jest kod komendy i†funkcja zwraca wartoúÊ zmiennej code, koÒcz¹c dzia³anie.
Funkcje get_ir naleøy wywo³aÊ w†momencie wykrycia ì0î logicznego na wejúciu z†odbiornika, czyli w†momencie pojawienia siÍ pierwszego impulsu transmisji. PamiÍtajmy, øe sygna³ wyjúciowy odbiornika jest zanegowany, wiÍc obecnoúci sygna³u odpowiada poziom niski na wejúciu mikrokontrolera. Moøna wykryÊ go dwoma sposobami: - poprzez okresowe sprawdzanie stanu linii procesora, - z†wykorzystaniem do tego celu przerwaÒ. Pierwszy sposÛb - pokazany na list. 2 - jest ³atwiejszy, lecz zawsze zuøywa nieco czasu procesora. Funkcja ir_active zwraca wartoúÊ ì0î, jeúli nie wykryto sygna³u IR lub 1†w†momencie wykrycia poziomu niskiego (czyli impulsu). Drugi sposÛb - pokazany na list. 3 - nie ma wady poprzedniego rozwi¹zania, lecz rÛwnieø nie jest idealny. A†to dlatego, øe jeúli odbiornik zostanie oúwietlony silnym modulowanym úwiat³em (np. bezpoúrednio úwietlÛwk¹ kompaktow¹), to na jego wyjúciu moøe pojawiÊ siÍ seria przypadkowych impulsÛw generuj¹cych kolejne przerwania i†prÛby odczytu sygna³u pilota, co spowoduje jeszcze wiÍksze spowolnienie programu g³Ûwnego. Niestety, nic nie jest idealne i†czasami trzeba wybieraÊ mniejsze z³o. Na list. 4 pokazano sposÛb automatycznego rozpoznania standardu, w†ktÛrym nadaje pilot. Wystarczy, øe po uruchomieniu tej procedury kilkakrotnie naciúniemy dowolny klawisz pilota, a†jego standard zostanie zwrÛcony jako wynik funkcji recognize_std (moøna go pÛüniej zapisaÊ np. w†EEPROM-ie). Wykorzystujemy go rÛwnieø jako parametr wywo³ania funkcji get_ir. Na CD-EP12/2002B oraz w Internecie (www.ep.com.pl) publikujemy te same procedury (get_ir oraz recognize_std) napisane w†asemblerze procesora AVR, z†przeznaczeniem na ma³e procesory bez wewnÍtrznego RAM-u (np. AT90S1200 lub ATtiny). Procedura rozpoznania standardu zapisuje jego numer w†wewnÍtrznej pamiÍci EEPROM procesora dla wykorzystania w†programie g³Ûwnym. Mam nadziejÍ, øe przedstawiony opis i†przyk³ady u³atwi¹ Czytelnikom uøycie pilota we w³asnych projektach i†pomog¹ w†napisaniu swojej wersji procedur dekoduj¹cych przy wykorzystaniu do tego celu mikrokontrolera innego niø AVR. Romuald Bia³y
Rys. 3
Elektronika Praktyczna 12/2002
K U R S
W†zwi¹zku z†pytaniami CzytelnikÛw dotycz¹cymi
część 7
programÛw zawartych w†pakiecie RIDE, w†kolejnym odcinku kursu zdecydowa³em siÍ wrÛciÊ do opisu jego uøytkowania. W†artykule zawarto informacje na temat edycji programu, tworzenia zbioru projektu, symulacji wykonania programu oraz tworzenia zbiorÛw wynikowych w†formatach BIN i†HEX. Trzeba jednak podkreúliÊ, øe objÍtoúÊ tego artyku³u nie pozwala na wyczerpuj¹ce omÛwienie wszystkich aspektÛw uøytkowania pakietu.
Jak posługiwać się kompilatorem C, część 1
Rys. 1 Raisonance RIDE
Instalacja i†uruchomienie
Pakiet RIDE firmy Raisonance jest zbiorem programÛw narzÍdziowych umoøliwiaj¹cych przygotowywanie i†uruchamianie programÛw w†jÍzyku C i†w†asemblerze dla mikrokontrolerÛw ST62 firmy STM, XA firmy Philips oraz innych mikrokontrolerÛw naleø¹cych do rodziny 8051. Ze wzglÍdu na planowane nastÍpne odcinki kursu, pominÍ zagadnienia dotycz¹ce úrodowiska programowania ST62 i†XA - zajmiemy siÍ wy³¹cznie mikrokontrolerem 8051. Nie oznacza to jednak, øe nie moøna tego opisu wykorzystaÊ takøe dla innych mikrokontrolerÛw. RIDE (Raisonance Integrated Development Environment) zawiera nastÍpuj¹ce programy przeznaczone dla mikrokontrolerÛw z†rodziny 8051: - kompilator jÍzyka asembler MA-51 (jest to makroasembler), - kompilator jÍzyka C RC-51, - linker LX-51, - symulator wspÛ³pracuj¹cy ze sprzÍtowym emulatorem, - edytor przystosowany do sk³adni jÍzykÛw asembler oraz C†(wyrÛøniane s¹ s³owa kluczowe obu jÍzykÛw). Wersja demonstracyjna pakietu jest na p³ycie CD do³¹czonej do EP6/2002 oraz w†Internecie, na przyk³ad na stronie producenta pod adresem: http://www.raisonance.com/download.php.
Jeúli masz oryginaln¹ p³ytÍ od producenta, pakiet zainstaluje siÍ prawie bez Twojego udzia³u. Program instalacyjny znajduj¹cy siÍ na p³ycie CD uruchamia siÍ po umieszczeniu jej w†napÍdzie. Jeúli natomiast pobra³eú wersjÍ instalacyjn¹ z†Internetu, poprzez wybranie Start i†Uruchom moøesz rozpocz¹Ê instalacjÍ. Po zainstalowaniu pakiet gotowy jest do pracy - bez øadnych dodatkowych ustawieÒ czy restartowania komputera. Ustaw rozdzielczoúÊ ekranu 800x600 lub wiÍksz¹ - ³atwiej bÍdzie odczytaÊ wyúwietlane informacje. Po pierwszym uruchomieniu zobaczysz tylko menu g³Ûwne pakietu. Poniewaø wczeúniej nie otwiera³eú øadnych plikÛw, to na ekranie bÍdzie wy³¹cznie otwarte okno programu i†szare t³o.
Rys. 2
Elektronika Praktyczna 12/2002
Menu g³Ûwne OmÛwmy poszczegÛlne, najbardziej dla nas uøyteczne pozycje menu (rys. 1). Nie jest moim celem pisanie instrukcji obs³ugi programu - tym zaj¹³ siÍ juø producent. ChcÍ natomiast podaÊ tyle informacji, ile jest koniecznych, aby zacz¹Ê pracÍ z†programem. Do rozpoczÍcia pisania pierwszego programu w†jÍzyku C†wystarczy wybraÊ w†menu File>New (rys. 2). NastÍpnie naleøy wybraÊ C†Files i†edytor gotowy jest do pracy. Moøesz zawsze tak postÍpowaÊ w†przypadku krÛtkich programÛw, ale nie jest to zbyt dobry sposÛb. Dlaczego? Menu zawiera pozycjÍ Options. Po jej wyborze moøna ustawiÊ waøne dla programu ürÛd³owego oraz urz¹dzenia docelowego paramet-
ry. W†przypadku, gdy nie jest aktywny øaden z†projektÛw (opiszÍ to w†dalszej czÍúci artyku³u), ustawione parametry s¹ domyúlnymi dla wszystkich tworzonych programÛw i†wszystkich urz¹dzeÒ, w†ktÛrych mikrokontroler ma wspÛ³pracowaÊ. Jest to na przyk³ad typ mikrokontrolera i†opcje jego rozszerzeÒ. Rzadko zdarza siÍ, øe s¹ one identyczne dla rÛønych urz¹dzeÒ. Jeúli jednak wykorzystujesz tylko jeden typ mikrokontrolera od okreúlonego producenta oraz twÛj program nie zawiera modu³Ûw w†asemblerze, to moøesz wybraÊ w³aúnie ten prosty sposÛb. Nie polecam jednak tego. Znacznie bardziej efektywne jest pos³ugiwanie siÍ projektami. Kaødy tworzony projekt jest obiektem, dla ktÛrego indywidualnie moøesz okreúliÊ w³aúciwoúci i†sk³adowe. PÛüniej otwarcie zapamiÍtanego projektu powoduje przywrÛcenie cech úrodowiska, dla ktÛrego napisana zosta³a dana aplikacja - parametry domyúlne zostan¹ zast¹pione w³aúciwymi dla stosowanego przez Ciebie sprzÍtu. Aby utworzyÊ projekt, wybierz z†menu Project>New. Pojawi siÍ okienko (rys. 3) z†pytaniem o†folder, w ktÛrym na dysku ma byÊ zapamiÍtany twÛj projekt i†jak ma siÍ nazywaÊ. Folder bÍdzie zawiera³ rÛwnieø zbiory wynikowe typu HEX, BIN lub w†obu tych formatach jednoczeúnie. Ja przechowujÍ wszystkie projekty w†jednym katalogu. U³atwia to ich archiwizacjÍ, a†selekcj¹ zbiorÛw zaj-
Rys. 3
99
K U R S
Rys. 4 Rys. 6 muje siÍ RIDE. System Windows oferuje moøliwoúÊ tworzenia nazw opisowych, wiÍc naleøy z†nich korzystaÊ. Nazywaj swoje pliki tak, abyú mÛg³ po jakimú czasie je rozpoznaÊ. Tu jedna waøna uwaga - plik projektu nie moøe mieÊ takiej samej nazwy, jak ktÛryú z†jego sk³adnikÛw. To oznacza, øe jeúli twÛj projekt ma nazwÍ Kontroler-LCD, to øaden z†modu³Ûw nie moøe mieÊ tej samej nazwy. Nie powinieneú tworzyÊ plikÛw Kontroler-LCD.c albo Kontroler-LCD.a51. Wyt³umaczenie jest bardzo proste. Kompilator nie przetwarza ca³ego kodu ürÛd³owego, lecz poszczegÛlne jego modu³y jeden po drugim. Na pocz¹tku na przyk³ad moøe byÊ kompilowany napisany w†jÍzyku C, potem w†asemblerze. Na podstawie plikÛw nazwijmy je przejúciowych - linker tworzy plik w†formacie HEX (lub BIN albo teø oba jednoczeúnie) przeznaczony do zapisania w†pamiÍci mikrokontrolera. I†tu docieramy do sedna sprawy. Kompilator generuj¹c pliki przejúciowe, uøywa tej samej nazwy, ktÛr¹ ma zbiÛr ürÛd³owy, zmieniaj¹c jedynie rozszerzenia. Czyli plikiem wynikowym kompilacji KontrolerLCD.a51 bÍdzie Kontroler-LCD.obj. £atwo jest wiÍc wysnuÊ wniosek, øe nowo tworzone pliki bÍd¹ zastÍpowa³y te starsze. ByÊ moøe ta cecha kompilatora RC-51 zosta³a usuniÍta w†najnowszej wersji pakietu, jednak jest to stosowane rÛwnieø przez innych producentÛw programÛw tego rodzaju.
Ustawianie opcji zbioru projektu Po otwarciu okna nowego projektu wpisz jego nazwÍ i†wybierz model mikrokontrolera. Ten wybÛr jest wyborem rodzaju kompilatora, a†nie nazw rejestrÛw. Te zdefiniujesz pÛüniej, do³¹czaj¹c zbiory definicji oraz
Rys. 5
100
okreúlaj¹c w³aúciwoúci sprzÍtu. Zak³adam, øe utworzy³eú juø nowy projekt i†øe dotyczy on mikrokontrolera z†rdzeniem podobnym do 80C51. Zatwierdü wybÛr za pomoc¹ OK. Teraz ustaw opcje úrodowiska, dla ktÛrego pisany jest program. Wybierz Option>Target (rys. 4). NastÍpnie zaznacz Harvard achitecture i†wybierz typ mikrokontrolera. Za³Ûømy, øe do pierwszego projektu bÍdziesz uøywa³ AT89S8252 - wybierz wiÍc na liúcie 8052. Nie jest to dok³adnie ten sam mikrokontroler, ale bardzo do niego podobny. Zatwierdü wybÛr za pomoc¹ OK. Teraz kolejna grupa ustawieÒ, z ktÛrych typowo potrzebujesz ustawiÊ tylko kilka. Wybierz Options>Project. Raczej nie musisz nic zmieniaÊ w†Environment i†Directories. S¹ tam nastawy dotycz¹ce do³¹czanych zbiorÛw bibliotek oraz kolorÛw, czcionek i†sposobÛw w†jaki wyúwietla komunikaty kompilator. Najbliøsz¹ ìga³Ízi¹î drzewa Options, ktÛr¹ powinieneú siÍ zainteresowaÊ jest RC51. Zawiera ona wiele istotnych informacji dotycz¹cych kompilatora: - jeúli nie uøywasz liczb zmiennoprzecinkowych, zaznacz No floating point, w†przeciwnym przypadku proponujÍ IEEE standard (rys. 5), - wybierz zak³adkÍ Memory Model (rys. 6) i†zdecyduj, jakiego modelu pamiÍci bÍdzie uøywa³ mikrokontroler (typowo wystarczy Small: tego rodzaju nastawy uøywam dla AT89S8252, gdy planowany rozmiar programu nie wykracza poza 8kB pamiÍci Flash) - zaznacz opcje specjalne dla AT89S8252 (jest to Dual DPTR ATMEL), - wybierz zak³adkÍ Optimizer (rys. 7) i†zaznacz, czy kod wynikowy ma byÊ optymalny pod wzglÍdem rozmiaru (Size), czy szybkoúci wykonywania programu (Speed - zazwyczaj j¹ zaznaczam) - nastawÍ Optimizer level moøesz pomin¹Ê, - pozosta³e parametry nastaw kompilatora dla RC51 nie s¹ waøne. Przejdü zatem do grupy LX51 i†wybierz Linker - jest tu wiele bardzo waønych nastaw (rys. 8). WiÍkszoúÊ programatorÛw korzysta ze zbiorÛw wynikowych w†formacie Intel HEX, tak wiÍc zostaw za-
Rys. 7
Rys. 8 znaczon¹ opcjÍ Generate an Intel Hex File. Jeúli twÛj programator wymaga pliku w†formacie binarnym, zaznacz rÛwnieø Generate a†Binary File (BIN). Wpisz rozmiar pamiÍci RAM size, Initialized RAM size dla AT89S8252 jest to 256 bajtÛw. W†dolnej czÍúci okienka masz jeszcze moøliwoúÊ okreúlenia od jakiego adresu w†pamiÍci Flash czy RAM umieszczony zostanie kod wynikowy i†zmienne (zazwyczaj nie potrzebujesz jednak zmieniaÊ tych nastaw). Na tym moøesz zakoÒczyÊ ustawianie opcji projektu - wybierz OK. Jak zd¹øy³eú siÍ zapewne zorientowaÊ, w†poszczegÛlnych zak³adkach znajduje siÍ jeszcze wiele innych uøytecznych opcji, jednak do napisania pierwszej aplikacji w†jÍzyku C†dla AT89S8252 wystarczy to, co juø pozna³eú.
Do³¹czanie plikÛw ürÛd³owych do projektu Wczeúniej utworzy³eú plik projektu. Jest on jednak pusty. OprÛcz w³aúciwoúci nie zawiera øadnych sk³adowych. Teraz postaram siÍ pokazaÊ, jak do projektu dodaÊ juø istniej¹ce oraz nowe pliki ürÛd³owe. W celu utworzenia nowego pliku naleøy wybraÊ File>New (rys. 9). W†zaleønoúci od rodzaju tworzonego pliku wybierz odpowiedni typ. Za³Ûømy, øe tym pierwszym tworzonym
Rys. 9
Elektronika Praktyczna 12/2002
K U R S
Rys. 10 przez Ciebie zbiorem bÍdzie plik ürÛd³owy programu w†jÍzyku C. Wybierz wiÍc C†Files. Na ekranie pojawi siÍ okienko edytora, w†ktÛrym bÍdziesz mÛg³ wpisaÊ program. Na wszelki wypadek zapamiÍtaj utworzony zbiÛr, wybieraj¹c File>Save as. PamiÍtaj, aby zapisywany na dysku zbiÛr ürÛd³owy mia³ inn¹ nazwÍ niø projekt. Zapisywane pliki typu C†Files maj¹ domyúlnie nadawane rozszerzenie *.c. ZapamiÍtuj¹c plik na dys-
Rys. 11
Elektronika Praktyczna 12/2002
ku, nie musisz podawaÊ rozszerzenia - zostanie one dodane automatycznie. Inaczej jest ze zbiorami nag³Ûwkowymi typu ìhî. Po nazwie musisz dopisaÊ rozszerzenie. Ja zapamiÍta³em swÛj zbiÛr projektu pod nazw¹ programator-ISP, a†modu³ w†jÍzyku C†pod nazw¹ programator-C-modu³. Utworzenie nowego pliku i†zapamiÍtanie na dysku nie powoduje dodania go do projektu! Aby dodaÊ zbiÛr, musisz pos³uøyÊ siÍ poleceniem Project>Add node Source/Application (rys. 10 - skrÛt klawiszowy Alt + Insert). Nazwa dodanego w†ten sposÛb pliku powinna pojawiÊ siÍ na liúcie w†okienku Project znajduj¹cym siÍ zazwyczaj na dole ekranu (rys. 11). Podobnie postÍpuj z†innymi zbiorami projektu. Ja do³¹czy³em jeszcze programator-asm-modul.a51. Do³¹czaj tylko pliki ürÛd³owe niewymienione
Rys. 12
Rys. 13 po dyrektywie #include w†tekúcie programu - te do³¹cz¹ siÍ automatycznie przy pierwszym uøyciu.
Kompilowanie projektu Aby skompilowaÊ tak utworzony projekt, zapamiÍtaj wszystkie jego pliki, wybieraj¹c File>Save all. NastÍpnie z†menu Project wybierz Make all (rys. 12) lub pos³uø siÍ przyciskiem umieszczonym w†menu (rys. 13). Jeúli napisa³eú program poprawnie i†kompilacja przebieg³a bez b³ÍdÛw, na dysku powstan¹ pliki wynikowe o†nazwie identycznej z†nazw¹ projektu i†rozszerzeniem *.HEX (lub/i *.BIN). W†innych przypadkach na dole ekranu wyúwietli siÍ informacja o†b³Ídach. Jacek Bogusz, AVT [email protected]
101
PROJEKTY CZYTELNIKÓW Dział „Projekty Czytelników” zawiera opisy projektów nadesłanych do redakcji EP przez Czytelników. Redakcja nie bierze odpowiedzialności za prawidłowe działanie opisywanych układów, gdyż nie testujemy ich laboratoryjnie, chociaż sprawdzamy poprawność konstrukcji. Prosimy o nadsyłanie własnych projektów z modelami (do zwrotu). Do artykułu należy dołączyć podpisane oświadczenie, że artykuł jest własnym opracowaniem autora i nie był dotychczas nigdzie publikowany. Honorarium za publikację w tym dziale wynosi 250,− zł (brutto) za 1 stronę w EP. Przysyłanych tekstów nie zwracamy. Redakcja zastrzega sobie prawo do dokonywania skrótów.
PC−clock Projekt
W†artykule przedstawiamy niezwykle pomys³owy projekt zegara wspÛ³pracuj¹cego z†komputerem PC, ktÛry wyúwietla w†czasie dzia³ania komputera bieø¹cy czas systemowy ustawiony w†jego zegarze pok³adowym.
105
Schemat elektryczny zegara pokazano na rys. 1. Przed omÛwieniem jego budowy, krÛtko przedstawimy interfejs LPT. Interfejs LPT, czyli rÛwnoleg³y port drukarkowy, w†starszych modelach komputerÛw†PC by³ montowany jako dodatkowa karta i†konfigurowany zworkami. We wspÛ³czesnych komputerach jest zintegrowany z†p³yt¹ i†konfigurowany z†poziomu
BIOS-a. BIOS ma standardowo okreúlone trzy porty rÛwnoleg³e: LPT1, LPT2 i LPT3. W†czasie startu systemu (POST - Power On Self Test) program umieszczony BIOS-ie testuje je w†kolejnoúci adresÛw: 3BCh, 378h, 278h. Adresy poszczegÛlnych portÛw znajduj¹ siÍ w†czterech kolejnych dwubajtowych zmiennych pocz¹wszy od adresu 0:0408H. Standardowo komputer PC posiada jeden port LPT o†adresie 378h i†przerwaniu IRQ7. Dodaj¹c kolejny standardowy port LPT2 powinien byÊ ustawiony adres 278h i†przerwa-
nie IRQ5, kolejny port LPT3 powinien mieÊ adres 3BCh i†dowolny wolny numer przerwania IRQ. Aby zainstalowaÊ port LPT4 i†mÛc np. korzystaÊ z†przerwaÒ obs³ugiwanych przez BIOS, trzeba najpierw za pomoc¹ odpowiedniego programu umieúciÊ jego adres w†zmiennej o†adresie 0:0410H. Sygna³y LPT s¹ wyprowadzone na 25-stykowe z³¹cze szufladowe. Zakres napiÍʆod 0V do†ok. 3,5 V, czyli zgodny ze standardowymi poziomami TTL. Maksymalna obci¹øalnoúÊ pr¹dowa wyjúÊ mieúci siÍ w przedziale 10...30 mA, a†dziÍki
List. 1. Program SWG_V1.CPP
Rys. 1
Elektronika Praktyczna 12/2002
#include #include extern unsigned _heaplen=600;//1024; extern unsigned _stklen=300;//512; void interrupt _1c(...);void interrupt (*old_1c)(...); char t[]={63,6,91,79,102,109,125,39,127,111};//ksztalt cyfer char q,w,s,z,j=1,i=31; #define LPT 0x378 //Adres portu LPT void main() { old_1c=getvect(0x1c);setvect(0x1c,_1c); keep(0,(_SS+((_SP)/16)-_psp)-30); } void interrupt _1c(...) //funkcja zegara { if(j==1) {outport(LPT+2,4);outport(LPT,t[s]); outport(LPT+2,1+4); if(i>30) {asm {mov ah,2;int 1ah;mov q,ch;mov w,cl} s=q>>4;z=w>>4; i=0;q=q-(s<<4);w=w-(z<<4);}} //odczyt godziny if(j==2) {outport(LPT+2,4);outport(LPT,t[q]); outport(LPT+2,2+4);} if(j==3) {outport(LPT+2,4);outport(LPT,t[z]);i++; outport(LPT+2,0);} if(j==4) {outport(LPT+2,4);outport(LPT,t[w]); j=0; outport(LPT+2,8+4);} j++; old_1c(); }
103
PROJEKTY CZYTELNIKÓW Tab. 1. Przypisanie numerów styków gniazda DB25 poszczególnym bitom rejestrów LPT1 Bit 378h
Rejestr 379h
0
2
−
(1)
1
3
−
(14)
2
4
−
16
3
5
15
(17)
4
6
13
IRQ
5
7
12
−
6
8
10 IRQ
−
7
9
(11)
−
37Ah
wbudowanym zabezpieczeniom przypadkowe zwarcie nie powinno ich uszkodziÊ.
Bezpoúrednie sterowanie portu LPT odbywa siÍ za pomoc¹ instrukcji Out (zapisz ustaw stany logiczne na stykach) i†In (odczytaj - sprawdü stany logiczne na stykach). Standardowy pory LPT1 (378h) ìwidzianyî jest od strony programowej jako trzy rejestry umieszczone pod kolejnymi adresami: 378h - dane do drukarki (zapis), 379h - rejestr statusu drukarki (odczyt), 37Ah - sterowanie drukarki (odczyt/zapis)- tab. 1. Styki 18...25 z³¹cza DB25 s¹ do³¹czone do masy, a†sygna³y ujÍte w†nawiasy s¹ zanegowane. Wyjaúnienia wymaga bit 4†rejestru 37Ah - ustawienie
List. 2. Program SWG_V2.CPP #include #include extern unsigned _heaplen=600;//1024; extern unsigned _stklen=300;//512; void interrupt _7(...); char t[]={63+128,6+128,91+128,79+128,102+128,109+128,125+128,39+128,127+128,111+128}; // ksztalt cyfer char q,w,s,z,j=1,i; #define LPT 0x378 //adres portu LPT #define IRQ 7 //numer przerwania IRQ void main() { outport(LPT,128);//napiecie zasilania dla NE555 outport(LPT+2,16);//LPT moze przyjmowac przerwania _dos_setvect(8+IRQ,_7); outportb(0x21,inportb(0x21) & (255-(1<>4;z=w>>4; q=q-(s<<4);w=w-(z<<4);}}//odczytaj zegar if(j==2) {outport(LPT+2,4+16);outport(LPT,t[q]); outport(LPT+2,2+4+16);} if(j==3) {outport(LPT+2,4+16);outport(LPT,t[z]);i++; outport(LPT+2,0+16);} if(j==4) {outport(LPT+2,4+16);outport(LPT,t[w]); j=0; outport(LPT+2,8+4+16);} j++; outportb(0x20,0x20); }
tego bitu na ì1î uaktywnia przyjmowanie przerwaÒ przez port LPT. Program steruj¹cy prac¹ zegara zosta³ napisany w†jÍzyku C++. Jego zadaniem jest takie sterowanie portem LPT, aby na do³¹czonym do niego czteropozycyjnym wyúwietlaczu LED by³ w†sposÛb ci¹g³y wyúwietlany bieø¹cy czas odczytany z†RTC (Real Time Clock) komputera. Poza tym program powinien tylko w†minimalnym stopniu utrudniaÊ korzystanie z†komputera. Zapewnia to prosty program rezydentny (zajmuje w†pamiÍci ok. 5†kB). Program przygotowano w†dwÛch wersjach. Cykliczne wywo³ywanie programu w†pierwszej wersji realizowane jest przez przerwanie zegara 1Ch (program SWG_V1.CPP - list. 1). Przerwanie to wywo³ywane jest 18
WYKAZ ELEMENTÓW Rezystory 7x200Ω 2x47kΩ Kondensatory 2x100nF 220µF/10V Półprzewodniki 4xmały czterocyfrowy wyświetlacz multipleksowany LED ze wspólną katodą lub cztery pojedyncze wyświetlacze NE555 (ULY7855N) Różne Wtyk DB25
104
razy na sekundÍ. Takie rozwi¹zanie dzia³a poprawnie, ale powoduje wyraüne migotanie cyfr na wyúwietlaczu, ze wzglÍdu na jego multipleksowe sterowanie. ZwiÍkszenie czÍstotliwoúci wystÍpowania tych przerwaÒ moøe zaburzyÊ pracÍ RTC komputera. Lepszym rozwi¹zaniem jest do³¹czenie do wejúcia IRQ styku Centronics generatora przebiegu prostok¹tnego, ktÛry cyklicznie bÍdzie wywo³ywa³ przerwanie IRQ7 (IRQ7 jest standardowo zwi¹zane z†LPT1) z†czÍstotliwoúci¹ oko³o 100 Hz. Kaøde przerwanie powoduje uruchomienie programu obs³uguj¹cego wyúwietlacz. Taki sposÛb dzia³ania realizuje program SWG_V2.CPP, ktÛry pokazano na list. 2. Do zasilania generatora wykorzystano liniÍ danych D7 (styk 9). WersjÍ ürÛd³ow¹ i†w†postaci skompilowanej (w†modelu Tiny) obydwu programÛw (dla DOS!) publikujemy na CD-EP12/2002B. Prezentowane programy stanowi¹ tylko przyk³ad korzystania z†LPT do celÛw innych niø drukowanie i†nie zaimplementowano w†nich takich funkcji jak automatyczne wykrywanie portu LPT, automatyczne odinstalowanie itp. Na testowanych komputerach porty by³y ustawione w†tryb pracy standard i†nie ma koniecznoúci stosowania bardziej zaawansowanych trybÛw wymiany informacji, jak np. EPP/ECP. S³awomir Zimoñczyk
Elektronika Elektronika Praktyczna Praktyczna 12/2002 2/98
B I B L I O T E K A
E P
W „Bibliotece EP” prezentujemy książki dotyczące zagadnień związanych z różnymi dziedzinami techniki, jednak zawsze przydatne w pracy elektronika lub pomocne w uprawianiu elektronicznego hobby. Nasza opinia jest oczywiście subiektywna, ale wynika z wieloletniego doświadczenia zawodowego i chyba jest zgodna z oczekiwaniami tych, którzy chcą z książek korzystać, a nie przyozdabiać nimi półki. Aby nie marnować miejsca w EP, nie będziemy publikować recenzji książek ocenianych na jedną lub dwie „lutownice”. Przyjęliśmy szeroką skalę ocen, aby ułatwić Czytelnikom orientację w potencjalnej przydatności książki. Uwaga! Większość prezentowanych książek można zamówić w Dziale Handlowym AVT (patrz str. 139). Chcemy w ten sposób udostępnić je Czytelnikom EP.
Mark Zwoliński: „Projektowanie układów cyfrowych z wykorzystaniem języka VHDL”, WKŁ 2002
Zwolennicy VHDL-a mog¹ czuÊ siÍ dopieszczeni przez Wydawnictwa Komunikacji i†£¹cznoúci, poniewaø jego nak³adem ukaza³a siÍ druga w†tym roku ksi¹øka poúwiÍcona temu w³aúnie jÍzykowi. Uk³ad ksi¹øki przypomina w†najlepszym tego s³owa znaczeniu - podrÍcznik, w†ktÛrym oprÛcz wiedzy bezpoúrednio zwi¹zanej z†VHDL, autor poúwiÍca nieco miejsca przedstawieniu podstaw metodologii projektowania, technologii produkcji i†architekturom wspÛ³czesnych uk³adÛw PLD i†ich parametrom elektrycznym. PrzystÍpnie wy³oøono takøe podstawy algebry Boole'a oraz najpopularniejsze metody rÍcznej syntezy uk³adÛw kombinacyjnych, dziÍki czemu mniej wprawni w†technice cyfrowej czytelnicy ksi¹øki mog¹ ìna miejscuî zdobyÊ podstawow¹ wiedzÍ, bardzo przydatn¹ we wprawnym pos³ugiwaniu siÍ uk³adami cyfrowymi. Autor opieraj¹c siÍ na swoim doúwiadczeniu dydaktycznym, szczegÛlnie wiele miejsca poúwiÍci³ opisom w†VHDL kombinacyjnych, synchronicznych i†asynchronicznych, sekwencyjnych blokÛw funkcjonalnych, czyli blokom
Elektronika Praktyczna 12/2002
uk³adÛw cyfrowych, z†ktÛrymi najczÍúciej spotykaj¹ siÍ projektanci w†praktyce. Ilustracj¹ moøliwoúci VHDL-a jest projekt prostego mikroprocesora, ktÛrego opis zajmuje 450 linii - na tyle ma³o, øe moøna go przy odrobinie wprawy doúÊ szybko przeanalizowaÊ. Osobne rozdzia³y autor poúwiÍci³ problematyce symulacji modeli VHDL, a†takøe testowaniu systemÛw cyfrowych i†metodom projektowania ich w†taki sposÛb, øeby ³atwo poddawa³y siÍ testowaniu. CzytelnikÛw zainteresowanych symulacj¹ opisu w†VHDL zainteresuje z†pewnoúci¹ rozdzia³ poúwiÍcony rozrÛønieniu sposobÛw opisu dzia³ania sprzÍtu na potrzeby symulacji i†syntezy logicznej, ktÛry - jak pokazuje praktyka - nie jest jednakowy. Zamieszczone na koÒcu ksi¹øki dodatki takøe zawieraj¹ wiele informacji niedostÍpnych dotychczas w†krajowej literaturze. S¹ to m.in.: przedstawienie standardÛw ìnaros³ychî wokÛ³ norm VHDL, rÛønice pomiÍdzy rÛønymi (kalendarzowo) wersjami bazowych standardÛw jÍzyka VHDL, omÛwienie regu³ korzystania ze zmiennych wspÛ³dzielonych. Autor porÛwnuje takøe pewne konstrukcje zapisane w†VHDL z†odpowiednikami w†Verilogu. Na koÒcu rozdzia³Ûw autor zamieszcza przyk³adowe zadania do samodzielnego rozwi¹zania, zamieszczaj¹c jednoczeúnie (na koÒcu ksi¹øki) odpowiedzi do niektÛrych z†nich.
Na zakoÒczenie chcemy podkreúliÊ wysok¹ jakoúÊ pracy wykonanej przez t³umaczy: znaczna czÍúÊ sukcesu, jaki ta ksi¹øka niew¹tpliwie osi¹gnie, jest ich zas³ug¹. Reasumuj¹c: ksi¹økÍ gor¹co polecamy i†to nie tylko pocz¹tkuj¹cym uøytkownikom jÍzyka VHDL - liczba zawartych w†niej praktycznych informacji jest bardzo duøa, w†zwi¹zku z†czym praktycznie kaødy projektant znajdzie wúrÛd nich rozwi¹zanie lub choÊby wskazÛwkÍ dla siebie.
137
B I B L I O T E K A
E P
Praca zbiorowa: ìMechatronikaî, REA 2002
Karl Heinz-Seidel: ìS³ownik techniczny niemiecko-polski i†polsko-niemieckiî, REA 2002
Legenda:
ksi¹øka wybitna, polecamy! Mechatronika to stosunkowo nowa dziedzina techniki, ktÛra powsta³a w†wyniku coraz silniejszej integracji elektronicznych systemÛw steruj¹cych z†elementami mechanicznymi. DziÍki takiemu po³¹czeniu powstaj¹ coraz bardziej precyzyjne systemy regulacyjne stosowane praktycznie w†kaødej ga³Ízi wspÛ³czesnego przemys³u.
JakoúÊ i przydatnoúÊ s³ownika technicznego zaleøy od liczby zwartych w†nim hase³, ale takøe od kompetencji autora, ktÛry przygotowuje ich opisy. Trudno jest byÊ erudyt¹ we wspÛ³czesnej technice, jeszcze trudniej byÊ erudyt¹ dwujÍzycznym. Dlatego z†pewnymi obawami podeszliúmy do prezentowanego s³ownika, ale zgodnie z†zapowiedziami zawartymi w†przedmowie, autor - Karl Seidel - skutecznie siÍ broni. Wybieraj¹c losowo kilkanaúcie hase³ zwi¹zanych z†elektronik¹, sprawdzaliúmy poprawnoúÊ ich t³umaczeÒ i†praca autora okaza³a siÍ bez zarzutu.
ksi¹øka o†duøych walorach praktycznych, polecamy!
moøe siÍ przydaÊ
daleka od doskona³oúci
nie warto kupowaÊ
Prezentowana ksi¹øka zawiera komplet informacji o†wspÛ³czesnych systemach automatyki (elektrycznych, a†takøe pneumatycznych i†hydraulicznych) i†stosowanych w†nich sensorach. Autorzy przedstawiaj¹ teoretyczne podstawy systemÛw i†technik regulacji, nieco miejsca poúwiÍcaj¹ takøe robotyce, systemom CAD i†technice sterowania numerycznego. Autorzy przedstawiaj¹ takøe szereg ìpobocznychî zagadnieÒ, ktÛre s¹ coraz bardziej istotne takøe dla wspÛ³czesnych projektantÛw systemÛw automatyki i†sterowania. Chodzi o†systemy zapewnienia jakoúci, bezpieczeÒstwo i†higienÍ pracy, podstawy zarz¹dzania (m.in. projektami), a†takøe techniki prezentacji. Poniewaø tak ogromn¹ iloúÊ wiedzy i†informacji autorzy zmieúcili na 384 stronach, nie wszystkie zagadnienia potraktowano tak g³Íboko, jak na to zas³uguj¹, chociaø trudno uznaÊ to za wadÍ ksi¹øki. Ksi¹økÍ charakteryzuje doskona³a szata graficzna (zosta³a wydana na papierze kredowanym, zamieszczone rysunki i†zdjÍcia s¹ w†pe³nym kolorze), staranna edycja, warto teø zwrÛciÊ uwagÍ na wysok¹ jakoúÊ t³umaczenia.
138
Z†punktu widzenia elektronika ksi¹øka ma zbyt silny ìprzechy³î w†stronÍ aplikacji komputerowych, co czÍsto sprowadza siÍ do umiejÍtnego pos³ugiwania siÍ programami narzÍdziowymi i†standardowymi urz¹dzeniami wchodz¹cymi w†sk³ad wyposaøenia PC (jak np. CD-ROM czy karta düwiÍkowa). Obniøa to nieco (z naszego punktu widzenia) walory praktyczne ksi¹øki, ale nie rzetelnoúÊ zawartych opisÛw. Interesuj¹cym dla fanÛw PC dodatkiem do ksi¹øki jest p³yta CD-ROM, na ktÛrej znajduj¹ siÍ prÛbki muzyczne, w†tym opracowane na potrzeby ksi¹øki, a†takøe oprogramowanie narzÍdziowe do edycji i†przetwarzania düwiÍku. Liczymy na podobnej jakoúci s³ownik polsko-angielski i†angielsko-polski, bo w†uprawianej przez nas dziedzinie jÍzyk angielski wzi¹³ zdecydowanie gÛrÍ nad niemieckim.
Russ Haines, ìCyfrowe przetwarzanie düwÍkuî, Mikom 2002, zawiera CD-ROM
Ksi¹øka jest kompendium wiedzy, ³agodnie wprowadzaj¹cym we wspÛ³czesne (czytaj cyfrowe) techniki rejestracji, przechowywania i†odtwarzania düwiÍkÛw. W†szesnastu rozdzia³ach autor przedstawia istotÍ düwiÍku, sposoby konwersji sygna³Ûw analogowych do postaci cyfrowej, przybliøa budowÍ i†zasadÍ dzia³ania przetwornikÛw düwiÍkowych, a†takøe standardy wejúÊ sygna³Ûw audio.
Elektronika Praktyczna 12/2002
A U T O M A T Y K A
Nowa generacja czujników optycznych
W†po³owie paüdziernika Omron wprowadzi³ do sprzedaøy optyczne czujniki odleg³oúci - rodzinÍ E3NT, ktÛrych moøliwoúci i†parametry pozwalaj¹ zakwalifikowaÊ je do úcis³ej úwiatowej czo³Ûwki. Pomiar odleg³oúci czujnika od monitorowanego obiektu odbywa siÍ na drodze optycznej, przy czym w†celu zwiÍkszenia dok³adnoúci pomiaru zastosowano system z†podwÛjn¹ triangulacj¹. Pozwoli³o to osi¹gn¹Ê zasiÍg pomiarowy w†przedziale 20...2000 mm, a†takøe niezaleønoúÊ wyniku pomiaru od po³oøenia úledzonego obiektu w†jego osi obrotowej (rys. 1). Uøytkownik moøe w†prosty sposÛb ìprzyuczyÊî czujnik do koloru i†faktury powierzchni nadzorowanego obiektu, w†czym jest pomocny wbudowany prosty interfejs
Rys. 1
Elektronika Praktyczna 12/2002
uøytkownika. Interfejs ten sk³ada siÍ z†trÛjprzyciskowej klawiatury i†4-pozycyjnego cyfrowego wyúwietlacza LED (rys. 2). Wyúwietlacz ten jest wykorzystywany ponadto do wyúwietlania menu konfiguracyjnego, a†takøe jako wskaünik odleg³oúci. Producent po³oøy³ duøy nacisk na zapewnienie duøej odpornoúci obudowy czujnikÛw na warunki zewnÍtrzne (IP67), co pozwala stosowaÊ je w†ciÍøkich warunkach otoczenia (wilgoÊ, zanieczyszczenia powietrza). W†zwi¹zku z†tym czujniki E3NT idealnie nadaj¹ siÍ do stosowania m.in. w†przemyúle spoøywczym, ciÍøkim, zautomatyzowanych magazynach, na zewn¹trz i†wewn¹trz budynkÛw. Dodatkowym wyposaøeniem, przydatnym szczegÛlnie podczas pracy w†úrodowisku o†duøej wilgotnoúci i†niskiej temperaturze otoczenia, s¹ podgrzewacze soczewek, dziÍki ktÛrym nie ulegaj¹ one zaparowaniu. Standardowo czujnik jest wyposaøony w†dwa wyjúcia tranzystorowe o†programowanych funkcjach i†dzia³aj¹ce niezaleønie. Mog¹ one byÊ konfigurowane jako wyjúcia PNP, NPN lub komplementarne (push-pull). Wyjúcia moøna skonfigurowaÊ w†jednym z†trzech trybÛw wykrywania obiektÛw: z†eliminacj¹ t³a (BGS), z†ustawian¹ stref¹ nieczu³oúci z†przodu czujnika (FGS) i†funkcj¹ okna wykrywania (FGS+BGS). Daje to szerokie moøliwoúci kontroli po³oøenia obiektÛw na podajni-
Zmiany na rynku urz¹dzeÒ dla systemÛw automatyki zachodz¹ coraz szybciej, co nietrudno powi¹zaÊ z†coraz szybszym rozwojem technologii stosowanych w†elektronice. W†artykule przedstawiamy jedno z†najbardziej spektakularnych wdroøeÒ ìczujnikowychî z†ostatnich miesiÍcy, ktÛrego autorem jest firma Omron. kach, paletyzerach, rolach nawojowych itp. Czujniki s¹ wyposaøone w†hermetyczne, 5-stykowe gniazdo s³uø¹ce do doprowadzenia zasilania i†sygna³Ûw wejúciowych (ich funkcje s¹ wybierane programowo) oraz wyprowadzenia na zewn¹trz sygna³Ûw z†wyjúÊ czujnika. Konfigurowanie i†uczenie czujnika jest moøliwe takøe z†poziomu komputera PC wyposaøonego w†oprogramowanie Sensor Support
141
A U T O M A T Y K A Podstawowe parametry czujników E3NT:
Rys. 2 Software. Ponadto, pozwala ono na ci¹g³e monitorowanie po³oøenia obiektÛw na czytelnym wykresie czasowym, a†takøe zapisywanie i†kopiowanie ustawieÒ miÍdzy czujnikami. Aby zapewniÊ bezpieczeÒstwo transmisji danych i†separacjÍ galwaniczn¹ pomiÍdzy komputerem i†czujnikiem, transfer danych odbywa siÍ na drodze optycznej. Do tego celu niezbÍdny jest specjalizowany adapter (fot. 3), ktÛry jest montowany na tej krawÍdzi czujnika, na ktÛrej znajduj¹ siÍ klawiatura i†wyúwietlacz.
142
Adapter optyczny jest mocowany do obudowy czujnika za pomoc¹ zatrzasku, dziÍki czemu moøna go montowaÊ i†demontowaÊ podczas pracy czujnika.
Podsumowanie Opisane czujniki odleg³oúci s¹ nietrywialnym przyk³adem aplikacji mikrokontrolerÛw. To w³aúnie dziÍki zastosowaniu cyfrowego przetwarzania sygna³Ûw optycznych przekszta³conych do postaci sygna³Ûw elektrycznych, by³o moøliwe osi¹gniÍcie duøej dok³ad-
✦ zasięg 20...2000 mm, ✦ zasilanie 10...30 VDC, ✦ minimalny wykrywalny obiekt > 40 mm, ✦ trójstanowe wyjście analogowe 4...20 mA, ✦ wyjścia binarne: PNP/NPN (ustalane podczas konfiguracji), ✦ konfiguracja wyjść: Light−ON/Dark−On, ✦ 2 konfigurowane wyjścia, ✦ wejście ustawiane opcjonalnie jako − TEACH, TRIGER, TEST, ✦ stopień szczelności obudowy IP67, ✦ kompensacja wpływu tła − funkcja BGS, ✦ możliwość konfigurowania czujnika przez Sensor Support Software.
noúci pomiaru odleg³oúci, a†takøe ich uniezaleønienia (w znacznym stopniu) od po³oøenia úledzonego obiektu. Mamy kolejny dowÛd na to, øe niegdyú bardzo wyraüny rozdzia³ elektroniki i†automatyki coraz bardziej siÍ zaciera. Andrzej Gawryluk, AVT Dodatkowe informacje Artyku³ powsta³ na podstawie materia³ów udostêpnionych przez firmê Omron, tel. (22) 645-78-60, www.omron.com.pl.
Elektronika Praktyczna 12/2002
A U T O M A T Y K A
Kody IP w urządzeniach dla automatyki Bardzo czÍsto w†naszych publikacjach o†urz¹dzeniach stosowanych w†automatyce pojawiaj¹ siÍ informacje o†tym, jak szczelne i†odporne na zewnÍtrzne zabrudzenia i†ingerencje mechaniczne s¹ ich obudowy. Uøywamy przy tym kodÛw IP, ktÛre - jak wynika z†listÛw CzytelnikÛw - nie zawsze s¹ w³aúciwie interpretowane. W†tablicach poniøej zestawiono znaczenie cyfr w†kodzie IP-xy, ktÛry jest opisany norm¹ IEC60529. Znaczenie cyfry x w†kodzie IP-xy, ktÛra okreúla wspÛ³czynnik zabezpieczenia przed moøliwoúci¹ penetracji wnÍtrza obudowy przez elementy sta³e: Cyfra Opis 0 Niezabezpieczona 1 Zabezpieczenie przed elementami o†úrednicy 50 mm (np. rÍka) 2 Zabezpieczenie przed elementami o†úrednicy 12,5 mm (np. palec) 3 Zabezpieczenie przed elementami o†úrednicy 2,5 mm (np. wkrÍtak) 4 Zabezpieczenie przed elementami o†úrednicy 1,0 mm (np. przewÛd) 5 Zabezpieczenie przed kurzem zewnÍtrznym, ktÛry moøe zmniejszaÊ bezpieczeÒstwo pracy urz¹dzenia 6 Zabezpieczenie przed kurzem przenikaj¹cym do wnÍtrza obudowy, ktÛry moøe zmniejszaÊ bezpieczeÒstwo pracy urz¹dzenia Znaczenie cyfry y w†kodzie IP-xy, ktÛra okreúla wspÛ³czynnik zabezpieczenia przed moøliwoúci¹ penetracji wnÍtrza obudowy przez wodÍ i†inne ciecze: Cyfra Opis 0 Niezabezpieczona 1 Spadaj¹ce pionowo krople nie wywo³uj¹ zaburzeÒ w†pracy urz¹dzenia 2 Krople, ktÛre spadaj¹ pionowo nie zaburzaj¹ pracy urz¹dzenia odchylonego od po³oøenia roboczego o†±15o 3 Ciecz napylona pod dowolnym k¹tem (mniejszym niø 60o w†stosunku do pionu) na obu-
144
4
5
6
7
8
dowÍ nie wywo³uje zaburzeÒ w†pracy urz¹dzenia Ciecz nachlapywana na obudowÍ z†dowolnej strony nie wywo³uje zaburzeÒ w†pracy urz¹dzenia Ciecz natryskiwana na obudowÍ z†dowolnej strony nie wywo³uje zaburzeÒ w†pracy urz¹dzenia Ciecz nachlapywana pod znacznym ciúnieniem na obudowÍ z†dowolnej strony nie wywo³uje zaburzeÒ w†pracy urz¹dzenia KrÛtkotrwa³e zanurzenie urz¹dzenia w†cieczy (czas i†ciúnienie jest zestandardyzowane) nie powoduje zaburzeÒ w†jego pracy KrÛtkotrwa³e zanurzenie urz¹dzenia w†cieczy (czas zanurzenia i†ciúnienie podlega negocjacji pomiÍdzy producentem i†odbiorc¹, ale warunki musz¹ byÊ znacznie trudniejsze niø w†punkcie 7) nie powoduje zaburzeÒ w†jego pracy
Innym doúÊ czÍsto spotykanym standardem okreúlaj¹cym odpornoúÊ obudÛw urz¹dzeÒ na zanieczyszczenia zewnÍtrzne i†prÛby ingerencji jest NEMA250. W†tablicy poniøej znajduje siÍ porÛwnanie odpornoúci obudÛw†w†normach NEMA250 i†IEC60529. NEMA250 IEC60529 1 IP10 2 IP11 3 IP54 3R IP14 3S IP54 4,4X IP56 5 IP52 6,6P IP67 12,12K IP52 13 IP54
Elektronika Praktyczna 12/2002