Komunikacja w mikrokontrolerach Laboratorium

Podobne dokumenty
Komunikacja w mikrokontrolerach Laboratorium

Mikroprocesory i Mikrosterowniki Laboratorium

Komunikacja w mikrokontrolerach. Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

Mikroprocesory i Mikrosterowniki Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

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

Magistrala I 2 C. Podstawy systemów mikroprocesorowych. Wykład nr 5 Interfejsy szeregowe c.d.

Instytut Teleinformatyki

Komunikacja w mikrokontrolerach Laboratorium

Programowanie mikrokontrolerów

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

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

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

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.

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

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

MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN

Systemy wbudowane - wykład 8. Dla zabicia czasu Notes. I 2 C aka IIC aka TWI. Notes. Notes. Notes. Przemek Błaśkiewicz.

Programowanie w językach asemblera i C

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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

2. Architektura mikrokontrolerów PIC16F8x... 13

Programowanie mikrokontrolerów. 8 listopada 2007

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Laboratorium Komputerowe Systemy Pomiarowe

PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI

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

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

Magistrala SPI. Linie MOSI i MISO sąwspólne dla wszystkich urządzeńna magistrali, linia SS jest prowadzona do każdego Slave oddzielnie.

SiMod-X-(A1) Przetwornik parametrów powietrza z interfejsem RS485 (MODBUS RTU) oraz wyjściem analogowym (dotyczy wersji -A1)

Laboratorium mikroinformatyki. Szeregowe magistrale synchroniczne.

Kod produktu: MP01105

Mikroprocesory i Mikrosterowniki Laboratorium

Mikroprocesory i Mikrosterowniki

na w inny sposób. Można się tutaj wzorować na zmierzchowym wyłączniku światła względu na ograniczoną ilość miejsca nie

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

MIKROKONTROLERY I MIKROPROCESORY

Przemysłowy odtwarzacz plików MP3

Kod produktu: MP01105T

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Standard transmisji równoległej LPT Centronics

Hardware mikrokontrolera X51

interfejs szeregowy wyświetlaczy do systemów PLC

Programowanie Mikrokontrolerów

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Systemy wbudowane Obsługa interfejsu 1-Wire na przykładzie termometru DS18B20

Instytut Teleinformatyki

Mikrokontrolery AVR techniczne aspekty programowania

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Programowanie mikrokontrolerów AVR z rodziny ATmega.

WIZUALIZACJA DANYCH SENSORYCZNYCH MINISTACJA METEOROLOGICZNA

Zdalny czujnik. Adam Zugaj Wydział Elektroniki, PWr IV rok, AiR (ARR) Wrocław, 12 czerwca 2009

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

W.J WIELICZKA

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Politechnika Wrocławska

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

SYSTEM E G S MODUŁ ML/A-1m wersja V32.1

Czujnik inercyjny LSM9DS0 oraz jego zastosowanie. praktyczne AVT 5491 PROJEKTY

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

TECHNIKA MIKROPROCESOROWA II

MAGISTRALA MODBUS W SIŁOWNIKU XSM Opis sterowania

LABORATORIUM ENERGOOSZCZĘDNEGO BUDYNKU

LABORATORIUM Bezprzewodowych Sieci Komputerowych

Spis treści. 1 Moduł Modbus TCP 4

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

2.1 Porównanie procesorów

STHR-2810, 2811, 2812 Przetwornik temperatury i wilgotności z czujnikiem Sensirion

Systemy wbudowane - Laboratorium Informatyka studia zaoczne inżynierskie

Politechnika Wrocławska, Katedra Inżynierii Biomedycznej Systemy Pomiarowo-Diagnostyczne, laboratorium

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

Programowanie mikrokontrolerów 2.0

m e d i a s e r v i c e Moduł kamery JPEG z komunikacją szeregową CJ0706A

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

Kod produktu: MP-BTM222-5V

