Instytut Teleinformatyki

Podobne dokumenty
Instytut Teleinformatyki

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

Instytut Teleinformatyki

Instytut Teleinformatyki

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

Komunikacja w mikrokontrolerach Laboratorium

Komunikacja w mikrokontrolerach Laboratorium

Instytut Teleinformatyki

Instytut Teleinformatyki

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

Mikroprocesory i Mikrosterowniki Laboratorium

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

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

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

Podstawy systemów mikroprocesorowych. Interfejs USART. Interfejsy szeregowe w mikrokontrolerach AVR

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

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

Programowanie mikrokontrolerów

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

TECHNIKA MIKROPROCESOROWA

Opis bezprzewodowego układu do pomiaru oporu elektrycznego skóry

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Mikrokontrolery AVR Wprowadzenie

ZL5PIC. Zestaw uruchomieniowy dla mikrokontrolerów PIC16F887

Instytut Teleinformatyki

Instytut Teleinformatyki

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

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Instytut Teleinformatyki

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

ZL3ST7. Zestaw uruchomieniowy dla mikrokontrolerów

Instytut Teleinformatyki

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Laboratorium mikroinformatyki. Szeregowe magistrale synchroniczne.

2. Architektura mikrokontrolerów PIC16F8x... 13

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Expandery wejść MCP23S17 oraz MCP23017

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

TECHNIKA MIKROPROCESOROWA

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

Instytut Teleinformatyki

Magistrala I 2 C. - mikrokontroler A (nadajnik-master) wysyła dane do mikrokontrolera B (odbiornik-slave)

Instytut Teleinformatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

Stereofoniczny moduł sonaru (((STEREO)))

Komunikacja w mikrokontrolerach Laboratorium

