Temat: Obsługa portu komunikacji szeregowej RS232 w systemie STRC51. Ćwiczenie 2. (sd)



Podobne dokumenty
Start Bity Bit Stop 1 Bit Par Rys. 1

Ćw. 5. Obsługa portu szeregowego UART w mikrokontrolerach 8051.

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Systemy mikroprocesorowe - projekt

PERSON Kraków

Architektura mikrokontrolera MCS51

Architektura mikrokontrolera MCS51

Budowa systemów komputerowych

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Rys 2. Schemat obwodów wejściowo/wyjściowych urządzeń w magistrali I2C

HiTiN Sp. z o. o. Przekaźnik kontroli temperatury RTT 4/2 DTR Katowice, ul. Szopienicka 62 C tel/fax.: + 48 (32)

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

ANALOGOWE UKŁADY SCALONE

CZYTNIK ZBLIŻENIOWY RFID-UR80D

VLAN Ethernet. być konfigurowane w dowolnym systemie operacyjnym do ćwiczenia nr 6. Od ćwiczenia 7 należy pracować ć w systemie Linux.

Systemy wbudowane Mikrokontrolery

Grupa bezpieczeństwa kotła KSG / KSG mini

Instrukcja obsługi panelu operacyjnego XV100 w SZR-MAX-1SX

MIKROPROCESORY architektura i programowanie

Instrukcja obsługi. Sterownik ścienny KJR10B/DP

Spis zawartości Lp. Str. Zastosowanie Budowa wzmacniacza RS485 Dane techniczne Schemat elektryczny

PRZEMYSŁOWY ODTWARZACZ PLIKÓW MP3 i WAV

Karta adaptacyjna GSM

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

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Programator pamięci EEPROM

Ćwiczenie 7 Liczniki binarne i binarne systemy liczbowe.

Tester pilotów 315/433/868 MHz MHz

Bazy danych. Andrzej Łachwa, UJ, /15

raceboard-s Szybki start

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

Elementy cyfrowe i układy logiczne

asix4 Podręcznik użytkownika MODBUS - drajwer protokołu MODBUS/RTU tryb MASTER Podręcznik użytkownika

CYFROWY MIERNIK REZYSTANCJI UZIEMIENIA KRT 1520 INSTRUKCJA OBSŁUGI

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

INSTRUKCJA OBSŁUGI MC-2810 CYFROWY SYSTEM GŁOŚNIKOWY 5.1 KANAŁÓW DO KINA DOMOWEGO

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

INSTRUKCJA OBSŁUGI TERMOMETR CYFROWY TES-1312A

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

ROZDZIAŁ 1 Instrukcja obsługi GRAND HAND VIEW III

Wtedy wystarczy wybrać właściwego Taga z listy.

Tester pilotów 315/433/868 MHz

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Sterownik Silnika Krokowego GS 600

INSTRUKCJA DLA UCZESTNIKÓW ZAWODÓW ZADANIA

Adapter USB do CB32. MDH-SYSTEM ul. Bajkowa 5, Lublin tel./fax lub kom e mail: info@mdh-system.pl

Urządzenia do bezprzerwowego zasilania UPS CES GX RACK. 10 kva. Wersja U/CES_GXR_10.0/J/v01. Praca równoległa

Komputer i urządzenia z nim współpracujące

Instrukcja programu PControl Powiadowmienia.

Zainstalowana po raz pierwszy aplikacja wymaga aktualizacji bazy danych obsługiwanych sterowników.

UMOWA PORĘCZENIA NR [***]

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Sterownik nagrzewnicy elektrycznej HE

NACZYNIE WZBIORCZE INSTRUKCJA OBSŁUGI INSTRUKCJA INSTALOWANIA

Sieci komputerowe. Definicja. Elementy

ST SPECYFIKACJA TECHNICZNA ROBOTY GEODEZYJNE. Specyfikacje techniczne ST Roboty geodezyjne

MIKROPROCESORY architektura i programowanie