Konfigurator Modbus. Instrukcja obsługi programu Konfigurator Modbus. wyprodukowano dla

POWER LINE MODEM PMM-1 VER. 2.2

1 Moduł Modbus ASCII/RTU

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Układ transmisji szeregowej AVR

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Technika Mikroprocesorowa

TECHNIKA MIKROPROCESOROWA

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

Aplikacja czujnika temperatury dla modułu uniwersalnego UNIV 1.0 i procesora UNIV 1.0 (CPU)

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

Sterownik procesorowy S-2 Komunikacja RS485 MODBUS

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

1 Moduł Modbus ASCII/RTU 3

Zastosowania mikrokontrolerów w przemyśle

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

16. Szeregowy interfejs SPI

Obsługa przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8

Instrukcja obsługi czytnika MM-R32

Rozproszony system zbierania danych.

Transkrypt:

Laboratorium Ćwiczenie 3 Magistrala I 2 C Program ćwiczenia: konfiguracja transmisji danych między mikrokontrolerem a cyfrowym czujnikiem przy użyciu magistrali I 2 C. Zagadnienia do przygotowania: podstawy programowania mikrokontrolerów w języku C, obsługa magistrali I 2 C (TWI) w mikrokontrolerach AVR, przerwania zewnętrzne w mikrokontrolerach AVR obsługa, Literatura: [1] Wykład [2] Dokumentacja mikrokontrolera ATmega8535, www.atmel.com. [3] Dokumentacja czujników HIH8120, www.honeywell.com/sensing. [4] Dokumentacja obsługa trybu Command Mode czujników Honeywell, www.honeywell.com/sensing. [5] Mikrokontrolery AVR ATmega w praktyce, R. Baranowski, BTC 2005. [6] AVR i ARM7. Programowanie mikrokontrolerów dla każdego, P. Borkowski, Helion 2010. [7] Mikrokontrolery AVR Język C. Podstawy programowania, M. Kardaś, Atnel 2011. Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski 2015

Zawartość instrukcji 1. Wstęp...1 2. Magistrala I 2 C...1 3. Czujnik wilgotności/temperatury HIH8120...4 4. Przykładowe zadania...6 UWAGA! Do poprawnej obsługi mikrokontrolera niezbędne jest korzystanie z jego dokumentacji. Instrukcja zawiera pewne uproszczenia w stosunku do rzeczywistych możliwości mikrokontrolera, magistrali I 2 C oraz języka C. 1. Wstęp W trakcie ćwiczenia należy nawiązać połączenie między mikrokontrolerem a cyfrowymi czujnikami wilgotności i temperatury (HIH8120 firmy Honeywell [2]). Komunikacja musi się odbywać z wykorzystaniem magistrali I 2 C, ponieważ tylko w taki sposób czujnik przesyła dane. Przystępując do ćwiczenia należy znać podstawy działania magistrali I 2 C, specyfikę tego interfejsu w mikrokontrolerach AVR oraz wymagania stosowanego czujnika co do ramki danych i sposobu przesyłu komend/wyników pomiarów. Zadania będą polegały na wysyłaniu żądania pomiaru do wybranego czujnika i na prezentacji otrzymanych odpowiedzi cyfrowych. 2. Magistrala I 2 C 2.1. Informacje podstawowe I 2 C (Inter-Integrated Circuit, oznaczana również I2C, IIC) to magistrala szeregowa. Firma Atmel wprowadziła swój własny, w pełni kompatybilny odpowiednik nazwany TWI (Two Wire Interface). Komunikacja odbywa się za pośrednictwem dwóch wyprowadzeń oraz. to linia dwukierunkowa służąca do przesyłania danych. Linią transmitowany jest sygnał zegarowy (generowany przez układ MASTER). W skład sieci może wchodzić wiele układów, jednak na raz komunikacja zachodzi między dwoma, oznaczanymi jako MASTER i SLAVE. Z punktu widzenia mikrokontrolerów AVR sterowanie transmisją wymaga: konfiguracji magistrali; nadania sygnału START; wyboru układu SLAVE; wystawienia danych do transmisji; nadania sygnału STOP. Całości dopełnia obserwacja i kasowanie flagi przerwania TWINT, odbierania bitów potwierdzenia (ACK, NACK) oraz ew. odczytywanie i weryfikacja kodów stanu transmisji. 1 dr inż. Piotr Markowski 2015

