Wbudowane systemy mikroprocesorowe. Interfejs RS-485. Blok peryferyjny USART



Podobne dokumenty
2. Architektura mikrokontrolerów PIC16F8x... 13

TECHNIKA MIKROPROCESOROWA

Hardware mikrokontrolera X51

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

Kod produktu: MP01105

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

dokument DOK wersja 1.0

MIKROPROCESORY architektura i programowanie

Instrukcja MM-717 Tarnów 2010

Instrukcja do oprogramowania ENAP DEC-1

Kod produktu: MP-BTM222-5V

TECHNIKA MIKROPROCESOROWA II

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi

SM210 RS485 - JBUS/MODBUS dla SM102E. Æ Instrukcja obsługi

Opis czytnika TRD-80 CLASSIC ver Moduł czytnika transponderów UNIQUE z wbudowaną anteną

TECHNIKA MIKROPROCESOROWA

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

interfejs szeregowy wyświetlaczy do systemów PLC

Kod produktu: MP01105T

MIKROPROCESORY architektura i programowanie

Programowanie mikrokontrolerów. 15 stycznia 2008

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Komunikacja w mikrokontrolerach Laboratorium

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Komunikacja w mikrokontrolerach Laboratorium

Kod produktu: MP01611-ZK

RS-H0-05 (K)* Czytnik RFID MHz Mifare. Karta użytkownika

SM211 RS485 - JBUS/MODBUS dla SM103E. Æ Instrukcja obsługi

Kod produktu: MP01611

Wstęp Architektura... 13

Opis czytnika TRD-FLAT CLASSIC ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

Programowanie w językach asemblera i C

Instrukcja Obsługi. Modułu wyjścia analogowego 4-20mA PRODUCENT WAG ELEKTRONICZNYCH

ARS3-MODEM dokumentacja modemu radiowego do lokalnej transmisji danych w wolnych pasmach 433MHz i 868MHz

Interfejsy. w systemach pomiarowych. Ryszard J. Barczyński, 2016 Materiały dydaktyczne do użytku wewnętrznego

Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 4

Magistrala LIN

Architektura komputerów. Układy wejścia-wyjścia komputera

Opis czytnika TRD-55 CLASSIC ver Moduł czytnika transponderów UNIQUE z zewnętrzną anteną

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

RS485 MODBUS Module 6RO

RS485 MODBUS Module 6RO

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Programowanie mikrokontrolerów AVR z rodziny ATmega.

APLIKACJA COMMAND POSITIONING Z WYKORZYSTANIEM KOMUNIKACJI SIECIOWEJ Z PROTOKOŁEM USS W PRZETWORNICACH MDS/FDS 5000

SML3 październik

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Standard transmisji równoległej LPT Centronics

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 4

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Kod produktu: MP-W7100A-RS232

RS485 MODBUS Module 6RO

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Wbudowane układy komunikacyjne cz. 1 Wykład 10

Instrukcja obsługi symulatora linii produkcyjnej Komunikacja Modbus RTU (sterowniki PSW, Beckhoff)

Opis procedur asemblera AVR

THP-100 su Obsługa oprogramowania oraz instrukcja wzorcowania

MiniModbus 4DO. Moduł rozszerzający 4 wyjścia cyfrowe. Wyprodukowano dla. Instrukcja użytkownika

Rejestratory Sił, Naprężeń.

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1

ZAKŁAD SYSTEMÓW ELEKTRONICZNYCH I TELEKOMUNIKACYJNYCH Laboratorium Podstaw Telekomunikacji WPŁYW SZUMÓW NA TRANSMISJĘ CYFROWĄ

INTERFEJSY SYSTEMÓW ELEKTRONICZNYCH. Interfejsy klasy RS

Instrukcja integracji urządzenia na magistrali Modbus RTU. wersja 1.1

Architektura mikrokontrolera MCS51

Wstęp: Interfejs portu równoległego 6821 i portu szeregowego 6850 firmy Motorola

OPIS PROGRAMU USTAWIANIA NADAJNIKA TA105

Kod produktu: MP-BT-RS232

INSTRUKCJA OBSŁUGI PROGRAMU INSTAR 1.0

Kod produktu: MP-W7100A-RS485

Mikrokontroler 80C51/52

Architektura mikrokontrolera MCS51

Start Bity Bit Stop 1 Bit Par Rys. 1

Układy transmisji przewodowej. na przykładzie USB

. Rodzaje transmisji sygnału i RS-232

