Bezpłatna biblioteka techniczna ENCYKLOPEDIA RADIOELEKTRONIKI I INŻYNIERII ELEKTRYCZNEJ Interfejs sterownika PIC z komputerem. Encyklopedia elektroniki radiowej i elektrotechniki Encyklopedia radioelektroniki i elektrotechniki / Mikrokontrolery Podczas opracowywania urządzenia na mikrokontrolerze (MCU) często pojawia się problem połączenia go z komputerem w celu wymiany informacji. W większości przypadków wymagany jest tryb dwukierunkowy przy stosunkowo niskim kursie wymiany. W najlepszym przypadku MK może mieć interfejs szeregowy, ale najczęściej trzeba go wybierać spośród tanich, które nie są wyposażone w taki interfejs. Przykładowo, bardzo popularny ostatnio mikrochip PIC16F84A firmy Microchip nie posiada takiego interfejsu. W artykule omówiono możliwość programowej implementacji interfejsu szeregowego zarówno od strony MK, jak i od strony komputera. Do komunikacji z urządzeniem w MK można wykorzystać port równoległy (LPT) lub szeregowy (COM) komputera. Z tym pierwszym jest łatwiej pracować – można w nim zastosować relatywnie większą liczbę sygnałów wejściowych i wyjściowych, których poziomy są zgodne z TTL. Wadą tego portu jest to, że o ile pod DOS-em czy Linuxem wystarczą proste operacje wejścia/wyjścia, aby z niego skorzystać, o tyle do poprawnej pracy pod Windows konieczne jest ścisłe przestrzeganie protokołu przesyłania danych, co przy pracy z mikrokontrolerem nie jest skuteczne . Możliwe jest także bezpośrednie sterowanie poszczególnymi liniami portu LPT, jednak wymaga to instalacji specjalnego sterownika. „Wadą” portu LPT jest to, że w większości komputerów jest tylko jeden i z reguły jest on zajęty przez drukarkę. Główną zaletą portu COM jest to, że standardowy interfejs programowania systemu Windows (API) pozwala na bezpośrednie sterowanie niektórymi liniami wyjściowymi i sterowanie liniami wejściowymi, a także posiada funkcję oczekiwania na jakieś zdarzenie związane z portem COM. Jego zaletą jest to, że standard RS-232, według którego wykonane są porty COM, umożliwia podłączanie i odłączanie kabli w trakcie pracy urządzeń (hot plug). Ponadto komputer prawie zawsze ma wolny port COM. Wadą portu jest to, że poziom sygnału różni się od TTL, w którym niski poziom logiczny odpowiada napięciu -12, a wysoki +12 V. Implementacja standardowego interfejsu RS-232 wymagałaby od MK ścisłego przestrzegania odstępów czasowych pomiędzy sygnałami wyjściowymi. W rzeczywistej sytuacji rezonator kwarcowy mikrokontrolera może nie odpowiadać częstotliwości transmisji danych, a sam MK jest zwykle zajęty czymś ważniejszym niż tworzenie precyzyjnych odstępów czasowych. W rezultacie łatwiej jest programowo zaimplementować opcję szeregowej wymiany synchronicznej, gdy każdy bit danych jest potwierdzany impulsem synchronizacyjnym. Schemat ideowy proponowanego interfejsu pokazano na ryc. jeden. Do konwersji poziomów RS-232 na TTL stosuje się dzielniki rezystancyjne R1R4 i R2R5. Diody VD1 i VD2 są niezbędne, aby nie przepuszczać napięcia ujemnego odpowiadającego logicznemu zeru. Wyjściowy sygnał TTL MK nie wymaga konwersji i może być podawany bezpośrednio na linie wejściowe portu COM. Rezystor R3 ogranicza prąd wyjściowy MK w przypadku możliwego przypadkowego zwarcia. Jak widać na schemacie do komunikacji z komputerem potrzebne są cztery przewody. Komputer inicjuje wymianę danych poprzez wysłanie impulsów zegarowych na linię DTR, umieszczenie transmitowanych danych na linii RTS i odebranie danych poprzez linię CTS. Komputer i MK mogą zmieniać dane tylko wtedy, gdy poziom logiczny sygnału synchronizacji jest niski. Ta opcja realizacji interfejsu pozwala na transmisję danych w trybie full duplex. Numery pinów XS1 na schemacie dotyczą gniazda DB-25F przy użyciu standardowego kabla modemowego. Numery styków dla pozostałych złączy oraz w przypadku stosowania kabla zerowego modemu podano w tabeli. 1. Częstotliwość powtarzania impulsów synchronizujących musi być tak dobrana, aby mikrokontroler miał czas na przetworzenie danych z komputera, odpowiadając na każdy impuls synchronizujący. Bity informacyjne przesyłane są sekwencyjnie. Po zakończeniu transmisji bitów jednego bajtu następuje transmisja kolejnych bitów bajtu, przy czym najbardziej znaczący bit informacji jest przesyłany jako pierwszy. Aby przywrócić interfejs do stanu pierwotnego (ustawiając liczbę przesyłanych bajtów na 0), komputer musi w log. 1 na linii synchronizacji zmienia stan linii danych. MK wysyła nowy bit danych na linię CTS w przypadku spadku impulsów o dodatniej polaryzacji na wejściu synchronizacyjnym DTR i odczytuje dane z linii RTS na zboczu impulsów o dodatniej polaryzacji. Wymiana może zostać w każdej chwili przerwana poprzez zatrzymanie podawania impulsów synchronizacyjnych. Schemat czasowy wymiany danych pokazano na rys. 2. Przy implementacji interfejsu zaleca się przesyłanie wartości kontrolnych w niektórych bajtach w celu sprawdzenia poprawności przesyłanych danych. Kod źródłowy procedury dla mikrokontrolera PIC16F84A [1] w języku C, realizującej proponowany interfejs, podano w tabeli. 2. Wywołanie procedury link() znajduje się w głównej pętli programu i jest stale wywoływane podczas operacji MK w celu monitorowania stanu interfejsu. Wszystkie zmienne wykorzystywane przez procedurę deklarowane są jako globalne. Przy każdym wywołaniu odczytuje stany linii wejściowych interfejsu (RB6 i RB7) i porównuje je ze stanami z poprzedniego wywołania. W określonych warunkach (spadek synchronizacji, zbocze synchronizacji, reset interfejsu) wykonywane są akcje zgodnie z logiką interfejsu. Kod źródłowy procedury dla komputera w języku Pascal (Delphi) podano w tabeli. 3. W tym przypadku procedura łączenia jest wywoływana jednorazowo w celu przeprowadzenia czynności wymiany informacji z MK. Przed wywołaniem musisz wypełnić przekazany bufor obuf. Na koniec procedury odebrane dane zostaną umieszczone w tablicy ibuf. Procedura otwiera określony port COM w komputerze i wykorzystując funkcje Windows API [2] kontroluje stan linii wyjściowych oraz odpytuje linie wejściowe. Po zakończeniu wymiany informacji port zostaje zamknięty. W procedurze łączenia opóźnienia czasowe realizowane są za pomocą funkcji Sleep(). Ich wartości są obliczane lub dobierane eksperymentalnie na podstawie braku utraty bitów podczas wymiany danych pomiędzy MK a komputerem. Przykład pokazuje opóźnienia przy wymianie ze sterownikiem PIC z rezonatorem kwarcowym o częstotliwości 4 MHz, który dodatkowo wykonuje inną użyteczną pracę. Jeżeli procedura wymiany trwa zbyt długo, można ją przenieść do osobnego wątku wykonawczego systemu operacyjnego, tak aby była wykonywana równolegle z programem głównym [2]. Jeśli wymiana informacji wymaga osobnego odczytu i zapisu, można rozdzielić tablice przesyłanych i odbieranych danych na różne adresy, jak pokazano na rys. 2. W MK wygodnie jest konstruować tworzenie przesyłanych danych i wykorzystanie odebranych danych w postaci procedur upload() i download(), wywoływanych odpowiednio przed transmisją i podczas odbioru kolejnego bajtu. Pierwszy z nich musi zwrócić wartość przesłanego bajtu według jego numeru w przesyłanym pakiecie informacji, drugi otrzymuje wartość odebranego bajtu i jego numer w pakiecie i musi wykorzystać te wartości do zmiany rejestrów MK, napisać do EEPROM itp. Implementację tych procedur przetwarzania pakietu informacyjnego o rozmiarze 4 bajtów (tabela 4) pokazano w tabeli. 5. Przykładowy program dla MK podano dla kompilatora C2C [3]. Procedurę komputerową można zastosować w programie napisanym w Borland Delphi 3 lub nowszym. literatura
Autor: S.Kuleshov, Kurgan Zobacz inne artykuły Sekcja Mikrokontrolery. Czytaj i pisz przydatne komentarze do tego artykułu. Najnowsze wiadomości o nauce i technologii, nowa elektronika: Nowy sposób kontrolowania i manipulowania sygnałami optycznymi
05.05.2024 Klawiatura Primium Seneca
05.05.2024 Otwarto najwyższe obserwatorium astronomiczne na świecie
04.05.2024
Inne ciekawe wiadomości: ▪ Leki przeciwdepresyjne na alkoholizm ▪ Ultracienki i elastyczny wyświetlacz elektroforetyczny ▪ MAX77950 Uniwersalny bezprzewodowy odbiornik zasilania Wiadomości o nauce i technologii, nowa elektronika
Ciekawe materiały z bezpłatnej biblioteki technicznej: ▪ sekcja serwisu Bezpieczeństwo pracy. Wybór artykułów ▪ artykuł Co to jest lubok? Szczegółowa odpowiedź ▪ artykuł Ciała obce w przewodzie słuchowym. Opieka zdrowotna ▪ artykuł Fototranzystory. Encyklopedia elektroniki radiowej i elektrotechniki
Zostaw swój komentarz do tego artykułu: Wszystkie języki tej strony Strona główna | biblioteka | Artykuły | Mapa stony | Recenzje witryn www.diagram.com.ua |