W mikrokontrolerze magistrala musi zostać wstępnie skonfigurowana (należy odpowiednio ustawić rejestry sterujące). Ich opis można znaleźć w dalszej części instrukcji. Konfiguracja czujników i innych układów cyfrowych wykorzystujących magistralę nie jest zazwyczaj konieczna magistrala jest fabrycznie ustawiona, należy odczytać z dokumentacji w jaki sposób z niej korzystać (informacje nt. czujników HIH8120 przedstawiono w dalszej części instrukcji). Transmisja przebiega zgodnie z przykładowym schematem przedstawionym na rys. 1. Rys. 1. Schemat transmisji wraz z opisem kolejnych czynności nadanie 1 bajtu danych. Komunikację rozpoczyna nadanie sygnału START (1) przez układ MASTER (najczęściej mikrokontroler). W tym celu należy ustawić odpowiedni bit (TWSTA) w rejestrze kontrolnym (zob. podrozdział 2.2): TWCR = (1<<TWINT) (1<<TWEN) (1<<TWSTA); Kiedy sygnał zostanie nadany mikrokontroler ustawi flagę TWINT w rejestrze kontrolnym (2). Obserwacja stanu tej flagi jest kwestią kluczową w trakcie całej transmisji, dlatego w kodzie programu wielokrotnie będzie pojawiała się pętla oczekiwania: while (!(TWCR & (1<<TWINT))); Kiedy zostanie wykryty stan wysoki na fladze, należy wykonać punkt (3). Po pierwsze, opcjonalnie, można sprawdzić kod stanu transmisji (rejestr TWSR). Znajdziemy tam informacje o bieżącym stadium komunikacji, kolejnych czynnościach oraz ewentualnych błędach. Po drugie, należy wpisać do rejestru danych, TWDR, adres układu SLAVE, z którym chcemy nawiązać połączenie oraz bit kierunku transmisji (0 nadawanie, 1 odbiór). Aby dane zostały wysłane należy wpisać wartość 1 na bit TWINT (wyzeruje to flagę): TWDR=0x5a; TWCR = (1<<TWINT) (1<<TWEN); Ponownie należy czekać na ustawienie flagi TWINT (4), co będzie oznaczało zakończenie wysyłania adresu i otrzymanie potwierdzenia (ACK lub NACK) od układu SLAVE. W tym miejscu 2 dr inż. Piotr Markowski 2015