TECHNIKA MIKROPROCESOROWA II

Moduł przełączania temperatury Nr produktu

SDM-6RO. Moduł rozszerzający 6 wyjść przekaźnikowych. wyprodukowano dla

Mikroprocesor Operacje wejścia / wyjścia

Konwerter Transmisji KT-02

Materiały dodatkowe Krótka charakterystyka protokołu MODBUS

Programowanie mikrokontrolerów. 8 listopada 2007

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Kod produktu: MP01611-ZK

Laboratorium mikroinformatyki. Szeregowe magistrale synchroniczne.

W.J WIELICZKA

Interfejsy komunikacyjne pomiary sygnałów losowych i pseudolosowych. Instrukcja do ćwiczenia laboratoryjnego

Informator techniczny

Programowanie mikrokontrolerów 2.0

1W-H3-05(K)* Czytnik RFID 125 khz Unique. Instrukcja

Przesyłania danych przez protokół TCP/IP

Kod produktu: MP-BT-USB

Systemy wbudowane Wykład 6 - transmisje szeregowe: UART i pochodne. Komunikacja szeregowa Notes. Rodzaje transmisji Notes. Rodzaje transmisji Notes

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

1. Cel ćwiczenia. Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU.

Interfejs urządzeń peryferyjnych

INSTRUKCJA UŻYTKOWNIKA PROGRAMU

LEKCJA TEMAT: Zasada działania komputera.

Przemysłowy odtwarzacz plików MP3

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Odbiór i dekodowanie znaków ASCII za pomocą makiety cyfrowej. Znaki wysyłane przez komputer za pośrednictwem łącza RS-232.

Transkrypt:

Wbudowane systemy mikroprocesorowe Ćwiczenie laboratoryjne Interfejs RS-485. Blok peryferyjny USART Tematy ćwiczenia interfejs RS-485, blok peryferyjny USART Plan a) Podłączyć terminal do sieci RS-485 przez pierwsze złącze typu RJ45. Uruchomić w komputerze głównym aplikację XChronos i ustawić tryb skanowania terminali podłączonych do sieci. Aby obserwować sygnały na magistrali interfejsu, linie A i B połączyć z uziemionymi opornikami koło 5 kom każdy. Linie A i B są dostępne przez drugie złącze typu RJ45. Linia A jest połączona z wyprowadzeniem 1, a linia B jest połączona z wyprowadzeniem 2. Ziemia jest dostępna na złączę J13. Oporniki zamontować na płycie montażowej. Podłączyć oscyloskop do jednego z oporników i obserwować procesy na linii. Podłączyć drugi kanał oscyloskopu do drugiego opornika i obserwować sygnał różniczkowy. Pośród sygnałów wyszukać polecenie Podaj stan zaadresowane terminalowi swojego stanowiska i odpowiedź swojego terminalu. Rozszyfrować strukturę polecenia. Pokazać ramkę sygnałów prowadzającemu i przy tym opisać strukturę pakiety. b) Napisać w języku asemblera MPASM program, który generuje na liniach interfejsu ramkę (bajt) z numerem terminalu. Długość ramki musi odpowiadać częstotliwości 9600 bod. Ramka bez bitu parzystości, z jednym stopbitem. Uruchomić środowisko MPLAB IDE. Otworzyć nowy projekt przez punkt menu "Project/Project Wizard...". W projekt włączyć swój plik ".asm" i plik nagłówkowy P18F6720.inc. Przez punkt menu "File/Open..." otworzyć swój plik ".asm" z programem. Ustawić bity konfiguracyjne (ang. Configuration Bits) przez punkt menu "Configure/Configuration Bits" jak w ćwiczeniu "Środowisko MPLAB". Wybierając punkt menu "Project/Build All" wygenerować aplikację.