Implant ślimakowy wszczepiany jest w ślimak ucha wewnętrznego (przeczytaj artykuł Budowa ucha

Śrubka zamykająca Uchwyt ścienny Przycisk kontrolny Lampka kontrolna

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

INSTRUKCJA RUCHU I EKSPLOATACJI SIECI DYSTRYBUCYJNEJ

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

DYSTRYBUCJA : DJ-DISTRIBUTION NUMARK POLSKA

Lekcja 173, 174. Temat: Silniki indukcyjne i pierścieniowe.

ZAPYTANIE OFERTOWE. Nazwa zamówienia: Wykonanie usług geodezyjnych podziały nieruchomości

Archiwum Prac Dyplomowych

Interfejs RS485-TTL KOD: INTR. v.1.0. Wydanie: 2 z dnia Zastępuje wydanie: 1 z dnia

Instrukcja postępowania w celu podłączenia do PLI CBD z uwzględnieniem modernizacji systemu w ramach projektu PLI CBD2

Moduł GSM generacja 1

Metrologia cieplna i przepływowa

Wartości domyślne, szablony funkcji i klas

TRICARE Overseas Program (TOP)

Instrukcja wgrywania synoptyki pola (wersja modelu danych do 634)

PROFIBUS - zalecenia odnośnie montażu i okablowania instalcji sieciowych Profibus PNO Polska

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Wykład 2. Interfejsy I 2 C, OneWire, I 2 S

Spis procedur i programów

Elektryczne ogrzewanie podłogowe fakty i mity

Komuniukacja Komputer-Komputer

MikloBit ul. Cyprysowa 7/ Jaworzno. rev MB-JTAG-ICE debugger-programator

Włączanie przystawki odbioru mocy EG. Działanie

Automatyka. Etymologicznie automatyka pochodzi od grec.

Warszawa: Dostawa kalendarzy na rok 2017 Numer ogłoszenia: ; data zamieszczenia: OGŁOSZENIE O ZAMÓWIENIU - dostawy

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

elektroniczna Platforma Usług Administracji Publicznej

Instrukcja obsługi programu MKi-m konfigurator

Ćwiczenie 6 - Czytnik kart magnetycznych

Skuteczność i regeneracja 48h albo zwrot pieniędzy

PROCEDURA ADMINISTROWANIA ORAZ USUWANIA

Jak zaprogramować procesor i. wgrać firmwar-e do yampp3usb. Copyright SOFT COM sp. z o. o.

INFORMATOR TECHNICZNY. Pierwsze uruchomienie przemiennika częstotliwości Astraada Drive UWAGA!

Podstawy Elektrotechniki i Elektroniki

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

INTERFEJS S-CTT Super Chip tuning tool INSTRUKCJA OBSŁUGI

Sieci komputerowe cel

Pierwsze kroki. Krok 1. Uzupełnienie danych własnej firmy

tel/fax lub NIP Regon

SPECYFIKACJA ISTOTNYCH WARUNKÓW ZAMÓWIENIA. na obsługę bankową realizowaną na rzecz Gminy Solec nad Wisłą

Transkrypt:

1.Wprowadzenie do komunikacji szeregowej RS232 Systemy bazujące na procesorach C51 mogą komunikować się za pomocą standardu RS232 np.: z komputerem PC. Rysunek 1. pokazuje format wymiany danych w fizycznej warstwie komunikacji. Start Bit Stop 1 7 6 5 4 3 2 1 0 Parz. 1 2 0 Rys. 1 Każda ramka rozpoczyna się symbolem start zawsze równym 0, po którym przesyłane jest 5,6,7,8 lub 9 bitów informacji, opcjonalnie bit parzystości a na końcu pole stopu o długości 1, 1 ½, 2 bitów. Dla celów weryfikacji poprawności transmisji może być używane kontrolowanie parzystości / nie parzystości. Algorytm ten sprzętowo wspomagany, generuje wartość (bitu parzystości): 0 lub 1, w taki sposób aby przy ustawionym generowaniu parzystości w całości transmitowanej informacji była parzysta liczba jedynek, lub dla generowanej nieparzystości liczba jedynek była nie parzysta. Dla programisty ważne jest tylko czy peryferia obsługi komunikacji RS232 w C51 są ustawione w taki sam trybie co strona przeciwna tej komunikacji (np. PC). Po nadanej ramce danych może zostać nadana następna, bez żadnego opóźnienia czy potwierdzenia. Należy zaznaczyć, że istnieje system potwierdzania lub bardziej precyzyjnie kontroli przepływu wymiany danych - zagadnienie to jednak wykracza poza ramy ćwiczenia. Użycie pewnych grupy trybów komunikacji standardu RS232 w STRC51 jest niemożliwe z powodów nie wspierania ich przez procesor (np. długość bitu stopu 1½). Analiza możliwości procesora C51 i jego podłączenia opisanego na schemacie STRC51 może być pomocna w ustaleniu możliwości komunikacyjnych. 2.Zasada pracy portu transmisji szeregowej w STRC51 W mikrokontrolerze C51 mamy do dyspozycji rejestry specjalne obsługujące komunikację szeregową: SCON, TMOD, TCON, PCON, SMOD, SBUF. Rejestr SCON umieszczony pod adresem 0x98 w przestrzeni pamięci wewnętrznej rejestrów specjalnych (deklaracja: sfr at 0x98 SCON;) Poniższa tabela przedstawia organizacje i symboliczne oznaczenie bitów: 7 6 5 4 3 2 1 0 SM1 SM0 SM2 REN TR8 RB8 TI RI Gdzie bity oznaczają: SM0, SM1 - Określenie trybu pracy łącza SM1 SM0 0 0 - tryb 0, transmisja synchroniczna, 0 1 - tryb 1, transmisja asynchroniczna, z regulacją prędkości transmisji, 8 bitowy transfer, 1 0 - tryb 2, transmisja asynchroniczna bez możliwości regulacji prędkości, 9 bitowy transfer, 1 1 - tryb 3, transmisja asynchroniczna z możliwością regulacji prędkości, 9 bitowy transfer, 1/6

SM2 - Bit sterujący pracą tryb: punkt-punkt (0), wieloprocesorowa (1), 1. REN - Bit zezwolenia na odbiór danych przez łącze szeregowe (1), TR8 - Dodatkowy dziewiąty bit transmisji wieloprocesorowej, RB8 - Dodatkowy dziewiąty bit transmisji wieloprocesorowej, TI - Wskaźnik przerwania opróżnienia bufora nadawczego (1), po zapełnieniu bufora nadawczego SBUF nowymi danymi należy ten wskaźnik skasować w programie, RI - Wskaźnik przerwania zapełnienia się bufora odbiorczego (1), po odczytaniu bufora odbiorczego SBUF należy ten wskaźnik skasować programowo. Rejestr TMOD - opisany dokładnie w ćwiczeniu 3 - ustawia pracę Timera niezbędnego do prawidłowego funkcjonowania łącza szeregowego. Nie wchodząc w szczegóły dla poprawnej pracy, należy wykonać następującą sekwencję (ustawienie licznika w tryb samo przeładowywania): TMOD &= 0x0F; TMOD = 0x20; Sprawi ona że licznik nr.1 będzie dostarczał niezbędny sygnał zegarowy dla wewnętrznych w C51 układów UART/RS232 (zgodnie z ustawieniami TH1). Rejestr TCON umieszczony od adresem 0x88 w przestrzeni pamięci wewnętrznej rejestrów specjalnych (deklaracja: sfr at 0x88 TCON;). Poniższa tabela przedstawia organizacje i symboliczne oznaczenie bitów: 7 6 5 4 3 2 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1 - Wskaźnik przerwania od licznika 1, zerowany sprzętowo podczas wykonywania TR1 - Bit włączenia(1)/wyłączenia(0) licznika 1, TF0 - Wskaźnik przerwania od licznika 0, zerowany sprzętowo podczas wykonywania TR0 - Bit włączenia(1)/wyłączenia(0) licznika 0, IE1 - Wskaźnik przerwania od wejścia /INT1, zerowany sprzętowo podczas wykonywania IT1 - Bit określający sposób reakcji na sygnał na wejściu /INT1: 0 - przerwanie wyzwalane niskim poziomem na wejściu, 1 - przerwania wyzwalane zboczem na wejściu, IE0 - Wskaźnik przerwania od wejścia /INT0, zerowany sprzętowo podczas wykonywania IT0 - Bit określający sposób reakcji na sygnał na wejściu /INT0: 0 - przerwanie wyzwalane niskim poziomem na wejściu, 1 - przerwania wyzwalane zboczem na wejściu, 1 Standardowo komunikacja wieloprocesorowa nie jest dostępna w komputerach PC. 2/6

Rejestr PCON umieszczony pod adresem 0x87 w przestrzeni pamięci wewnętrznej rejestrów specjalnych (deklaracja: sfr at 0x87 PCON;). 7 6 5 4 3 2 1 0 SMOD - - - - - - - SMOD - Bit sterujący prędkością pracy łącza szeregowego (patrz wzór w dalszej części dokumentu). Rejestr SBUF umieszczony pod adresem 0x99 w przestrzeni pamięci wewnętrznej rejestrów specjalnych (deklaracja: sfr at 0x99 SBUF;). Jest on rejestrem nadawczo/odbiorczym, transmisji szeregowej. Czytana wartość z tego rejestru jest wartością ostatnio odebranego znaku (jeżeli został takowy odebrany), wartość wpisana do tego rejestru będzie transmitowana przez nadajnik. Uwaga nie można odczytać wartości wpisanej w poprzednim wpisie wartość tak odczytana jest dokładnie wartością ostatnio odebraną a nie nadaną). 3.Użycie przerwań związanych z transmisją szeregową Przed przystąpieniem do obsługiwania łączności szeregowej z udziałem przerwań, należy prawidłowo zainicjować kolejne pola rejestrów: - ustawiamy tryb transmisji łącza (SCON), - zezwolenie na obsługę odbierania danych z łącza (SCON), - ustawienie trybu pracy licznika 1 (TMOD, TCON) z pobudzaniem z wewnętrznego oscylatora, - ustawienie bitu SMOD (PCON), - ustalenie wpisanie prędkości transmisji (TH1 i TL1), - zezwolenie na generowanie przerwań od łącza szeregowego (ES), - zezwolenie na obsługę wszelkich przerwań (EA). Na uwagę zasługuje sposób wyliczania wartości wpisywanej do TH1 w zależności od częstotliwości oscylatora zasilającego procesor. Najwygodniej jest używać w tym liczniku tryb z auto-przeładowywaniem, ustawiając licznik T1 w tryb 2. Prędkość transmisji wyznaczana jest ze wzoru: Baud = fosc * 2^SMOD / (32*12*(256-TH1)) fosc - częstotliwości oscylatora w STRC51 równa 11059200 (co odpowiada częstotliwości rezonatora kwarcowego wmontowanego w STRC51), Po tak pracochłonnych czynnościach można uważać port transmisji szeregowej za skonfigurowany. Należy pamiętać, że: -procedura przerwania jest wywoływana raz dla każdego odebranego/nadanego znaku, -bufor SBUF może być tylko raz odczytany dla każdego znaku odbieranego i raz zapisany dla nadanego znaku, -sprawdzenie czy przerwanie wygenerował sygnał opróżnienia bufora nadawczego czy zapełnienie bufora odbiorczego może być przeprowadzone przez badanie bitu TI lub RI (odpowiednio). -po wykonaniu odpowiednich operacji związanych z SBUF należy wyzerować bity TI/RI. Poniższy pseudokod prezentuje szablon uruchamiania połączenia szeregowego z nadawaniem w poolingu jednego znaku jak i w podobny sposób jego odbierania. 3/6