można sprawdzić kod stanu transmisji lub od razu wpisać dane do rejestru TWDR (5). Po wpisaniu 1 na bit TWINT rozpocznie się przekaz. Kiedy SLAVE odbierze dane i nada ACK (lub NACK) flaga TWINT ponownie zostanie ustawiona, zatem ponownie stosujemy pętlę oczekującą while (6). Jeśli chcemy kontynuować transmisję (nadawać kolejne bajty danych do tego samego urządzenia) kroki (5) i (6) należy powtarzać. Jeżeli chcemy zakończyć komunikację należy nadać STOP (7). W tym celu ustawiamy bit TWSTO w rejestrze kontrolnym: TWCR = (1<<TWINT) (1<<TWEN) (1<<TWSTO); Rys. 1 oraz przedstawiony opis dotyczy sytuacji, gdy mikrokontroler nadaje dane do układu SLAVE. W przeciwnym wypadku (odbiór danych) należy zmodyfikować krok (5). Kiedy SLAVE rozpoznał swój adres i wysłał potwierdzenie (3) i (4) mikrokontroler powinien zacząć odbierać dane. Należy tu zaznaczyć, że SLAVE będzie nadawał w takt sygnału zegarowego generowanego przez układ MASTER. Zatem póki MASTER takiego sygnału nie wysyła, transmisja jest zapauzowana. Zostanie wznowiona dopiero, gdy wpiszemy 1 na flagę TWINT. Aby mikrokontroler wysłał po odbiorze sygnał ACK należy ustawić również bit TWEA. Podsumowując, punkt (5) będzie polegał jedynie na wpisaniu 1 na bity TWINT oraz TWEA. Można to zrealizować tak: TWCR = (1<<TWINT) (1<<TWEN) (1<<TWEA); Krok (6) pozostaje bez zmian. Należy oczekiwać na ustawienie flagi TWINT, co będzie oznaczało, ze MASTER odebrał dane. W kroku (7) należy odczytać przesłaną informację, np. do zmiennej odp: uint8_t odp = TWDR; Kroki (5) (7) powtarzamy tyle razy, ile bajtów danych chcemy odebrać (zatem musimy wiedzieć, ile bajtów SLAVE będzie nadawał; informacja o tym znajduje się, oczywiście, w jego dokumentacji). Jeśli chcemy zakończyć transmisję należy nadać sygnał STOP (8). 2.2. Rejestry magistrali Rejestr kontrolny TWCR: jest to główny rejestr konfiguracyjny magistrali. Tab. 1. Bity rejestru TWCR 7 6 5 4 3 2 1 0 nr bitu TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIE TWCR 0 0 0 0 0 0 0 0 stan pocz. TWINT flaga przerwania; bit krytycznie ważny podczas komunikacji; informuje o zakończeniu kolejnych etapów transmisji. TWEA aktywacja sygnału potwierdzenia (ACK); ustawienie pozwala mikrokontrolerowi potwierdzać odebranie bajtu danych. TWSTA ustawienie powoduje natychmiastowe nadanie sygnału START. TWSTO ustawienie powoduje natychmiastowe nadanie sygnału STOP. TWWC flaga informująca o błędzie kolizji zapisu; zbędna podczas laboratorium. TWEN aktywacja magistrali. TWIE aktywacja przerwania; niekonieczna podczas laboratorium. 3 dr inż. Piotr Markowski 2015

Rejestr stanu TWSR: zawiera kody stanu transmisji oraz bity preskalera. Tab. 2. Bity rejestru TWSR 7 6 5 4 3 2 1 0 nr bitu TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0 TWSR 1 1 1 1 1 0 0 0 stan pocz. TWSx zawierają kody stanu transmisji (zob. tab. 75 79 dokumentacji). TWPSx presckaler można ustawić na 1, 4, 16 lub 64, zgodnie z tab. 74 dokumentacji. Rejestr prędkości transmisji TWBR: wartość wpisana do tego rejestru ustala częstotliwość transmisji, zgodnie ze wzorem: gdzie: f = OSC, TWI TWPS 16 + 2 ( TWBR) 4 f osc = 1 MHz, TWBR wartość wpisana do rejestru TWBR (minimalnie 10), TWPS wybrany preskaler. f Rejestr danych TWDR: służy do wysyłania/odbioru danych. Rejestr adresu TWAR: zbędny podczas laboratorium. 3. Czujnik wilgotności/temperatury HIH8120 Czujnik HIH8120 (rys.2) mierzy wilgotność oraz temperaturę. Wyniki podaje w postaci dwóch 14- bitowych liczb w kodzie binarnym. Wykorzystuje protokół I 2 C. V CC GND adres modułu Rys. 2. Czujnik HIH8120 oraz moduł laboratoryjny z czujnikiem. Czujnik posiada 4 wyprowadzenia, które należy podłączyć do odpowiadających im nóżek mikrokontrolera: V CC zasilanie, 5 V (na module oznaczone kolorem zielonym!); GND uziemienie; linia zegarowa magistrali I 2 C; linia danych magistrali I 2 C. 4 dr inż. Piotr Markowski 2015

