OPROGRAMOWANIE APARATURY POMIAROWEJ OPROGRAMOWANIE APARATURY µp TECHNIKA MIKROPROCESOROWA W MED. Obsługa przetwornika A/C w µc 80C oraz dynamicznie sterowanych wyświetlaczy LED Laboratorium. Cel ćwiczenia Podstawowym celem ćwiczenia laboratoryjnego jest zapoznanie się z możliwością wykorzystania mikrokontrolera 80C do przetwarzania sygnałów analogowych. Źródłem sygnału analogowego może być czujnik lub przetwornik pomiarowy. Wykorzystywana makieta laboratoryjna pozwala również na praktyczne zapoznanie się z dynamicznym sterowaniem wyświetlaczami LED.. Opis stanowiska laboratoryjnego Mikrokontroler 80C posiada 8-bitowy przetwornik A/C współpracujący z 8 kanałowym multiplekserem i posiadający programowaną dolną i górną granicę źródła napięcia odniesienia. Podczas wykonywania ćwiczenia, jako narzędzie projektowo-uruchomieniowe, wykorzystywany jest program debugera MICD-, zainstalowany na komputerze PC, współpracujący z programem monitora zainstalowanym w układzie docelowym, tzn. realizującym pomiar wielkości analogowych. Do wejść układu docelowego jest doprowadzany regulowany sygnał prądowy lub napięciowy podlegający pomiarowi. Stanowisko laboratoryjne tworzą następujące elementy: Mikroprocesorowy System Pomiarowy MSP, komputer PC, regulowane źródło napięcia, regulowane źródło prądu. Źródło napięcia Źródło napięcia Źródło prądu Źródło prądu kanał 8, żółty P 6.7 P 6.6 P 6. P 6. A/C 80C dane P.0 P. sterowanie MAX RxD TxD IM PC Rys.. Stanowisko laboratoryjne układ pomiarowy Strukturę stanowiska laboratoryjnego pokazano na rys.. Podstawowym jej elementem jest MSP zbudowany w oparciu o mikrokontroler 80C. Podczas realizacji ćwiczenia laboratoryjnego główny nacisk jest położony na zapoznanie się z obsługą programową mikrokontrolera z wykorzystaniem mechanizmu przerwań. Opis układu przetwornika A/C zamieszczono w dodatku A. MSP umożliwia pomiar dwóch sygnałów napięciowych w zakresie 0,V oraz pomiar dwóch sygnałów prądowych w zakresie 0 0mA.
.. Przetwornik analogowo-cyfrowy Układ 8-bitowego, 8-kanałowego przetwornika A/C jest integralną częścią mikrokontrolera 80C firmy Simens zastosowanego w makiecie dydaktycznej, dlatego jego obsługa odbywa się w oparciu o wewnętrzne rejestry tegoż mikrokontrolera. Do określania numeru kanału, z którego będzie przeprowadzana konwersja analogowo-cyfrowa, służą trzy najmłodsze bity rejestru ADCON (MX0, MX i MX). Rejestr DAPR służy do programowania zakresu wewnętrznego napięcia referencyjnego zgodnie z tabelą 6-6 zamieszczoną w dodatku A. Zapis wartości do rejestru DAPR powoduje jednocześnie start przetwornika do konwersji. it ADM znajdujący się w rejestrze ADCON określa tryb konwersji. Gdy jego wartość wynosi, wybrana jest konwersja ciągła (po zakończeniu jednej konwersji, automatycznie rozpoczynana jest kolejna). Jeśli bit ADM jest równy 0, to po starcie jest wykonywana tylko jednokrotna konwersja. W każdym z powyższych trybów pracy wymagany jest co najmniej jednokrotny zapis do rejestru DAPR w celu uruchomienia przetwornika do konwersji. Stan pracy przetwornika sygnalizowany jest stanem bitu SY znajdującym się w rejestrze ADCON. Gdy bit ten jest ustawiony na oznacza, że przetwornik jest w trakcie konwersji napięcia analogowego na jego reprezentację cyfrową. Przejście w stan zera logicznego oznacza koniec konwersji. Zatem po wystartowaniu przetwornika do konwersji należy programowo sprawdzać stan bitu SY oczekując jego zmiany na 0. Dopiero wtedy możliwy jest odczyt wartości z przetwornika. Odczyt przekonwertowanej wartości dokonuje się z rejestru ADDAT. Przedstawiony powyżej sposób określania końca konwersji jest mało efektywny, gdyż wymaga od mikrokontrolera ciągłego wykonywania instrukcji sprawdzającej stan bitu SY. Jednak koniec konwersji przeprowadzanej przez przetwornik A/C jest również sygnalizowany ustawieniem bitu IADC (rejestr IRCON), będącego jednocześnie źródłem przerwania. Dlatego efektywniejszym sposobem obsługi przetwornika A/C (szczególnie, jeśli wybrano tryb konwersji ciągłej) jest wykorzystanie przerwań, co wymaga: uaktywnienia systemu przerwań mikrokontrolera, uaktywnienia przerwań od przetwornika A/C oraz napisania odpowiedniego podprogramu obsługi przerwania i umieszczenie odniesienia do niego pod odpowiednim adresem (patrz tabela 7-, dodatek A). UWAGA: it IADC nie jest zerowany sprzętowo, dlatego przed wyjściem z podprogramu obsługi przerwania należy dokonać jego zerowania programowo. W przeciwnym wypadku natychmiast ponownie zostanie wywołany podprogram obsługi przerwania, pomimo, że nie nastąpił koniec nowej konwersji A/C. Dzięki możliwości ustawiania różnych napięć referencyjnych dla przetwornika A/C (tabela 6-6, dodatek A), możliwa jest programowa konwersja z rozdzielczością 0-bitową [8]. Przeprowadzenie konwersji z tą rozdzielczością wymaga wykonania dwóch pomiarów. Pierwszy z nich odbywa się przy zakresie napięcia referencyjnego 0 V. Dwa najstarsze bity uzyskanego wyniku pozwalają na określenie jednego z czterech zakresów, w którym znajduje się aktualnie mierzone napięcie. Tabela.. Podzakresy pomiarowe przy realizacji programowej konwersji 0-bitowej 7 6 U AGND [V] U AREF [V] 0 0 0,00, 0,,0 0,0,7,7,00 Jednocześnie wspomniane dwa bity stają się najstarszymi bitami końcowego wyniku (rys. ). W kolejnym kroku realizowana jest druga konwersja w odpowiednio zawężonym zakresie. Uzyskany w ten sposób wynik jest młodszym bajtem końcowego wyniku przetwarzania A/C. 7 6 0 7 6 0 0 0 0 0 0 0 7 6 7 6 0 Wynik z pierwszej konwersji Wynik z drugiej konwersji Końcowy wynik przetwarzania Rys.. Uzyskanie końcowego wyniku przetwarzania przy programowej realizacji konwersji 0-bitowej.. 7-segmentowe wyświetlacze LED Sposób podłączenia siedmiosegmentowego wyświetlacza LED wyjaśnia schemat elektryczny. Układ rejestru zatrzaskowego U przechowuje daną, która aktywuje do świecenia odpowiednie segmenty danego modułu LED w przypadku, gdy wartość określonego bitu danej wynosi. Przyporządkowanie poszczególnych
segmentów do bitów danej przedstawiono w punkcie.. Układ U widziany jest od strony mikrokontrolera jako komórka zewnętrznej pamięci danych o adresie podanym również w punkcie.. Zatem zapis wartości do układu U odbywa się poprzez zastosowanie instrukcji właściwych dla zapisu informacji do zewnętrznej pamięci danych mikrokontrolera. Szyna danych pomiędzy układem U a modułami wyświetlaczy LED jest wspólna, stąd wyświetlanie różnych informacji na poszczególnych modułach wymaga osobnej aktywacji każdego z modułów na określoną chwilę czasowa, podczas której w rejestrze U znajduje się odpowiedni kod informacji do wyświetlenia. Zastosowane wyświetlacze LED są modułami o wspólnej anodzie, zatem do świecenia aktywowane są podaniem na odpowiednie wyprowadzenie napięcia dodatniego. Przerzutnik monostabilny U generuje na wyjściu Q impuls wyzwalany dodatnim zboczem wejścia, o czasie trwania uzależnionym od wartości elementów C i R7. Impuls ten (poprzez wejście E układu U) przenoszony jest następnie na jedno z wyjść demultipleksera U w zależności od stanów linii A i tego układu. Zatem zmiana stanów na liniach P. i P.0 mikrokontrolera przez sukcesywne ustawianie sekwencji 00, 0, 0 i powoduje, że stan wysoki podawany na wejście E układu U jest przenoszony na odpowiednie wyjście Y0..Y. Jeśli przed upływem czasu określonego wartościami elementów C i R7 na wejściu ponownie pojawi się zbocze narastające sygnału, to czas trwania impulsu na wyjściu Q zostanie odpowiednio przedłużony. Stąd okresowa zmiana stanu na linii P.0 podtrzymuje generowanie na wyjściu Q układu U stanu wysokiego, co zapewnia świecenie kolejno adresowanych modułów LED. Ze względu na przedstawione powyżej zależności, wyświetlanie informacji numerycznej musi być realizowane w sposób dynamiczny poprzez odpowiednie ustawianie linii P. i P.0 poprzedzone przesyłaniem na rejestr zatrzaskowy U odpowiedniej danej. Sterowanie wspomnianymi liniami portu P nie musi odbywać się przez osobne ustawianie bądź zerowanie powyższych linii, lecz może być realizowane poprzez ciągłe wysyłanie wartości 0,,,, 0,,,, 0,,... do portu P, co zapewni odpowiednie ustawianie ich stanów. Dzięki temu z jednej strony aktywowane są kolejne moduły LED, natomiast z drugiej strony zapewnione jest okresowe generowanie zbocza narastającego na wejściu układu U. UWAGA: Wykorzystany w makiecie mikrokontroler 80C jest rozbudowanym klonem mikrokontrolerów rodziny MCS-, które nie posiadają m.in. portu P, Stąd, aby asemblacja lub kompilacja przebiegały poprawnie, do kodu programu należy dołączyć odpowiedni plik nagłówkowy lub zdefiniować adres portu P.. Działanie makiety pod kontrolą programu monitora PAULMON jest darmowym programowym monitorem instalowanym w systemach bazujących na mikrokontrolerach rodziny MCS-. Umieszczenie opisywanego monitora w pamięci ROM mikrokontrolera pozwala na wczytywanie programów do pamięci RAM i wykonywanie ich, co jest znacznie wygodniejsze i szybsze, niż przeprogramowywanie pamięci EPROM. Do komunikacji z programem monitora można wykorzystać dowolny program pozwalający na komunikację za pomocą złącza RS-, np. HyperTerminal. Po uruchomieniu niniejszego programu na komputerze PC, oraz po wciśnięciu klawisza resetu makiety, monitor wysyła następujący komunikat: Welcome to PAULMON v., by Paul Stoffregen See PAULMON.DOC, PAULMON.EQU and PAULMON.HDR for more information. Program Name Location Type List 000 External command Single-Step 00 External command Memory Editor (VT00) 800 External command a następnie pojawia się znak zachęty PAULMON Loc:000 > _ Wartość 000 określa adres, na jaki wskazuje wewnętrzny wskaźnik monitora. Jego znajomość jest użyteczna przy wywoływaniu komend operujących na pamięci systemu. Poniżej zostaną przedstawione wybrane komendy monitora. Wielkość liter przy wprowadzaniu poleceń nie ma znaczenia... D (ang. Download) ładowanie programu Polecenie to pozwala na załadowanie do pamięci RAM systemu mikroprocesorowego pliku z programem w formacie Intel Hex. W formacie tym zawarte są informacje o adresie, pod który mają być zapisywane kolejne
bajty przesyłanego programu, zatem wewnętrzny wskaźnik pamięci monitora nie jest brany pod uwagę. Załadowanie programu polega na wciśnięciu klawisza [D], co powoduje wyświetlenie następującej informacji PAULMON Loc:000 > Download egin ascii transfer of Intel hex file, or ESC to abort Teraz należy z menu Transfer programu TyperTerminal wybrać Wyślij plik tekstowy..., a w otwartym oknie wskazać miejsce położenia pliku *.hex. Zatwierdzenie wyboru powoduje rozpoczęcie przesyłania danych. Za każdym razem, kiedy monitor odbierze pojedynczą linię z ładowanego pliku *.hex, na ekranie zostaje wyświetlona kropka. Jeśli z jakiś powodów konieczne jest przerwanie ładowania programu należy wtedy wcisnąć klawisz [Esc]. Po zakończeniu ładowania pliku z programem lub gdy ładowanie zostanie przerwane na życzenie użytkownika, na ekranie pojawia się podsumowanie....... Download completed Summary: lines received 08 bytes received 08 bytes written No errors detected Jeśli po wykonaniu polecenia wczytania pliku w informacji podsumowującej monitora raportowane są błędy o braku możliwości zapisu Summary: 6 lines received 8 bytes received 60 bytes written Errors: 0 bytes unable to write to oznacza, że plik HEX został odebrany poprawnie, jednak obszar pamięci wyspecyfikowany w kolejnych rekordach zawartych w pliku jest tylko do odczytu. W przypadku odebrania przez monitor danych o niepoprawnym formacie zostanie wyświetlone podsumowanie podobne do poniższego. Summary: lines received 6 bytes received 6 bytes written Errors: bad checksums unexpected begin of line 7 unexpected hex digits unexpected non hex digits.. J (ang. Jump) skocz pod określony adres w pamięci Polecenie to pozwala na przejście do wykonywania wczytanego wcześniej programu użytkownika. Po wciśnięciu klawisza [J] pojawi się napis PAULMON Loc:000 > Jump to memory location Jump to memory location (000), or ESC to quit: _ W tym momencie należy wprowadzić wartość adresu, od którego został umieszczony program. Po wpisaniu ostatniego (czwartego) znaku na ekranie pojawi się napis running program: _
informując o rozpoczęciu wykonywania programu użytkownika. Przed przejściem pod wyspecyfikowany adres program monitora odkłada na stosie wartość 0000H, zatem programy, które kończą się instrukcją RET powodują ponowne wywołanie programu monitora. Jeśli program działa w nieskończonej pętli, to jedyną możliwością powrotu do programu monitora jest reset mikrokontrolera.. Wskazówki do ćwiczenia Wszystkie niezbędne informacje odnośnie układów wykorzystanych w MSP znajdują się w dodatkach dołączonych do instrukcji: dodatek A: mikrokontroler 80C, dodatek : przerzutnik monostabilny 7LS... Konfiguracja przestrzeni adresowej MSP monitor EPROM program RAM: dane RAM: obszar wspólny dla programu i danych: 0000h 0FFFh, 000h F7FFh, 0000h F7FFh, 000h F7FFh... Adresy układów peryferyjnych rejestr zatrzaskowy danych wyświetlacza LED F800h, D7 D6 D D D D D D0 c d h f e g b a a f g b e c d h. Literatura [] Rydzewski A.: Mikrokomputery jednoukładowe. WNT, Warszawa 99. [] Starecki T.: Mikrokontrolery jednoukładowe rodziny. NOZOMI, Warszawa 996. [] Starecki T.: Mikrokontrolery 80 w praktyce. TC, Warszawa 00. [] Majewski, Kardach K.: Mikrokontrolery jednoukładowe 80. Programowanie w języku C w przykładach. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław 99. [] Kernighan W., Ritchie D.M.: ANSI C. WNT, Warszawa 99. [6] Lach M.: iblioteka mikroprocesorowych procedur standardowych. Elektronika Praktyczna ///7/ 997, / 998. [7] Kulka Z., Libura A., Nadachowski M.: Przetworniki analogowo-cyfrowe i cyfrowo-analogowe. WKiŁ, Warszawa 987. [8] Ohsmann M.: Kurs programowania mikrosterownika 80C. Elektronik Elektor /6/7/8/ 99. [9] Debuger/emulator/symulator mikrokomputerów jednoukładowych rodziny 80 MICD-/SICE-/MSIM-. Instrukcja obsługi, WG Electronics, Warszawa 99. [0] each M.: C Primer, Hitex (UK) Ltd. www.esacademy.com/automation/docs/cprimer/cprim.htm
D C A 6 7 8 R T C8 R T C8 R R7 T C8 T C8 T R9 C8 R R T6 C8 T7 C8 T8 C8 R D0 D D D D D D6 D7 S0 NC 7 8 7 8 U D D D D D D6 D7 D8 CLK CLR 7LS7 Q Q Q Q Q Q6 Q7 Q8 6 9 6 9 R k7 R k7 R6 k7 R8 k7 R0 k7 R k7 R k7 R6 D D D D k7 CQYP7 CQYP7 CQYP7 CQYP7 P.0 P. +V R7 k A C 6 U E E E 7LS8 Y0 Y Y Y Y Y Y6 Y7 0 9 7 R8 90R R9 80R R 90R R 90R R0 7k T9 C R 7k T0 C R 7k T C R 7k T C +V UA RCext C uf Cext A Q CLR 7LS Q Title Pakiet aplikacyjny do współpracy z uk 80C Number Revision 6 7 8 Size A Date: 8-Oct-00 Sheet of File: D:\Moje dokumenty\oap\instrukcje do makiet\instr Drawn y: \LED80.DD D C A