1. <sekcja include> Dołączenie wszelkich plików nagłówkowych jeżeli potrzebne 2. char funkcja-getchar(){ 3. petla-az-znak-gotowy; Czekanie na znak (sprawdzanie bitu RI) 4. znak = SBUF; Odczytanie znaku z SBUF 5. return znak; Zwrócenie znaku 6. } 7. funkca-putchar(znak){ 8. SBUF = znak; Wpisanie do SBUF znak do wysłania 9. czekaj-az-znak-zostanie-wysłany; Czekamy aż znak zostanie nadany (TI) 10. } 11. void main(void){ 12. SCON =? 13. TMOD &= 0x0f; 14. TMOD = 0x20; 15. TCON =? 16. PCON =? 17. TH1=TL1 =? 18. TI =? Konfiguracja pracy łącza szeregowego 19. petla-nieskonczona{ 20. c = funkcja-getchar(); Wciągniecie znaku z łącza 21. c = c + 1; Zmodyfikowanie znaku 22. funkcja-putchar(c); wysłanie znaku 23. } 24. } Powyższy pseudokod w tym przykładzie przetwarza znaki w nieskończonej pętli. Rozwiązanie takie jest nie optymalne, może zdarzyć się, że przy bardziej zaawansowanym modyfikowaniu znaku (linia 21) nadejście nowego znaku może napisać poprzedni jeszcze nie odczytany znak. Aby zapobiec takim sytuacjom zaleca się stosowanie buforów okrężnych (zwanych też cyklicznymi, kołowymi) oraz używanie przerwań związanych z łączem szeregowym. 4.Wsparcie transmisji szeregowej w pakiecie SDCC Inną metodą efektywniejszego oprogramowania komunikacji szeregowej jest wykorzystanie przerwań. W pakiecie SDCC można zadeklarować funkcję obsługi komunikacji łącza szeregowego w następujący sposób: void serial_isr(void) interrupt 4{ if(ti){ TI=0; //ten fragment będzie wykonany po wysyłaniu znaku przez C51... } if(ri){ RI=0; //ten fragment będzie wykonany przy odbieraniu znaku przez C51... } } W prezentacji pod adresem: http://cygnus.tele.pw.edu.pl/olek/doc/np/rs232_cyc_a.pps, pokazano scenariusz działania buforów i obsługi z wykorzystaniem przerwań. 4/6

5.Zmienne i stałe w SDCC Twórcy pakietu SDCC przewidzieli następujące (najważniejsze) rozszerzenia języka C używane podczas deklarowania zmiennych i stałych w kodzie: {code xdata data idata} <typ zmiennej> <nazwa zmiennej> Gdzie symbole mają następujące znaczenie: code -deklaracja obiektu tworzonego w stałej pamięci programu przestrzeni adresowej procesora C51, z tego typu przedrostkiem nie wolno tworzyć obiektów zmiennych (podczas pracy programu), ten typ najlepiej stosować w przypadku deklaracji dużych tablic o stałych wartościach (np.: zapisane w tablicy wartości funkcji matematycznych dla określonych ich argumentów), xdata -deklaracja obiektu tworzonego w pamięci danych przestrzeni adresowej procesora C51, z tego typu przedrostkiem tworzy się obiekty w pamięci zewnętrznej procesora (która może nie być fizycznie dołączona, w przypadku STRC51 jest jej 32KB), w przypadku STRC51 w przestrzeni tej umieszczone są także urządzenia wejścia/ wyjścia. data -deklaracja obiektu tworzonego w pamięci wewnętrznej procesora C51, w przypadku całej rodziny C51 jest jej 128B (włączając w to stos procesora), idata -deklaracja obiektu tworzonego w pamięci wewnętrznej procesora C51, w klasycznych procesorach 80C51 pamięci tej nie ma! (układ AT89C51 też tej pamięci nie ma!) Dodatkowo (w stosunku do klasycznej wersji C) można definiować zmienne następujących typów: bit -najmniejsza (najmniej miejsca zajmuje) zmienna w C51, deklaruje zmienną która może przyjąć tylko dwie wartości 0 1, ilość takich zmiennych jest ograniczona do 160 bitów (ten obszar jest alokowany w maksymalnym rozmiarze 20B), pakiet SDCC 2 nie wspiera zwracania wyniku funkcji w takim typie, sfr, sbit -zmienne zasadniczo związane z architekturą procesora (lub jego odmianą), sfr - jest zmienną 8 bitową umieszczaną w przestrzeni rejestrów specjalnych (patrz:), sbit zminne 1 bitowe podobnie jak sfr umieszczaną w przestrzeni rejestrów specjalnych (patrz:), w wielu przypadkach składowe rejestrów sfr np.: deklaracja IE: sfr at 0xA8 IE; deklaracje bitów w rejestrze IE: sbit at 0xA8 EX0; sbit at 0xA9 ET0; sbit at 0xAA EX1;... Czy przytoczone na wstępie tego dokumentu deklaracje: sfr at 0x98 SCON; sfr at 0x88 TCON; sfr at 0x87 PCON; sfr at 0x99 SBUF; 2 Dotyczy wersji 2.3.0 pakietu SDCC 5/6

Użyty w powyższych przykładach modyfikator at, może być używany dla adresowania absolutnego umiejscowienia deklarowanej zmiennej lub stałej. Przykład wykorzystania (znany z poprzednich ćwiczeń): xdata at 0x8000 unsigned char U15; xdata at 0xffff unsigned char U10; lub: sbit at 0xB5 T1; Więcej informacji co do budowy pakietu SDCC można znaleźć w pliku: \sdcc\doc\index.html //obiekt umieszczony pod adresem //0x8000 w przestrzeni xdata, //obiekt umieszczony pod adresem //0xFFFF w przestrzeni xdata, //deklaracja głośnika w STRC51 6/6