ISR(INT2_vect) { alarmactivated = 1; } void startblink() { //CTC, preskaler 1024 TCCR1B = _BV(CS12) _BV(CS10) _BV(WGM12); }

Współpraca procesora ColdFire z urządzeniami peryferyjnymi

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

16. Szeregowy interfejs SPI

Współpraca procesora z urządzeniami peryferyjnymi

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

Czujnik inercyjny LSM9DS0 oraz jego zastosowanie. praktyczne AVT 5491 PROJEKTY

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Inne układy peryferyjne AVR

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

Sprzężenie mikrokontrolera (nie tylko X51) ze światem zewnętrznym lokalne interfejsy szeregowe

High Speed USB 2.0 Development Board

dokument DOK wersja 1.0

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Programowanie Mikrokontrolerów

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

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

Modem Bluetooth MBL-232/UK

Programowanie mikrokontrolerów. 8 listopada 2007

WYKŁAD 5. Zestaw DSP60EX. Zestaw DSP60EX

Programowanie mikrokontrolerów. 15 stycznia 2008

Stanowisko laboratoryjne dla mikrokontrolera ATXmega32A4 firmy Atmel

Układ transmisji szeregowej AVR

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Instytut Teleinformatyki

Temat nr 5. System czasu rzeczywistego bazujący na stałopozycyjnym procesorze sygnałowym. LABORATORIUM Procesory i komputery przemysłowe

SML3 październik

Instytut Teleinformatyki

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Kod produktu: MP01105

Struktura QSM (Queued Serial Module)

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

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

MIKROKONTROLERY - MAGISTRALE SZEREGOWE

Współpraca procesora z urządzeniami peryferyjnymi

Komputerowe Sterowanie w Elektronice Przemysłowej

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

1.2. Architektura rdzenia ARM Cortex-M3...16

Instrukcja do ćwiczeń

Transkrypt:

Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Systemy Czasu Rzeczywistego Zastosowanie interfejsów SPI i I2C do komunikacji laboratorium: 02 autor: mgr inż. Paweł Pławiak Kraków, 2015

2 Spis treści Spis treści...2 1. Wiadomości wstępne...3 1.1. Moduł SPI...3 1.1.1. Przykładowy kod... 4 1.2. Termometr cyfrowy...5 1.2.1. Schemat podpięcia... 5 1.2.2. Pseudokod... 5 1.3. Magistrala I 2 C moduł TWI...6 1.3.1. Przykładowy kod... 7 1.4. Zegar czasu rzeczywistego...9 1.4.1. Schemat podpięcia... 9 1.4.2. Pseudokod... 9 1.5. Zagadnienia do przygotowania...10 2. Przebieg laboratorium...11 2.1. Zadanie 1. Na ocenę 3.0 (dst)...11 2.2. Zadanie 2. Na ocenę 4.0 (db)...11 2.3. Zadanie 3. Na ocenę 5.0 (bdb)...11

3 1. Wiadomości wstępne Pierwsza część niniejszej instrukcji zawiera podstawowe wiadomości teoretyczne dotyczące omawianego tematu. Poznanie tych wiadomości umożliwi prawidłowe zrealizowanie praktycznej części laboratorium. 1.1. Moduł SPI SPI jest szybkim, dupleksowym, synchronicznym interfejsem szeregowym. Pozwala on na łączenie jednego układu nadrzędnego z wieloma urządzeniami pobocznymi za pomocą czterech linii sygnałowych. W porównaniu z I 2 C, interfejs SPI jest szybszy i prostszy jednak wymaga większej liczby linii sygnałowych i krótszych połączeń. Bity konfiguracyjne rejestru SPCR: SPIE włączenie modułu przerwań dla modułu SPI SPE włączenie modułu SPI DORD bitowa kolejność transmisji MSTR wybór trybu pracy CPOL polaryzacja sygnału zegarowego CPHA faza sygnału zegarowego SPR 1 0 częstotliwość taktowania transmisji Bity konfiguracyjne rejestru SPSR: SPIF znacznik zakończenia transmisji lub utraty panowania nad magistralą WCOL kolizyjny zapis rejestru SPDR SPI2X podwojenie prędkości transmisji

4 Bity konfiguracyjne rejestru SPDR: SPDR - rejestr danych. Szczegółowe informacje na temat interfejsu SPI znajdują się w nocie katalogowej na stronie producenta - http://www.atmel.com/images/doc2503.pdf natomiast podstawowe informacje można znaleźć pod linkiem: http://pl.wikipedia.org/wiki/serial_peripheral_interface 1.1.1. Przykładowy kod Obsługa modułu SPI: #include <avr/io.h> void SPI_Init(void) DDRB = (1<<PB7) (1<<PB4); SPCR = (1<<SPE) (1<<MSTR) (1<<SPR0); char SPI_Transmit(char cdata) SPDR = cdata; while(!(spsr & (1<<SPIF))); return SPDR;

5 1.2. Termometr cyfrowy Zestaw wyposażono w cyfrowy termometr TC77 (Microchip) pracujący na magistrali SPI. Linie sterujące termometrem (SCK, SIO, CS) są dostępne na złączu Con19. Szczegółowe informacje na temat zasobów układu ewaluacyjnego znajdują się w dokumentacji ZL15AVR - http://dl.btc.pl/kamami_wa/zl15avr.pdf 1.2.1. Schemat podpięcia SIO (U7 TEM/con8) - PB6 (con16) CS (U7 TEM/con8) - PB4 (con16) SCK (U7 TEM/con8) - PB7 (con16) USART (RS232): RxD (con7) - PD0 (con18) TxD (con7) - PD1 (con18) 1.2.2. Pseudokod Obsługa termometru cyfrowego przykład komunikacji SPI, odczytywanie temperatury z sensora TC77 i transmitowanie jej wartości do PC za pomocą USART (port RS232). #ifndef F_CPU Zdefiniowanie częstotliwości CPU #endif #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include "USART.h" #include "SPI.h" int main(void) Zadeklarowanie zmiennych Inicjalizacja USART z odpowiednią częstotliwością Inicjalizacja SPI do Włączanie CS

6 Odczytywanie bajtów Wyłącz CS Przekonwertuj wartości do systemu HEX i wyślij do PC while(1); return 0; Proszę pamiętać o ustawieniu odpowiedniej częstotliwości w terminalu (parametr baud) lub w programie. 1.3. Magistrala I 2 C moduł TWI I 2 C jest jednym ze standardów w dziedzinie synchronicznych interfejsów szeregowych małego zasięgu. I 2 C służy do łączenia wielu nadajników-odbiorników do jednej, dwuprzewodowej magistrali szeregowej. Dołączone układy mogą pracować w trybie nadrzędnym lub podrzędnym. Mikrokontroler ATmega32 wyposażono w moduł TWI w celu ułatwienia obsługi I 2 C. Wspomniany moduł jest zgodny ze standardem I 2 C, umożliwia pracę z prędkością 400 kbps oraz umożliwia adresowanie do 128 różnych układów podłączonych do jednej magistrali. Bity konfiguracyjne rejestru TWBR (rejestr szybkości transmisji): Bity tego rejestru określają prędkość pracy modułu TWI w trybie nadrzędnym. Bity konfiguracyjne rejestru TWCR (rejestr sterujący): TWINT znacznik przerwania dla modułu TWI TWEA włączanie generacji potwierdzeń ACK TWSTA generacja sygnału START TWSTO generacja sygnału STOP TWWC znacznik zapisu kolizyjnego TWEN włączenie modułu TWI TWIE uaktywnienie przerwań dla modułu TWI Bity konfiguracyjne rejestru TWSR (rejestr stanu):

7 TWS7 3 kod aktualnego stanu modułu TWI TWPS1 0 ustawienie preskalera prędkości transmisji Bity konfiguracyjne rejestru TWDR (rejestr buforu danych): Rejestr używany jako dwukierunkowy bufor danych, jego zawartość zawsze stanowi ostatnie przesłane przez magistralę słowo. Szczegółowe informacje na temat magistrali I 2 C oraz modułu TWI znajdują się w nocie katalogowej na stronie producenta - http://www.atmel.com/images/doc2503.pdf natomiast podstawowe informacje można znaleźć pod linkiem: http://en.wikipedia.org/wiki/i%c2%b2c 1.3.1. Przykładowy kod Obsługa modułu TWI: #include "TWI.h" #define ADRW_ACK 18 #define DATA_ACK 28 // Generate START signal void TWI_Start(void) TWCR = (1<<TWINT) (1<<TWSTA) (1<<TWEN); while (!(TWCR & (1<<TWINT))); // Generate STOP signal void TWI_Stop(void) TWCR = (1<<TWINT) (1<<TWEN) (1<<TWSTO); while ((TWCR & (1<<TWSTO)));

8 // Write byte to slave char TWI_Write(char data) TWDR = data; TWCR = (1<<TWINT) (1<<TWEN); while (!(TWCR & (1<<TWINT))); if((twsr == ADRW_ACK) (TWSR == DATA_ACK)) return 0; else return 1; // Read byte from slave char TWI_Read(char ack) TWCR = ack? ((1 << TWINT) (1 << TWEN) (1 << TWEA)) : ((1 << TWINT) (1 << TWEN)) ; while (!(TWCR & (1<<TWINT))); return TWDR; // Initialize TWI void TWI_Init(void) TWBR = 100; // End of file

9 1.4. Zegar czasu rzeczywistego Zestaw ZL15AVR wyposażono w potencjometr P2, który może zostać wykorzystany do podawania napięcia z zakresu 0...5 V na wejścia przetwornika analogowo-cyfrowego mikrokontrolera AVR. Środkowe wyprowadzenie potencjometru dostępne jest na złączu Con7 (pin oznaczony P2). Szczegółowe informacje na temat potencjometru analogowego znajdują się w dokumentacji zestaw ewaluacyjny ZL15AVR - http://dl.btc.pl/kamami_wa/zl15avr.pdf 1.4.1. Schemat podpięcia Zegar czasu rzeczywistego: SCL (U6 RTC/con7) - PC0 (con17) SDA (U6 RTC/con7) - PC1 (con17) USART (RS232): RxD (con7) - PD0 (con18) TxD (con7) - PD1 (con18) 1.4.2. Pseudokod Obsługa zegara czasu rzeczywistego odczytywanie wszystkich rejestrów zegara czasu rzeczywistego (U6 - M41T00) za pomocą komunikacji I2C oraz transmitowanie ich do PC przez USART. #ifndef F_CPU Zdefiniowanie częstotliwości CPU #endif #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include "USART.h" #include "TWI.h" int main(void) Zadeklarowanie zmiennych Ustawienie wszystkich linii portu D jako wyjściowe Inicjalizacja USART z odpowiednią częstotliwością Inicjalizacja modułu TWI

02. Systemy Czasu Rzeczywistego Zastosowanie interfejsów SPI i I2C do komu- 10 nikacji do Rozpoczęcie transmisji Wpisanie adresu M41T00 Wskazanie pierwszego rejestru Powtórzenie startu transmisji Wpisanie adresu dla odczytywanych danych for() Czytanie danych Rozpoczęcie transmisji przez USART Konwertowanie danych do kodu ASCII Konwertowanie wartości do systemu HEX Zatrzymanie transmisji for() Opóźnienie 200 ms while(1); return 0; Proszę pamiętać o ustawieniu odpowiedniej częstotliwości w terminalu (parametr baud) lub w programie. 1.5. Zagadnienia do przygotowania Przed przystąpieniem do realizacji laboratorium należy zapoznać się z zagadnieniami dotyczącymi: o Magistrali SPI o Magistrali I 2 C i modułu TWI o Zegara czasu rzeczywistego o Termometru cyfrowego o USART Literatura: [1] Rafał Baranowski, Mikrokontrolery AVR ATmega w praktyce [2] Nota katalogowa mikrokontrolera na stronie producenta http://www.atmel.com/images/doc2503.pdf [3] Dokumentacja zestawu ewaluacyjnego ZL15AVR http://dl.btc.pl/kamami_wa/zl15avr.pdf [4] http://pl.wikipedia.org/wiki/serial_peripheral_interface [5] Instrukcje do poprzednich ćwiczeń laboratoryjnych

02. Systemy Czasu Rzeczywistego Zastosowanie interfejsów SPI i I2C do komu- 11 nikacji 2. Przebieg laboratorium Druga część instrukcji zawiera zadania do praktycznej realizacji, które demonstrują zastosowanie technik z omawianego zagadnienia. 2.1. Zadanie 1. Na ocenę 3.0 (dst) Proszę uruchomić program obsługi termometru, korzystając z przykładowych kodów na stronie Kamami (http://kamami.pl/zestawy-avr/46782-zl15avr.html). W sprawozdaniu należy zawrzeć opis znaczenia poszczególnych linii kodu. 2.2. Zadanie 2. Na ocenę 4.0 (db) Proszę uruchomić program wyświetlający wartości wszystkich rejestrów zegara czasu rzeczywistego (U6 - M41T00) w terminalu portu szeregowego na PC przez USART (port RS232) za pomocą komunikacji I2C. Proszę uruchomić program wyświetlający wartość odczytanego czasu z zegara czasu rzeczywistego (U6 - M41T00) w terminalu portu szeregowego na PC przez USART (port RS232) za pomocą komunikacji I2C (TWI pracuje w trybie nadrzędnym). W sprawozdaniu należy zawrzeć opis znaczenia poszczególnych linii kodu. Uwaga: należy usunąć z kodu linie oznaczone na czerwono #ifndef F_CPU #define F_CPU 1000000 // 1 MHz #endif 2.3. Zadanie 3. Na ocenę 5.0 (bdb) Napisać program prezentujący graficznie wyniki odczytu temperatury.