W celu sprawdzania programu w trybie krokowym za pomocą symulatora wybrać tryb "MPLAB SIM" przez punkt menu "Debugger/Select Tool". W ustawieniach debuggera (punkt menu "Debugger/Settings...") ustawić opcję "Processor Frequency" na 40 MHz. Sprawdzić aplikację. Wybrać punkt menu "File/Save Workspace" i zapisać ustawienia projektu, aby następnym razem można było otworzyć projekt przez punkt menu "File/Open Workspace". Przełączyć MPLAB na tryb "Programmer". Importować plik HEX32 ze swoim programem. Zaprogramować mikrokontroler PIC18F6720 w terminalu. Odłączyć terminal od sieci RS-485. Uruchomić aplikację i pokazać prowadzającemu ramkę sygnałów. Wskazówki Interfejs RS-485 Nazwa standardu zawiera skrót RS pochodzący od słów "Recommended Standard". Standard jest opracowany towarzystwem Electronics Industry Association. Szyna interfejsu szeregowego RS-485 łączy do 32 urządzeń. Linii interfejsu dwie: linia A i linia B. Na magistrali interfejsu informacja jest przekazywana sygnałem różniczkowym. Jedynka logiczna to różnica napięć na liniach A i B większa niż +200 mv, a zero logiczne to różnica napięć na liniach A i B mniejsza niż -200 mv. Linie są realizowane jako skręcona para. Trzecia linia - linia ziemi - może nie istnieć. Układy nadajników/odbiorników wytrzymują różnicę potencjałów ziemi do 15 kv. Transmisja asynchroniczna W interfejsie RS-485 jest używana transmisja asynchroniczna. W przypadku transmisji asynchronicznej urządzenia nadrzędne i podległe są synchronizowane sygnałami od różnych oscylatorów. Częstotliwość dwóch oscylatorów powinna być możliwie równa, ale nie może być idealnie jednakowa. Dlatego dane są przesyłane porcjami nie większymi niż jeden bajt. Ramka danych Porcja danych (bajt) jest wysyłany w ramce (rys. 1) z dodatkowymi bitami: - bitem startowym, - bitem parzystości lub nieparzystości, - jednym lub dwoma stop - bitami. Rys. 1. Struktura ramki interfejsu RS-485 przy transmisji asynchronicznej

Sygnałem synchronizacji jest zbocze na początku bita startowego. Zbocze powoduje w odbiorniku rozpoczęcie generacji sygnałów taktowych z częstotliwością nie mniejszą niż o 10 razy większą od częstotliwości nadawania bitów (zwykle o 16 razy większą). Mnie więcej na środku bita startowego sprawdza się poziom napięcia. Przy odbiorze bitu startowego, jeżeli poziom nie odpowiada poziomowi 0 logicznemu, odbiornik wstrzyma się od odbioru i interpretuje otrzymywany sygnał jako zakłócenie w kanale transmisji. Jeżeli bit startowy jest rozpoznany, to odbiornik mniej więcej na środku każdego następnego bita rejestruje aktualną wartość. Protokół transmisji danych Standard interfejsu RS-485 opisuje tylko ramkę z bajtem danych i nie nawiązuje protokółu transmisji danych. Wielopunktowy interfejs RS-485 potrzebuje rozwiniętego protokołu transmisji danych. Oprócz operacji po przesyłaniu danych są potrzebne operacje adresowania współdziałających urządzeń. Zwykle jedno z urządzeń połączonych w tor transmisyjny uważa się za główne i na niego spada obowiązek sterowania innymi. Protokół transmisji danych często buduje się pod konkretne zagadnienie. Rozpatrzmy protokół transmisji danych w interfejsie RS-485 dla systemu rejestracji czasu pracy. Niech system obejmuje komputer i kilka terminali do odczytu kart zbliżeniowych. Na kartach są zapisane dane do identyfikacji pracownika. W najprostszych realizacjach to może być tylko numer identyfikacyjny pracownika. W chwili rejestracji karty terminal zapisuje do swojej pamięci identyfikacyjny numer pracownika i czas rejestracji (rok, miesiąc, dzień, godzinę, minutę i sekundę). Od czasu do czasu komputer daje polecenie każdemu terminalowi przesłać zachowane dane. Jasne, że na bazie tej informacji program komputerowy może liczyć czas pracy każdego pracownika zakładu i udokumentować wyniki obliczeń. Niżej jest opisany możliwy protokół transmisji danych dla podobnego systemu. Każda transmisja jest inicjowana przez komputer. Komputer wysyła polecenie, a zaadresowany terminal musi wysłać odpowiedź. Podobny tryb komunikacji nazywa się trybem główny - podległy ( master slave ). Polecenie może być następującym pakietem bajtów: bajt długości pakietu, bajt numeru terminalu, bajt kodu rozkazu, bajty informacyjne, bajt sumy kontrolnej. Wartość bajta długości bloku jest równa ilości wszystkich bajtów. Bajt sumy kontrolnej można obliczać jako dopełnienie do 256 sumy wszystkich poprzednich bajtów. W takim przypadku suma bajtów całego pakietu powinna być równa 0. Po odebraniu poprawnego pakietu rozkazowego, wybrany terminal odpowiada podobnym pakietem, potwierdzając wykonanie rozkazu i przesyłając żądane dane. Odpowiedź może mieć następującą strukturę: bajt długości pakietu, bajt numeru terminalu, bajt kodu rozkazu,