Komunikacja z czujnikiem jest dwuetapowa. Najpierw należy wysłać do rozkaz wykonania pomiaru, następnie odczytać wynik. Wykonuje się to przy użyciu dwóch ramek danych. Pierwszą przedstawiono na rys. 3. Rys. 3. Ramka rozkazu. Po sygnale START wysyłany jest jedynie bajt adresowy ramki I 2 C, zawierający adres czujnika, którego chcemy użyć. Bit kierunku transmisji zerujemy. Należy zaczekać na sygnał potwierdzenia od czujnika (ACK oznacza, że rozpoznał swój adres) i nadać sygnał STOP. Adres czujnika podany jest na każdym module laboratoryjnym (rys. 2). W tym momencie czujnik rozpocznie procedurę pomiaru wilgotności i temperatury. Zgodnie z dokumentacją [2] trwa ona 36,65 ms. Należy zatem odczekać co najmniej taki okres, a następnie wysłać drugą ramkę danych ramkę odczytu (rys. 4). Rys. 4. Ramka odczytu danych. Po nadaniu sygnału START, adresu wybranego czujnika oraz bitu kierunku (tym razem 1 odczyt) czujnik odpowie przy pomocy 4 bajtów danych. Pierwszy zawiera dwubitowy kod stanu (S1, S0) oraz najstarsze bity pomiaru wilgotności (B13..B8). Bity stanu informują o statusie uzyskanych danych. Jeśli wynoszą 00 możemy przystąpić do analizy wyników, jeśli 01 to czujnik nie zdążył wykonać pomiaru (prawdopodobnie nie odczekano wymaganych 36,65 ms. Bity B13..B0 to wynik pomiaru wilgotności. Bity T13..T0 to wynik pomiaru temperatury. Dwa najmłodsze bity ostatniego bajtu są nieistotne (na rys. 3 oznaczone jako X ). Aby poznać zmierzone wartości wilgotności i temperatury otrzymane wyniki należy jeszcze przeliczyć. Dokumentacja podaje odpowiednie wzory. I tak, wilgotność poznamy podstawiając: 14 _ bitowa _ odpowiedz WILGOTNOSC [% RH ] = 100%. 14 2 2 Dla odpowiedzi czujnika 0x0000 wilgotność wynosi 0%. Dla odpowiedzi maksymalnej (0x3fff) 100%. Zmierzoną temperaturę poznamy podstawiając: o 14 _ bitowa _ odpowiedz TEMPERATURA [ C] = 165 40. 14 2 2 Dla odpowiedzi czujnika 0x0000 wynosi ona -40 C, dla wartości maksymalnej (0x3fff) 125 C. Sterowanie komunikacją powinno się odbywać dokładnie tak, jak opisano w rozdziale 2.1 instrukcji. 5 dr inż. Piotr Markowski 2015

Należy pamiętać o podłączeniu linii i do napięcia zasilanie V CC poprzez rezystory (rys. 5) pull-up hardwarowy. Na makiecie laboratoryjnej rezystory pull-up znajdują się obok potencjometrów. MAKIETA AVR mikrokontroler Vcc MAKIETA AVR rezystory pull-up MODUL czujnika MODUL czujnika Rys. 5. Schemat połączenia elementów magistrali (w tym pull-up hardwarowy). 4. Przykładowe zadania a) Przekształć podane w instrukcji wzory tak, aby było możliwe obliczenie wilgotności/temperatury po odczytaniu jedynie 8 najstarszych bitów pomiarowych; b) odczytaj temperaturę zmierzoną przez czujnik; c) odczytaj wilgotność zmierzoną przez czujnik; d) pomiary z zadań (b) i (c) aktywuj przerwaniem zewnętrznym INT1. 6 dr inż. Piotr Markowski 2015