laboratorium Komputerowych Systemów Pomiarowych
temat ćwiczenia:
Oprogramowanie systemu pomiarowego z interfejsem RS232
z elementami ćwiczenia numer 5 cyklu II
skład grupy:
data wykonania ćwiczenia:
.
data oddania sprawozdania:
System interfejsu MicroLAN umożliwia komunikacje pomiędzy jednym
układem typu master (komputer PC wyposażony w port szeregowy RS-232C) i
wieloma elementami typu slave (czujnik temperatury – rys. 1). Linie pomiarową,
nazywaną jednoprzewodową, stanowi w rzeczywistości para przewodów: przewód
„gorący” i przewód „masy” (rys. 2). System MicroLAN składa się z trzech głównych
części:
-
układu nadrzędnego i oprogramowania
-
połączeń
-
zespołu elementów typu slave.
Zalecane jest uzależnienie szybkości transmisji od długości
magistrali. Definiuje się magistralę krótką do 10m i długą do
300m. Trzy rodzaje szybkości transmisji:
-
normalna do 16,3 kb/s
-
podwyższoną do 142 kb/s, wyłacznie w krótkich
magistralach
-
zmienną
W systemie wykorzystuje się protokół transmisji
dwukierunkowej 1-Wire. Współpraca linii MicroLAN z
komputerem PC wymaga zastosowania konwertera
dostosowującego poziom napięcia standardu RS-232 do poziomu
napięcia linii MicroLAN (stosuję się poziomy logiczne napięć CMOS/TTL; poziom napięcia poniżej 0.8V
interpretowany jest jako poziom niski, poziom napięcia powyżej 2.2V traktowany jest jako poziom wysoki)
Protokół transmisji 1-Wire komunikacji układu nadrzędnego z układami dołączonymi do linii MicroLAN
obejmuje następujące podstawowe sekwencje:
-
inicjalizacja
-
zapis 1
-
zapis 0
-
odczyt
Komendy i dane są przesyłane bit po bicie,
począwszy od najmniej znaczącego bitu.
Synchronizacja pomiędzy układem master i
slave jest wyznaczana przez opadające zbocze
sygnału generowanego przez układ master. Stan
logiczny linii po tym sygnale synchronizacji
określa wartość przesyłanego bitu (tzw.
transmisja danych w oknie czasowym) – rys. 3
a). Dzięki poprzedzeniu każdego przesyłanego
bitu zboczem synchronizującym, ewentualne
przerwy pomiędzy transmisją kolejnych bitów
nie powodują błędów w komunikacji. Odczyt
danych z elementów slave polega na
odpowiedniej interpretacji stanu linii
wymuszonego przez element slave w
odpowiedzi na wcześniejsze wymuszenie
układu master. Po sygnale RESET i
potwierdzeniu obecności układu sygnałem
PRESENT do czujnika są przesyłane komendy
związane z identyfikacją układu w linii, zapisu i
odczytu danych.
Każdy element dołączany do sieci MicroLAN
ma własny 64-bitowy kod SSN umieszczony w
pamięci ROM. Zapisane są kolejno: 8 bitów kodu określającego typ układu, 48 bitów oznaczających
niepowtarzalny numer układu, 8 bitów wielomianu kontrolnego CRC – rys. 4 (SSN pozwala na umieszczenie 2
56
elementów w systemie – możliwość zaadresowania na jednej linii bez konfliktów dużej ilość ukłdów).
rys. 2
rys. 1
zapis 1
odczyt 1
zapis 0
a)
b)
odczyt 0
15 s
µ
15 s
µ
okno czasowe
okno czasowe
zbocze synchronizujące
wymuszenie
układu master
start transmisji
następnego bitu
odczyt
następnego bitu
odpowiedź
układu slave
odpowiedź
układu slave
rys. 3
Family Code, 8 bitów
CRC, 8 bitów
Serial Number, 48 bitów
rys. 4
(C) 2004 STUDENT.NET.PL :: Wszelkie prawa zastrzeżone
Jako element slave w systemie MicroLAN wykorzystywanym na laboratorium stosowany był czujnik
temperatury firmy Dallas Semiconductor, typu DS1920. Umożliwia on pomiar w zakresie od –55
o
C do +125
o
C
(zakresie od 0
o
C do 70
o
C niedokładność przetwarzania dla układu jest najmniejsza i wynosi 0,5
o
C). Wynik
pomiaru temperatury jest odczytywany w postaci 9-bitowego słowa. Maksymalnej wartości temperatury
odpowiada wartość binarna 00FA Hex, minimalnej wartości (-55°C) odpowiada binarnie FF92 Hex.
Dwa bajty pamięci EEPROM przechowują wartości dolnego i górnego progu temperatury stanu alarmowego.
Jeżeli nie wykorzystuje się funkcji alarmowych, te dwa bajty mogą zostać wykorzystane jako ogólnie dostępna
pamięć, do przechowywania np. poprzedniej wartości temperatury lub dodatkowego lokalnego kodu czujnika.
Bajty wykorzystywane do odczytu temperatury umieszczone są w 8-bajtowym rejestrze pamięci
(SCRATCHPAD). Odczyt rejestru zawsze rozpoczyna się od bajtu zerowego, następnie odczytywane są kolejne
bajty rejestru. Ostatnim czytanym bajtem rejestru jest bajt CRC. Obliczenie sumy CRC i porównanie z
zawartością ostatniego bajtu i wychwycenie ewentualnych błędów przesyłania danych.
Bajt 0 i bajt 1 zawierają informację o temperaturze. Wartość temperatury jest zapisana w stopniach C z
rozdzielczością 0.5C, w postaci 16-bitowej w kodzie uzupełnień do dwóch. Mimo że wykorzystywane są dwa
bajty, w rzeczywistości wynik jest zapisywany na 9 bitach (rys.5 z przykładowymi wartościami, 22
o
C). Bity
bajtu LSB zawierają wartość temperatury, bit bajtu MSB zawierają znak Bit znaku jest powielony we wszystkich
bitach bajtu MSB – rys. 5.
2.1 Pomocniczy program do programowego resetowania konwertera.
Podczas realizowania kolejnych rozwinięć
programu będącego przedmiotem
laboratorium, powtarzały się sytuacje w
których uruchamianie rozwiązania
zawierającego usterkę powodowało błąd
układu. W takiej sytuacji konieczne było
programowe resetowanie konwertera przy
pomocy programu reset – rys. 6.
2.2
Sygnał reset i analiza odpowiedzi układu.
Ponieważ przerwanie lub wysłanie niekompletnych sekwencji powoduje nieprawidłowe działanie układu,
każda sekwencja powinna się zaczynać wysłaniem sygnału reset i odpowiedzią na niego. Jeżeli w takim
przypadku brak jest prawidłowej odpowiedzi wykonać należy programowy reset. Analizując odpowiedz
układu
przedstawionego na
rys. 7, ustalamy ze
wysłanie sygnału
reset to C1 Hex, a
odpowiedź na ten
sygnał C9 Hex.
Dla rozumienia dalszych instrukcji laboratorium kluczowe było zapoznanie się z diagramem działania
układu serii DS. Zarówno pierwszy (dla DS2480) z diagramów jak i bardziej rozbudowany (dla DS1820)
przedstawiają możliwości przechodzenia między trybami pracy układu. Na podstawie schematów
wyjaśnione zostało działanie i potrzeba stosowania modułu RESET. Pokazano także drogę jaką trzeba
przejść (wydawanie kolejnych instrukcji z poziomu programu w HpVee) aby korzystać z funkcji pamięci
ROM i RAM.
2.3
Przejście z trybu COMMAND MODE do trybu DATA MODE
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
0
LSB
MSB
rys. 5
rys. 6
rys. 7
rys. 8
(C) 2004 STUDENT.NET.PL :: Wszelkie prawa zastrzeżone
2.4
Identyfikacja układu dołączonego do linii 1-Wire.
Na podstawie tabeli w której zebrane
zostały dane wiążące sekwencje z
wysyłanymi i odbieranymi bajtami
informacji, powstał program (rys. 9), który
odczytuje 64 bitowy ROM układu serii DS.
Dla uzyskanego Family Code równego
10H, po skorzystaniu z tabeli tłumaczącej
ten kod na symbol układu, ustalono że w
laboratorium wykorzystywany jest układ
DS1920 (TEMPERATURE iButton)
2.5
Odczyt zawartości pamięci
SCRATCHPAD układu DS1920.
Uzyskanie dostępu do pamięci
SCRATCHPAD wymaga:
-
pominięcia identyfikacji układu –
instrukcja CC Hex
-
odczytu pamięci SCRATCHPAD –
instrukcja BE Hex
W pierwszej wersji programu odczytane
bity (które powinny zawierać wartość
odczytanej temperatury) są równe 0. Przed
odczytem temperatury należy bowiem
uzupełnić program w wysyłanie instrukcji
startu konwersji temperatury (44 Hex). Część programu odpowiedzialną za to rozwiązanie należy
umieścić między blokiem instrukcji odpowiedzialnych za identyfikację układu (stworzono z nich
zamknięty UserObject) a kodem realizującym odczyt pamięci SCRATCHPAD.
Sposób realizacji rozwiązania odczytu temperatury jest widoczny na rys. 12 (gdzie pokazany jest finalna
postać programu, spełniająca wszystkie funkcje zadane w instrukcji do laboratorium). Opierając się na
zestawie danych wiążących odczyt wartości bitów z urządzenia iButton z odpowiadającą mu temperaturą,
wyprowadzono ogólną zasadę i odnotowano odczyt temperatury 21
o
C.
2.6
Wyznaczanie temperatury.
Panel użytkownika o którym mowa w punkcie 2.6 (zawierający: numer seryjny układu, zawartość
pamięci SCRATCHPAD, wyniki obliczeń temperatury – w dokładny i mniej dokładny sposób),
przedstawiono na rys. 10. Przedstawiony panel zawiera także elementy które dodane zostaną do niego
zgodnie z instrukcją w punktach sprawozdania wyższych od 2.6
rys. 9
rys. 10
(C) 2004 STUDENT.NET.PL :: Wszelkie prawa zastrzeżone
2.7
Identyfikacja układów.
Podprogram analizy typu
układu zrealizowano jako
osobny obiekt
użytkownika i włączono
do całości programu.
Efekt automatycznej
identyfikacji (rozpoznania
bajtu FamilyCode) układu
został dodany do panelu
użytkownika widocznego
na rys. 10. Nowy obiekt
przedstawiono poniżej na
rys.
11. Całość
przygotowanego na
laboratorium programu
przedstawiono na rys. 12
Załącznik 1 przedstawia schemat blokowy układu. Jest to obraz realizacji programu wykonanego na
laboratorium.
rys. 11
(C) 2004 STUDENT.NET.PL :: Wszelkie prawa zastrzeżone