bajty informacyjne, bajt sumy kontrolnej. Kod rozkazu w poleceniu i odpowiedzi może być jego numerem w następującej liście rozkazów: 1. Podaj stan. 2. Podaj czas. 3. Ustaw czas. 4. Ustaw wskaźnik odczytu na pierwszą rejestrację. 5. Kasuj rejestracje odczytane. 6. Podaj rejestrację i przesuń wskaźnik odczytu na następną rejestrację. Pakiet polecenia Podaj stan nie musi zawierać bajtów informacyjnych. Pakiet odpowiedzi Podaj stan może zawierać dane w następującej kolejności: 2 bajty liczby nie przeczytanych rejestracji. Polecenie Podaj czas i odpowiedź na polecenie Ustaw czas nie potrzebują danych. Polecenie Ustaw czas i odpowiedź na polecenie Podaj czas mogą zawierać dane w następującej kolejności: 4 bajty bieżącego czasu w formacie DOS (6 młodszych bitów dla sekundy, następne 6 bitów dla minuty, 5 bitów dla godziny, 5 bitów dla dnia (liczba od 1), 5 bitów dla miesiąca (liczba od 1), 6 starszych bitów dla roku od 1980). Polecenia Ustaw wskaźnik odczytu na pierwszą rejestrację, Kasuj rejestracje odczytane oraz odpowiedzi na te polecenia mogą być bez bloków danych. Podobnie może być z poleceniem Podaj rejestrację i przesuń wskaźnik odczytu na następną rejestrację. Tylko odpowiedź na ostatnie polecenie musi być z bajtami danych: 4 bajty czasu rejestracji w formacie DOS. Blok USART (UART) Techniczna realizacja interfejsu RS-232 lub RS-485 zwykle jest skoncentrowana w modułu lub układzie nazywanym USART (Universal Synchronous/Asynchronous Receiver/Transmitter) lub UART (Universal Asynchronous Receiver/Transmitter). W postaci bloków USART są realizowane łącza szeregowe COM komputera. Blok USART może być nazywany blokiem SCI (Serial Communications Interface). Mikrokontroler PIC18F6720 terminalu zawiera dwa bloki USART. Pierwszy z bloków (USART1) jest przeznaczony do implementacji interfejsu RS-485, drugi (USART2) - do implementacji interfejsu RS-232. Blok USART1 wykorzystuje wyprowadzenie RC6/TX1/CK1 jako wyjście nadajnika i wyprowadzenie RC7/ RX1/DT1 jako wejście odbiornika. Sygnały na tych wyprowadzeniach mają poziomy TTL. Układ MAX485E Do generowania sygnałów różnicowych interfejsu RS485 jest użyty układ MAX485E firmy MAXIM. Nadajnik układu MAX485E ma wejścia ze strony mikrokontrolera: DI - wysyłany bit, DE - zezwolenie na wysyłanie. Odbiornik układu MAX485E ma wyjścia w stronę mikrokontrolera: RO - przyjmowany bit,

^RE - zezwolenie na przyjmowanie (sygnałem jest poziom 0 ). Wejście DI układu MAX485E jest podłączone do wyprowadzenia RC6/TX1/CK1, a wejście DE - do wyprowadzenia RE6. Wyjście RO układu MAX485E jest podłączone do wyprowadzenia RC7/RX1/DT1, a wejście ^RE - do wyprowadzenia RE7/CCP. Sterowanie blokiem USART Rejestr PIR1 znaczników przerwań zawiera dwa bity związane z blokiem USART1: RC1IF (bit 5) - znacznik zapełnienia rejestru RCREG1 podbloku odbiornika, TX1IF (bit 4) - znacznik opustoszenia rejestru TXREG1 podbloku nadajnika. Znacznik RC1IF jest zerowany automatycznie po przeczytaniu rejestru RCREG1, a znacznik TX1IF - po zapisywaniu do rejestru TXREG1. Zezwolenia na przerwania przy odbiorze i nadawaniu są ustawiane w bitach rejestru PIE1: RC1IE (bit 5) - znacznik zezwolenia na przerwanie z powodu zapełnienia rejestru RCREG1 przy odbiorze, TX1IE (bit 4) - znacznik zezwolenia na przerwanie z powodu opustoszenia rejestru TXREG1 przy nadawaniu. Priorytety przerwań przy odbiorze i nadawaniu są ustawiane w bitach rejestru IPR1: RC1IP (bit 5) - znacznik najwyższego priorytetu przerwania z powodu zapełnienia rejestru RCREG1 przy odbiorze, TX1IP (bit 4) - znacznik najwyższego priorytetu przerwania z powodu opustoszenia rejestru TXREG1 przy nadawaniu. Aby blok USART1 był włączony należy ustawić w stan "1" bit SPEN (bit 7) rejestru RCSTA1. Do sterowania każdym z bloków USART istnieją trzy rejestry: o TXSTAx do sterowania podblokiem nadajnika, o RCSTAx do sterowania podblokiem odbiornika, o SPBRGx do wyboru częstotliwości kanału, gdzie x jest równa 1 lub 2. Zestaw bitów rejestru TXSTA1 dla trybu asynchronicznego: TX9 (bit 6) - wybór szerokości ramki: 1-9 bitów, 0-8 bitów; TXEN (bit 5) - zezwolenie na transmisję, SYNC (bit 4) - wybór trybu: 1 - synchroniczny, 0 - asynchroniczny; BRGH (bit 2) - wybór dzielnika wstępnego podbloku synchronizacji: 1-16, 0-64; TRMT (bit 1) - znacznik opustoszenia rejestru przesuwającego (wyjściowego); TX9D (bit 0) - dziewiąty wysyłany bit danych (bit adresu lub bit parzystości). Zestaw bitów rejestru RCSTA1 dla trybu asynchronicznego: SPEN (bit 7) - włączenie bloku USART1; RC9D (bit 6) - wybór szerokości ramki przyjmowanej: 1-9 bitów, 0-8 bitów. RCEN (bit 4) - zezwolenie na przyjmowanie, ADDEN (bit 3) - zezwolenie na zastosowanie dziewiątego bitu jako bitu adresu; FERR (bit 2) - znacznik błędu ramki; OERR (bit 1) - znacznik przepełnienia rejestru przyjmującego (wejściowego);

RC9D (bit 0) - dziewiąty przyjęty bit danych (bit adresu lub bit parzystości). Rejestr SPBRG1 przechowuje współczynnik dzielenia sygnału synchronizacji mikrokontrolera. Dodatkowy dzielnik wstępny jest wybierany przez bit BRGH rejestru TXSTA1. Obliczmy przykładowo, co należy załadować do rejestru SPBRG1, gdy częstotliwość w kanale musi być F = 9600 bod, a częstotliwość synchronizacji mikrokontrolera jest równa Fosc = 40 MHz. Współczynnik dzielenia Wd sygnału synchronizacji: Wd = Fosc / F = 40000000 / 9600 =4166,67 Ponieważ zakres wartości rejestru SPBRG1 jest od 0 do 255, to należy zastosować dzielnik wstępny na 64: Wd = Wd / 64 = 65 Do rejestru SPBRG1 należy załadować wartość o 1 mniejszą: SPBRG1 = Wd - 1 = 64 Bit BRGH musi być równy 0. Inicjalizacja mikrokontrolera związana z blokiem USART i układem MAX485E Porty C i E muszą być zainicjalizowane następująco: ;--- Port C movlw H'FF' movwf LATC, ACCESS movlw H'94' movwf TRISC, ACCESS ;--- Port E movlw H'BB' movwf LATE, 0 movlw H'00' movwf TRISE, 0 ;--- Ustawienia UART1 movlw H'02' movwf TXSTA1, ACCESS ;tryb asynchroniczny, 8 bitów, BRGH=0 movlw H'80' movwf RCSTA1, ACCESS ;włączenie bloku USART1, 8 bitów movlw H'40' movwf SPBRG1, ACCESS ;Dzielenie na (64+1) Funkcja wysyłania bajta danych bsf Przed wysyłaniem danych należy ustawić zezwolenie na transmisję w bicie TXEN (bit 5) rejestru TXSTA1: TXSTA1, TXEN, ACCESS Wysyłanie rozpoczyna się po załadowaniu bajta do rejestru TXREG1: pptx: ;dana w WREG movwf TXREG1, ACCESS nop ;opóźnienie o jeden cykl, aby TRMT := 0 kontx: btfss TXSTA1, TRMT, ACCESS bra kontx return