OBSŁUGA INTERFEJSU TWI (I 2 C) NA MIKROKONTROLERZE ATMEGA16



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

I. 1) NAZWA I ADRES: Narodowy Instytut Zdrowia Publicznego-Państwowy Zakład Higieny, ul.

SEKCJA I: ZAMAWIAJĄCY SEKCJA II: PRZEDMIOT ZAMÓWIENIA SEKCJA III: INFORMACJE O CHARAKTERZE PRAWNYM, EKONOMICZNYM, FINANSOWYM I TECHNICZNYM

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

Budowa systemów komputerowych

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Tablica budowy Plan BIOZ Tablica BIOZ Dziennik budowy

I. 1) NAZWA I ADRES: Województwo Łódzkie, al. Piłsudskiego 8, Łódź, woj. łódzkie, tel. 042

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

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

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

Wymagania edukacyjne z przedmiotu PRACOWNIA SSIECIOWYCH SYSTEMÓW OPERACYJNYCH klasa 2iA. zmodernizować serwer. zrekonfigurować serwer;

I. 1) NAZWA I ADRES: Zespół Wojewódzkich Przychodni Specjalistycznych, ul. Powstańców 31,

Bazy danych. Andrzej Łachwa, UJ, /15

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

Spis procedur i programów

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

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

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

I. 1) NAZWA I ADRES: Powiatowy Urząd Pracy w Pucku, ul. Wejherowska 43 A, Puck,

Systemy mikroprocesorowe - projekt

VinCent Office. Moduł Drukarki Fiskalnej

I. 1) NAZWA I ADRES: Ośrodek Rozwoju Polskiej Edukacji za Granicą, ul. Rolna 175,

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Programator pamięci EEPROM

I. 1) NAZWA I ADRES: Województwo Łódzkie, al. Piłsudskiego 8, Łódź, woj. łódzkie, tel.

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:bip.e-cea.pl/1618/

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

I. 1) NAZWA I ADRES: Generalna Dyrekcja Dróg Krajowych i Autostrad Oddział w Łodzi, ul. F.D.

Instrukcja obsługi. Sterownik ścienny KJR10B/DP

Sterownik nagrzewnicy elektrycznej HE

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

Type ETO2 Controller for ice and snow melting

OGŁOSZENIE. na: Odławianie bezdomnych psów z terenu gminy Chynów w 2013r.

KARTA ZGŁOSZENIA DZIECKA DO ODDZIAŁU PRZEDSZKOLNEGO PRZY SZKOLE PODSTAWOWEJ W KRZYSZKOWICACH

Opis ogólny AL154SAV5.HT

I. 1) NAZWA I ADRES: Sąd Rejonowy w Radomiu, ul. Struga 63, Radom, woj.

Gdynia: Zakup osprzętu elektrotechnicznego Numer ogłoszenia: ; data zamieszczenia: OGŁOSZENIE O ZAMÓWIENIU - dostawy

Instrukcja obsługi zamka. bibi-z50. (zamek autonomiczny z czytnikiem identyfikatora Mifare)

ZAPYTANIE OFERTOWE NA REALIZACJĘ ZAMÓWIENIA

Sieci komputerowe. Definicja. Elementy

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia: bip.mazowia.eu/zamowienia-publiczne/

Operacyjnego Województwa Łódzkiego na lata pn.:

Tester pilotów 315/433/868 MHz MHz

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

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

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

DYSTRYBUCJA : DJ-DISTRIBUTION NUMARK POLSKA

raceboard-s Szybki start

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

BADANIA OKRESOWE PO 12 MIESIĄCACH

CZYTNIK ZBLIŻENIOWY RFID-UR80D

2.PodstawowewskazСwkidot.bezpieczeЯ stwa. Czujnikruchudomonta u podtynkowego UWAGA. pr demlubpo aru. przez uprawnionego elektryka!

zamówienia jest wykonanie projektu budowlanego, uzyskanie wymaganych pozwoleń (w tym

Ogólna charakterystyka kontraktów terminowych

I. 1) NAZWA I ADRES: Ośrodek Rozwoju Polskiej Edukacji za Granicą, ul. Rolna 175,

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

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

SIMPLE.ERP 6.10 Metryka i wymagania

OGŁOSZENIE O ZAMÓWIENIU - roboty budowlane

OŚWIETLENIE PRZESZKLONEJ KLATKI SCHODOWEJ

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

INSTRUKCJA TERMOSTATU

I. 2) RODZAJ ZAMAWIAJĄCEGO:

Temat: Świętomarciński rogal rozwiązywanie zadań tekstowych.

I. 1) NAZWA I ADRES: Województwo Zachodniopomorskie - Zachodniopomorski Zarząd Dróg

PRZEMYSŁOWY ODTWARZACZ PLIKÓW MP3 i WAV

PoniŜej przedstawiono przykład komunikacji pomiędzy CPU224XP a CPU314C-2 DP. UŜyty sprzęt:

Instrukcja programu PControl Powiadowmienia.

Tester pilotów 315/433/868 MHz

Sterownik Silnika Krokowego GS 600

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

I. 1) NAZWA I ADRES: Krakowskie Centrum Rehabilitacji, Al. Modrzewiowa 22, Kraków,

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

I. 1) NAZWA I ADRES: Muzeum i Instytut Zoologii Polskiej Akademii Nauk, ul. Wilcza 64,

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

Wynagrodzenie za prace kosztorysowe

INFORMATOR TECHNICZNY GE FANUC. Rezerwacja w sterownikach programowalnych GE Fanuc. Standby Redundancy najprostszy system rezerwacji

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

Cyfrowy włącznik czasowy z lampką Nr produktu

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia: bip.pzh.gov.pl

Elementy cyfrowe i układy logiczne

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Wałbrzych: USŁUGA TŁUMACZENIA USTNEGO OGŁOSZENIE O ZAMÓWIENIU - usługi

I. Zakładanie nowego konta użytkownika.

PERSON Kraków

Kurs obsªugi interfejsu I2C.

Warszawa: Usługi poligraficzne Numer ogłoszenia: ; data zamieszczenia: OGŁOSZENIE O ZAMÓWIENIU - usługi

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

Instrukcja instalacji oraz wykorzystania podpisu cyfrowego

AKADEMIA GÓRNICZO-HUTNICZA W KRAKOWIE

Instrukcja użytkowania DRIVER. Programator z przewodem sterowniczym. DRIVER 610 lub lub 2 strefy DRIVER

Kancelaris - Zmiany w wersji 2.50

ANALOGOWE UKŁADY SCALONE

Transkrypt:

OBSŁUGA INTERFEJSU TWI (I 2 C) NA MIKROKONTROLERZE ATMEGA16 wydanie drugie Opracwanie zawiera treści różnych publikacji takich jak: książki, datasheety, strny internetwe Cezary Klimasz Kraków 2010 cezary.klimasz@gmail.cm 1

Spis treści 1. Przedstawienie standardu I 2 C... str. 3 2. Wykrzystanie TWI... str. 4 - pis rejestrów TWI... str. 10 - krzystanie z tw-wire serial interface... str. 14 3. Pamięć EEPROM 24C16... str. 27 4. Obsługa pamięci EEPROM w języku C... str. 30 - prgram pierwszy... str. 31 - prgram drugi... str. 34 5. Pdsumwanie... str. 40 6. Bibligrafia... str. 40 2

1. Przedstawienie standardu WPROWADZENIE I²C szeregwa, dwukierunkwa magistrala słuŝąca d przesyłania danych w urządzeniach elektrnicznych. Zstała pracwana przez firmę Philips na pczątku lat 80. Znana równieŝ pd akrnimem IIC, któreg angielskie rzwinięcie Inter-Intergrated Circuit znacza "pśredniczący pmiędzy układami scalnymi". Standard I²C kreśla dwie najniŝsze warstwy mdelu: warstwę fizyczną i warstwę łącza danych. Jak, Ŝe firma Philips jest właścicielem prawnym standardu I 2 C inne firmy uŝywają róŝnych nazw w dniesieniu d teg standardu. W wypadku mikrkntrlerów AVR, Atmel uŝywa nazwy TWI (tw-wire interface). OPIS STANDARDU Standard zstał pracwany na pczątku lat 80. (kreślany becnie jak tryb standardwy pracy) i cechwały g: prędkść transmisji 100 kbps, 7-bitwa przestrzeń adreswa. W klejnych latach standard ten rzszerzan pprzez zwiększanie mŝliwych prędkści transmisji, zmianę zakresu tlerancji napięcia (np. High Speed Mde 3,4Mbps, napięcie tlerancji w stanie wyskim: +2,3 +5,5 V). I²C d transmisji wykrzystuje dwie dwukierunkwe linie: SDA (Serial Data Line) i SCL (Serial Clck Line). Obydwie linie są na stałe pdciągnięte d źródła zasilania pprzez rezystry pdciągające 1. I²C uŝywa lgiki ddatniej. Wszystkie nadajniki są typu twarty klektr lub twarty dren, a więc na liniach występuje tzw. ilczyn na drucie ("1" jest recesywna, a "0" dminujące). Pzwala t na wykrywanie klizji. KaŜde urządzenie nadając "1" jedncześnie sprawdza, czy na magistrali rzeczywiście pjawił się stan wyski. JeŜeli tak nie jest, znacza t, iŝ inne urządzenie nadaje w tym samym czasie i urządzenie zaprzestaje nadawania. 1 tzw. rezystry pullup 3

Pdstawwa wersja I²C zakłada istnienie tylk jedneg urządzenia, które mŝe inicjwać transmisję (master), ale dzięki istnieniu mechanizmu detekcji klizji, mŝliwa jest praca w trybie multi-master. PniewaŜ dane nadawane są w klejnści d najstarszeg bitu d najmłdszeg, w przypadku jednczesneg nadawania, urządzenie nadające adres wyŝszym numerze wycfa się pierwsze, c wynika z binarneg spsbu zapisywania liczb. Występuje tu zatem arbitraŝ ze stałym przydziałem prirytetów, kreślnym przez adres urządzenia typu slave. Urządzenia niŝszych adresach mają wyŝszy prirytet d urządzeń adresach wyŝszych. Zmiana na linii danych pdczas transmisji mŝe następwać jedynie, gdy linia zegara znajduje się w stanie niskim. Nie dtyczy t specjalnych sytuacji: bitu startu i bitu stpu. Bit startu ma miejsce, gdy linia danych zmienia swój stan z "1" na "0", pdczas wyskieg stanu linii zegara, c ma miejsce w mmencie rzpczynania kaŝdej transmisji danych. P zakńczeniu transmisji generwany jest bit stpu, czyli przejście linii danych w stan wyski przy wyskim stanie linii zegara. Standard zakłada magistralwe płączenie urządzeń. Długść linii graniczna jest jedynie jej maksymalną pjemnścią, która wynsi 400 pf. 2. Wykrzystanie TWI Datasheet ATmega16 INTERFEJS TWI 2 Głównymi cechami interfejsu TWI w mikrkntrlerach AVR jest: prstta i elastycznść interfejsu kmunikacyjneg ptrzebne tylk dwie linie, mŝliwe peracje master/slave, dualnść układów (zarówn nadajnik jak i dbirnik), 7-bitwy system adreswania pzwalający na zapisanie 128 róŝnych adresów, wbudwany arbitraŝ, prędkść transmisji z częsttliwścią 400kHz, redukcja szumów. 2 Interfejs TWI jest dpwiednikiem interfejsu I 2 C (lub IIC). Odmienne nazwy wynikają z praw autrskich firmy Philips d nazwy I 2 C. Atmel uŝywa swjeg nazewnictwa Tw-wire serial interface (TWI). 4

DEFINICJA MAGISTRALI Tw-wire Serial Interface (TWI) jest idealnym spsbem transmisji pmiędzy typwymi aplikacjami mikrkntrlerwymi 3. Prtkół TWI pzwala na pdłączenie nawet 128 róŝnych układów, uŝywając d teg jedynie dwóch linii danych. Jednej dla sygnału zegarweg SCL, drugiej linii danych SDA. Jedyne wymagania ze strny sprzętwej t pdciągnięcie tych linii przez rezystry d zasilania. Wszystkie układy pdłączne d magistrali mają indywidualne adresy, mechanizm i system bsługi magistrali umieszczny jest w prtkle TWI. PniŜej przedstawin schemat lgiczny magistrali TWI. Rysunek. Płączenia pmiędzy urządzeniami w kmunikacji I 2 C TRANSMISJA DANYCH WYGLĄD RAMKI KaŜdy bit danych wysyłany na magistralę TWI jest zsynchrnizwany z impulsem na linii zegarwej. Pzim na linii danych musi być stabilny pdczas kiedy na linii danych jest stan wyski. Jedynym wyjątek stanwią warunki generwania startu raz zatrzymywania transmisji. PniŜej przedstawin rzwiązanie prawidłwe. Rysunek. Synchrnizacja linii SDA z linią zegarwą SCL. 3 kreślenie idealnym zstał zaczerpnięte z dkumentacji ATmela 5

WARUNKI STARU I STOPU TRANSMISJI Układ Master inicjalizuje i kńczy przesył danych. Transmisja jest inicjwana w mmencie kiedy Master wyda Ŝądanie startu. Transmisja jest kńczna jeśli Master wyśle dpwiedni rzkaz na magistralę. Pmiędzy Ŝądaniami startu i stpu, magistrala jest uwaŝana za zajętą i Ŝaden inny Master nie pwinien próbwać krzystać z magistrali. Specjalny przypadek występuje gdy pjawił się nwe Ŝądanie startu w trakcie trwania pprzednich Ŝądań. Taki przypadek kreślany jest jak pwtórzne Ŝądanie startu i jest uŝywane w sytuacji kiedy Master chciałby rzpcząć nwą transmisję nie czekając na zwlnienie magistrali. P pwtórznym starcie, magistrala uwaŝana jest za zajętą dpóki nie nastąpi stp. START i STOP są sygnalizwane przez zmianę pzimów na linii danych SDA kiedy linia SCL jest w stanie wyskim. PniŜszy diagram przedstawia mówine generwanie startu i stpu. Rysunek. Transmisja TWI Start, Stp, Repeated Start FORMAT ADRESU Wszystkie adresy przesyłane magistralą TWI są 9 bitwe. Zawierają 7 bitwy adres, następnie jeden kntrlny bit READ/WRITE i jeden bit ptwierdzający (tzw. acknwledge bit). Jeśli ustawiny jest bit READ/WRITE (RW=1) peracja dczytywania jest wyknywana, w przeciwnym przypadku (RW=0) peracja zapisywania pwinna być wyknana. Kiedy układ Slave rzpzna, Ŝe przesyłany adres jest jeg adresem, pwinien ptwierdzić dbiór pprzez ustawienie linii SDA w stan niski w dziewiątym cyklu zegara (ACK 4 ). Jeśli adres Slave a jest zajęty lub z jakiś pwdów nie mŝe dpwiedzieć na wezwanie Mastera, linia SDA pwinna być pzstawina w stanie wyskim w cyklu zegara ACK. Master mŝe wtedy wysłać Ŝądanie STOP transmisji, lub pwtórzyć START, aby 4 ang. ACKnwledge bit 6

rzpcząć nwą transmisję. Adres Slave a raz bit READ/WRITE są nazywane SLA+R lub SLA+W w dpwiednich przypadkach (w zaleŝnści czy zapis, czy dczyt). Najstarszy bit (MSB) adresu jest wysyłany jak pierwszy. Adres Slave a mŝe zstać dwlnie wybrany, ale trzeba pamiętać, Ŝe adres 0000 000 jest zarezerwwany dla wywłania gólneg. Kiedy wygenerwane jest wywłanie gólne, wszystkie układy Slave pwinny dpwiedzieć pprzez ustawienie linii SDA w stan niski w cyklu ACK. Wywłanie gólne jest uŝywane wtedy gdy Master chce wysłać tą samą wiadmść d wszystkich układów na magistrali. Rysunek. Adreswanie układu na magistrali TWI FORMAT DANYCH Wszystkie przesyłane dane przez magistralę są dziewięcibitwe. Zawierają bajty danych i bit ptwierdzenia. Pdczas transmisji danych układ Master generuje sygnał zegarwy raz Ŝądania START i STOP, pdczas kiedy dbirnik jest dpwiedzialny za ptwierdzanie dbiru. Ptwierdzenie (ACK) jest sygnalizwane przez dbirnik pprzez ustawianie linii danych SDA d pzimu niskieg, pdczas dziewiąteg cyklu zegarweg. Jeśli dbirnik zstawi SDA w stanie wyskim, generwane jest NACK. Kiedy dbirnik trzyma statni bajt lub z jakiegś pwdu nie mŝe debrać więcej bajtów, pwinien pinfrmwać tym wysyłając NACK p statnim trzymanym bajcie. Rysunek. Transmisja danych z nadajnika d dbirnika 7

WYSYŁANIE ADRESU I DANYCH Dane transmitwane pwinny zawierać: sekwencję START, SLA+R/W, jedną lub więcej paczek danych raz Ŝądanie STOP. Niedzwlne jest przesyłanie pustych wiadmści, zawierających START i STOP. PniŜej przedstawin typwą transmisję. Rysunek. Typwa transmisja danych na magistrali MAGISTRALA MULTI-MASTER Prtkół TWI zakłada mŝliwść pdłączenia kilku układów Master d jednej magistrali. Specjalne algrytmy zstały zaimplementwane celem stwrzenia arbitraŝu kmunikacji. Szerszy pis znajduje się w Datasheecie ATmega16. BIT RATE GENERATOR UNIT Mduł ten kntrluje kres trwania sygnału SCL kiedy bsługiwany jest tryb Master. Okres trwania SCL jest kntrlwany przez rejestr TWI Bit Rate Register (TWBR) raz przez preskaler ustawiny w rejestrze TWI Status Register (TWSR). Obsługa Slave nie jest zaleŝna d generatra raz d preskalera, ale częsttliwść taktwania prcesra slave a (CPU clck) musi być c najmniej 16 razy wyŝsza niŝ częsttliwść niŝ częsttliwść zegarwa SCL. Częsttliwść SCL blicza się ze wzru: TWBR jest wartścią TWI Bit Rate Register TWPS t wartść bitów preskalera w rejestrze TWI Status Register 8

BUS INTERFACE UNIT Jednstka ta zawiera dane raz adres Shift Register (TWDR), kntrle START/STOP raz wspmaganie sprzętwe arbitraŝu. Rejestr TWDR zawiera adres i dane d transmisji lub adres i dane debrane. TWDR mŝe psiadać mŝe równieŝ bit N(ACK) d wysłania lub debrania. Bit N(ACK) nie jest bezpśredni dstępny z pzimu prgramwania. Jednak, kiedy dane są dbierane, mŝe być ustawiny lub wyczyszczny przez manipulwanie rejestrem TWI Cntrl Register (TWCR). Kiedy ustawiny jest tryb nadawania, wartść N(ACK) mŝe być reprezentwana przez wartść w rejestrze TWSR. Kntrlka START/STOP jest dpwiedzialna za generwanie i wykrywanie dpwiednich akcji: START, REPRATED START i STOP. ADDRESS MATCH UNIT Jednstka ta sprawdza, czy długść trzymaneg adresu w rejestrze TWI Address Register jest 7-bitwa. CONTROL UNIT Jednstka mnitruje magistralę TWI raz generuje dpwiedzi zgdne z ustawieniami w rejestrze TWI Cntrl Register (TWCR). Kiedy jakieś wydarzenie wymaga uwagi ze strny zdarzeń na magistrali TWI, flaga TWI Interrupt Flag (TWINT) jest ustawina. W następnym cyklu zegarwym rejestr TWI Status Register (TWSR) jest uaktualniany przez kd statusu identyfikujący dpwiednie zdarzenie. Rejestr TWSR zawiera tylk isttne wiadmści statusie. Tak dług jak flaga TWINT jest ustawina, linia SCL jest ustawiana na pzim niski. Pzwala t prgramwaniu aplikacji na zakńczenie zadań wyknywanych przez wystąpieniem przerwania TWI. Flaga TWINT jest ustawina w następujących sytuacjach: p wysłaniu przez TWI Ŝądań: START/REPEATED START, p wysłaniu bitów SLA+R/W, p wysłaniu danych adreswych, p tym jak TWI straci arbitraŝ, 9

jeśli TWI wykryje: adreswanie d układu lub wywłanie gólne, p tym jak TWI dbierze bajty z danymi, p debraniu STOP lub REPEATED START, w wypadku niedzwlnych akcji START lub STOP. OPIS REJESTRÓW TWI TWI Bit Rate Register TWBR Bity 7..0 TWI Bit Rate Register Rejestr dpwiedzialny za wybór współczynnika pdziału dla generatra. Generatr ten dpwiada za częsttliwść która jest dzielna przez sygnał zegarwy SCL w trybie pracy Master. TWI Cntrl Register TWCR Rejestr ten jest uŝywany d kntrlwania peracji związanych z interfejsem. Ustawienia bitów teg rejestru dpwiadają za: inicjację TWI, inicjację dstępu układu Master d magistrali przez zastswanie akcji START, d generwania ptwierdzeń dbirnika, d generwania akcji STOP raz d kntrli zatrzymania magistrali w chwili kiedy dane są wysyłane na magistralę. Wskazują takŝe klizję zapisu jeśli dane zapisywane d rejestru TWDR nie mgą zstać zapisane gdyŝ rejestr w tym mmencie jest niedstępny. 10

Bit 7 TWINT: TWI Interrupt Flag Bit ten jest ustawiany przez hardware w chwili, gdy TWI zakńczy aktualną pracę i będzie czekiwać d aplikacji dpwiedzi. Jeśli pierwszy bit z rejestru SREG raz bit TWIE z rejestru TWCR są ustawine, wtedy mikrkntrler skacze d wywłania TWI Interrupt Vectr. W chwili gdy flaga TWINT jest ustawina, krótkie kresy zegarwe SCL są rzciągane. Flaga ta musi być wyczyszczna przez prgramwanie pprzez zapisanie lgicznej jedynki d niej. Flaga jest autmatycznie czyszczna sprzętw kiedy zstanie wywłane przerwanie. RównieŜ mŝe być wyczyszczna w mmencie startu bsługi TWI, dlateg wszystkie dstępne rejestry: TWI Address Register (TWAR), TWI Status Register (TWSR) raz TWI Data Register (TWDR) muszą być zdefiniwane przez wyczyszczeniem flagi. Bit 6 TWEA: TWI Enable Acknwledge Bit Bit ten kntrluje generwanie impulsu ptwierdzenia. Jeśli bit ten zapisany jest jak jeden, wtedy ACK generwane jest przez TWI w następujących sytuacjach: Slave dbiera z magistrali swój własny adres, debranie wywłania gólneg, bit TWGCE w rejestrze TWAR musi być ustawiny, dane zstały debrane w trybie Master lub Slave. Zapisanie teg bitu jak zer pwduje, Ŝe urządzenie zstaje wirtualnie i tymczasw dłączne d magistrali TWI. Rzpznanie adreswe urządzenie mŝe być wznwine pprzez pnwne zapisanie bitu TWEA jak jeden. Bit 5 TWSTA: TWI START Cnditin Bit Aplikacja zapisuje ten bit jak jeden kiedy chce stać się układem Master. Sprzętwe TWI sprawdza, czy jeśli magistrala jest dstępna raz generuje akcje START, jeśli magistrala jest wlna. Z klei jeśli magistrala nie jest wlna, TWI czeka dpóki nie wykryje Ŝądania STOP i wtedy generuje Ŝądanie START, dmagając się statusu Master. TWSTA musi być wyczyszczne przez prgramwanie kiedy zstanie wysłana akcja START na magistralę. Bit 4 TWSTO: TWI STOP Cnditin Bit Jeśli w trybie Master nada się TWSTO jedynkę lgiczną, wtedy generwane jest Ŝądanie STOP. Kiedy akcja ta jest wyknywana na magistrali, bit ten jest autmatycznie czyszczny. 11

Bit 3 TWWC: TWI Write Cllin Flag Bit ten jest ustawiany w mmencie próby zapisu d rejestru TWI Data Register TWDR, kiedy TWINT ustawiny jest na zer. Flaga jest czyszczna pprzez zapis d TWDR ( bit TWINT jest w stanie wyskim). Bit 2 TWEN: TWI Enable Bit Bit ten uaktywnia bsługę TWI raz aktywuje interfejs TWI. Kiedy bit TWEN jest równy jeden, wtedy TWI przejmuje kntrlę pinów I/O, dkładniej SCL i SDA, włączając przy tym granicznik SR raz filtr impulsów. Jeśli zapisany jak zer, TWI jest wyłączne, wszystkie transmisje są przerywane bez względu na trwające peracje. Bit 1 Res: Reserved Bit Ustawiny zawsze na zer bit zastrzeŝny. Bit 0 TWIE: TWI Interrupt Enable Odpwiada za dblkwanie przerwań TWI. Bit pwiązany z flagą TWINT. TWI Status Register TWSR Bity 7..3 TWS: TWI Status Te pięć bitów dzwierciedla status lgiki TWI raz magistrali TWI. Bit 2 Res: Reserved Bit Bity 1..0 TWPS: TWI Prescaler Bits Ustawienia tych bitów definiują preskaler. PniŜej znajduje się tabela z dstępnymi wartściami: 12

Rysunek. Ustawienie preskalera za pmcą bitów TWPS1 i TWPS0 TWI Data Register TWDR W trybie nadajnika, TWDR zawiera następny bajt przeznaczny d transmisji. W trybie dbirnika, TWDR zawiera statni debrany bajt. MŜliwy jest zapis d rejestru jeśli TWI nie jest w trakcie przenszenia bajtu. Bity 7..0 TWD: TWI Data Register Bity te zawierają następny bajt danych przeznaczny d wysłania, lub statni debrany z magistrali bajt. TWI (Slave) Address Register TWAR Rejestr TWAR pwinien być uzupełniny siedmibitwym adresem slave a. W systemie multi-master, TWAR musi być ustawine równieŝ w wypadku układów Master. Najmłdszy bit teg rejestru jest uŝywany d aktywacji rzpznawania adresu wywłania gólneg (0x00). Bity 7..1 TWA: TWI (Slave) Address Register Bity te stanwią adres układu Slave. 13

Bit 0 TWGCE: TWI General Call Recgnitin Enable Bit Jeśli ustawiny wtedy aktywne jest rzpznawanie wywłania gólneg. KORZYSTANIE Z TWO-WIRE SERIAL INTERFACE PniŜej przedstawiny prsty przykład pisujący transmisję przez magistralę TWI. W tym przykładzie Master chce przesłać pjedynczy bit danych d układu Slave. Rysunek. Typwa bsługa urządzenia pprzez interfejs TWI 1. Pierwszym krkiem nawiązania transmisji jest wysłanie Ŝądania START. Realizwane jest t pprzez zapis dpwiednieg bitu w rejestrze TWCR. 2. Kiedy Ŝądanie START zstał przesłane, flaga TWINT w rejestrze TWCR jest ustawiana i rejestr TWSR jest uaktualniany z kdem statusu wskazującym na pmyślnść akcji START. 3. Aplikacja pwinna sprawdzić wartść TWSR aby upewnić się czy Ŝądanie zstał pmyślnie wysłane. Jeśli TWSR zawiera inną wartść niŝ czekiwana przez aplikacje, mŝna pdjąć specjalne akcje, np. wygenerwanie błędu. Zakładając, Ŝe kd statusu jest pprawny, aplikacja musi załadwać bit SLA+W d rejestru TWDR. Trzeba pamiętać, Ŝe rejestr TWDR jest uŝywany zarówn dla adresu jak i dla danych. P załadwaniu rejestru TWDR przez SLA+W, kreślna wartść musi być zapisana d rejestru TWCR zgdnie z ustawieniami sprzętwymi TWI d transmisji SLA+W kreślneg w rejestrze TWDR. TWI nie rzpcznie Ŝadneg działania tak długi jak bit TWINT w rejestrze TWCR będzie ustawiny. 14

Natychmiast p tym jak aplikacja wyczyści bit TWINT, TWI zainicjalizuje transmisję z danymi adreswymi 4. Kiedy dane z adresem zstaną dstarczne, flaga TWINT w rejestrze TWCR zstanie ustawina raz rejestr TWSR zstanie zaktualizwany zgdnie z kdem statusu przypisaneg d pprawnści transmisji. 5. Oprgramwanie pwinn zbadać wartść rejestru TWSR, aby upewnić się, Ŝe paczka z adresem zstała pmyślnie przesłana, i Ŝe wartść bitu ACK jest zgdna z czekiwaną. Jeśli zaś rejestr TWSR zawiera inne dane d czekiwanych, prgramwanie pwinn pdjąć dpwiednią akcję. Jeśli stwierdzn pprawnść wartści TWSR, aplikacja musi załadwać trzymane dane adreswe d rejestru TWDR. 6. Kiedy pakiet danych zstanie przesłany flaga TWINT w rejestrze TWCR zstanie ustawina, a rejestr TWSR zstanie zaktualizwany. 7. Aplikacja pwinna sprawdzić pprawnść rejestru TWSR raz wartść bitu ACK. 8. Transmisja zstaje zakńczna Ŝądaniem STOP. PniŜej przedstawin zasięgniętą z dkumentacji ATmega16 tabelę z pszczególnymi peracjami w języku C wraz z tłumaczeniem. Lp. Kd w języku C Objaśnienia 1 Wysłanie Ŝądania START. 2 3 4 5 Oczekiwanie na ustawienie flagi TWINT. Sygnalizuje t, Ŝe przesłanie START zstał przesłane. Sprawdzenie wartści statusu w rejestrze TWI Status Register Załadwanie wartści SLA+W d rejestru TWDR. Wyczyszczenie bitu TWINT w rejestrze TWCR, aby mŝliwe był wysłanie adresu. Oczekiwanie na ustawienie flagi TWINT. Sygnalizuje t, Ŝe bit SLA+W zstał wysłany, zaś bit ACK/NACK zstał debrany. 15

6 Sprawdzenie wartści w statusu w TWSR. 7 Załadwanie danych d rejestru TWDR. Wyczyszczenie bitu TWINT, aby mŝliwa była transmisja danych. 8 Oczekiwanie na ustawienie flagi TWINT. Sygnalizuje d wysłanie danych i trzymanie bitu ACK/NACK. 9 Sprawdzenie wartści TWSR. 10 Wysłanie Ŝądania STOP. OPCJE TRANSMISJI Interfejs TWI bsługuje jeden z czterech trybów. Nazwy tych trybów t: Master Transmitter (MT), Master Receiver (MR), Slave Transmitter (ST) raz Slave Receiver (SR). Kilka z nich mŝe być uŝytych w tej samej aplikacji. Za przykład niech psłuŝy zapisywanie danych d układu EEPROM w trybie MT, dczytywanie z klei dbywa się w trybie MR. PniŜej przedstawin pisany przykład. Rysunek. Przykład dczytu danych z pamięci EEPROM TRYB MASTER TRANSMITTER (MT) W tym trybie pracy, kreślna ilść bajtów danych jest wysyłana d dbirnika Slave. Wysłanie Ŝądania START jest rzkazem wejścia w ten tryb pracy. Frmat wysyłaneg adresu 16

zaleŝy d trybu pracy. Bit SLA+W jest przesyłany w trybie MT, zaś bit SLA+R w trybie MR. śądanie START zstaje wywłane następującymi zapisami w rejestrze TWCR. Bit TWEN musi być ustawiny aby aktywny był interfejs TWI. Bit TWSTA musi być ustawiny aby wysłać Ŝądanie START, zaś bit TWINT p t aby wyczyścić flagę TWINT. TWI sprawdzi magistralę i wygeneruje Ŝądanie START tak szybk jak magistrala będzie wlna. Następnie flaga TWINT zstanie sprzętw ustawina zaś status TWSR przyjmie wartść 0x08. W tym trybie musi zstać przesłany bit SLA+W. Jest t czynine pprzez zapis SLA+W w rejestrze TWDR. Od teg czasu bit TWINT pwinien być czysty aby kntynuwać wysyłanie danych. Jest t realizwane za pmcą zapisania następujących wartści w rejestrze TWCR. Schemat działania pwtarza się dpóki statni bajt danych nie zstanie przesłany. Transmisja jest kńczna w mmencie wygenerwania Ŝądania STOP lub pwtórneg startu. śądanie STOP generwane jest przez ustawienie dpwiednich wartści w rejestrze TWCR. Ilustruje t diagram pniŝej Z klei Ŝądanie REPEATED START generwane jest zapisanie następujących wartści d rejestru TWCR: P wywłaniu pwtórneg startu (stan 0x10) interfejs TWI mŝe płączyć się z tym samym układem Slave, lub z nwym z pminięciem transmisji Ŝądania STOP. REPEATED START 17

umŝliwia przełączanie pmiędzy układami pdrzędnymi, trybami Master Transmitter, Master Receiver bez tracenia kntrli magistrali. Rysunek. Tabela statusów dla trybu Master Transmitter 18

Rysunek. Ilustracja zasady działania trybu Master Transmitter TRYB MASTER RECEIVER W tym trybie kreślna ilść bajtów danych jest dbierana przez układ Master. Dane te są nadawana przez Slave Transmitter. Aby wejść w ten tryb naleŝy wysłać Ŝądanie START. śądanie START jest generwane przez ustawienie następujących kmbinacji bitów w rejestrze TWCR: Bit TWEN musi być ustawiny aby aktywny był interfejs TWI. Bit TWSTA dpwiedzialny jest za wysłanie Ŝądania START. Bit TWINT musi być ustawiny, aby wyczyszczna była flaga TWINT. TWI testuje magistralę i jeŝeli ta jest wlna wysyła Ŝądanie START. P wysłaniu 19

Ŝądania flaga TWINT jest sprzętw ustawiana i kd w rejestrze TWSR pwinien wynsić 0x08. Bit SLA+R w trybie MR musi być przesłany. Jest t wyknywane przez zapisanie bitu SLA+R w rejestrze TWDR. P tym bit TWINT pwinien być wyczyszczny aby kntynuwać transmisję. Jest t siągane za pmcą zapisania następujących bitów w rejestrze TWCR: Kiedy wysłany zstanie SLA+R raz bit ptwierdzenia zstanie debrany ustawiana jest flaga TWINT raz wystawiana dpwiednia wartść w rejestrze TWSR. MŜliwe kdy statusów t: 0x38, 0x40, 0x48. Odebrane dane mgą być dczytane z rejestru TWDR kiedy flaga TWINT ustawina jest sprzętw na pzim wyski. Taki schemat działania pwtarza się dpóki statni bajt danych nie zstanie debrany. P statnim bajcie MR pwinien pinfrmwać ST przez wysłanie NACK p statnim debrany bajcie danych. Transfer danych jest kńczny przez wygenerwanie Ŝądania STOP lub pwtórzneg START. STOP generwane jest przez następujące ustawienie rejestru TWCR: Z klei REPEATED START jest generwane przez pniŝsze ustawienia w rejestrze TWCR: P wystąpieniu pwtórneg startu (0x10) interfejs TWI mŝe płączyć się z tym samym układem pdrzędnym, lub z nwym, z pminięciem transmisji Ŝądania STOP. UmŜliwia t przełączanie Mastera pmiędzy: układami pdrzędnymi, MT, MR bez tracenia kntrli nad magistralą. 20

Rysunek. Tabela statusów dla trybu Master Receiver Rysunek. Ilustracja zasady działania trybu Master Receiver 21

TRYB SLAVE RECEIVER W trybie tym kreślna ilść danych jest dstarczana z układu Master Transmitter (MT). Aby zainicjwać tryb SR, naleŝy zadeklarwać dpwiednie ustawienia w rejestrach TWAR i TWCR. Siedem najstarszych bitów dpwiada za adres, na który będzie reagwać układ Slave. Jeśli ustawiny jest najmłdszy bit TWGCE wtedy TWI będzie dpwiadać na wywłanie gólne (0x00), w innym przypadku będzie ignrwać adres wywłania gólneg. Bit TWEN musi być ustawiny aby aktywny był interfejs TWI. Bit TWEA musi być ustawiny aby aktywwać ptwierdzanie adresu Slave lub adresu wywłania gólneg. TWSTA i TWSTO muszą być ustawine na zer. Kiedy rejestry TWAR i TWCR zstaną ustawine, TWI czeka dpóki nie zstanie zaadreswane adresem Slave (lub adresem wywłania gólneg). P trzymaniu dpwiednieg adresu Slave i zapisaniu bitu debraneg, flaga TWINT ustawiana jest, generwany jest kd statusu dstępneg w rejestrze TWSR. Jeśli bit TWEA zstanie wyczyszczny pdczas transmisji, TWI zwróci nie ptwierdzenie p statnim debranym bajcie danych. MŜe być t uŝywane t zasygnalizwania, Ŝe Slave nie jest w stanie przyjąć większej ilści danych. Kiedy TWEA ustawine na zer, TWI nie będzie ptwierdzać trzymania własneg adresu. JednakŜe TWI będzie ciągle kntrlwana, dlateg rzpznawanie adresu mŝna przywrócić przez pnwne ustawienie bitu TWEA. 22

Rysunek. Tabela statusów dla trybu Slave Receiver 23

Ilustracja zasady działania trybu Slave Receiver Rysunek. Ilustracja zasady działania trybu Slave Receiver TRYB SLAVE TRANSMITTER W tym trybie kreślna ilść bajtów danych jest wysyłana d Master Receiver (MR). Aby zainicjwać transmisję naleŝy ustawić dpwiednie bity w rejestrach TWAR i TWCR. Siedem najstarszych bitów kreśla adres, na który TWI będzie dpwiadać. Najmłdszy bit TWGCE ustawiny na jeden pwduje iŝ TWI dpwiada na wywłania gólne, w przeciwnym przypadku ignruje adres wywłania gólneg (0x00). 24

Bit TWEN musi być ustawiny aby aktywny był interfejs TWI. Bit TWEA musi być ustawiny aby aktywwać ptwierdzanie przez układ pdrzędny trzymania własneg adresu lub adresu wywłania gólneg. TWSTA, TWSTO pwinny być ustawine na zer. Kiedy zstaną zainicjwane rejestry TWAR i TWCR, TWI czeka dpóki nie zstanie zaadreswane własnym adresem Slave a (lub wywłaniem gólnym) pdąŝającym za bitem kierunku danych. Jeśli bit ten wynsi jeden (dczyt) wtedy TWI bsługuje tryb ST, w przeciwnym przypadku bsługuje SR. P trzymaniu własneg adresu, ustawiana jest flaga TWINT raz wystawiany dpwiedni kd statusu w rejestrze TWSR. Jeśli bit TWEA ustawiny jest na zer pdczas transmisji, TWI wysyła statni bajt z nadajnika. Stan 0xC0 lub 0xC8 wystąpi w zaleŝnści d teg czy Master Receiver wyśle NACK lub ACK p statnim bajcie. W czasie kiedy TWEA jest równe zer, TWI nie dpwiada na swój adres. Jednak, magistrala TWI jest ciągle kntrlwana i rzpznawanie adresu mŝe zstać wznwine w dwlnym czasie przez ustawienie bitu TWEA. Taki zabieg pzwala na chwilwe dizlwanie TWI d magistrali. Rysunek. Tabela statusów dla trybu Slave Transmitter 25

Rysunek. Ilustracja zasady działania trybu Slave Transmitter RÓśNE STANY Występują dwa kdy statusów, które nie zstały wcześniej zdefiniwane. PniŜej znajduje się tabela uzupełniająca dkumentację te kdy. Rysunek. Tabela specjalnych stanów rejestru statusu WYBRANE PARAMETRY TWI Rysunek. Tabela wybranych infrmacji TWI Więcej infrmacji znajduje się w datasheet ATmega16 w rzdziale Tw-Wire Serial Interface. 26

3. PAMIĘĆ EEPROM 24C16 Przy prezentwaniu mŝliwści interfejsu TWI raz magistrali TWI (I 2 C) załŝn prezentację implementacji bsługi pamięci EEPROM. Zanim jednak d implementacji djdzie naleŝy zapznać się z ntą katalgwą układu 24C16. Oczywiście wiele prducentów wytwarza takie układy. Część z nich uŝywa nazwy I 2 C lub IIC przy pisie rdzaju transmisji, Atmel uŝywa nazwy Tw-wire interface (TWI). My skrzystam z kilku nt katalgwych aby gólnie mówić rzwiązania wykrzystywane przy krzystania z tych pamięci. 24C16 Układ ten jest pamięcią typu EEPROM pjemnści 16kb (kilbitów). Zazwyczaj rganizacja danych w układzie wygląda następując: 8 x 2048 bitów (8 x 256B). Interfejs kmunikacyjny 2-wire serial (kmpatybilny z I 2 C). Układ mŝe psiadać zabezpieczenie sprzętwe przed zapisem. Napięcia zasilające: nawet d +1,8V d +5,5V. Milin cyklów zapisu d standard, trwałść 100 lat. PniŜej znajduje się wygląd wyprwadzeń układu w budwie DIP8. Rysunek. Wyprwadzenia pamięci 24C16 i ich przeznaczenie Niektórzy prducenci wyeliminwali nóŝki adreswe A0, A1, A2 (NC). NóŜka WP chrni przed zapisem. SCL, SDA t linie magistrali I 2 C. PniŜej znajduje się typwa ramka adresu Slave układu 24C16. Ramka ta nsi nazwę Device Address i w bsłudze wysyłania i dbierania infrmacji jest niedzwna. 27

Rysunek. Wygląd ramki adreswej 24C16 Wart ddać, Ŝe sprzętw mŝna ustawić dpwiedni bity A2, A1 i A0. Z klei najmłdszy bit R/W równy jedynce lgicznej dpwiada za dczyt w przeciwnym wypadku za zapis. Zazwyczaj w rzwiązaniach sptyka się pdłączaniem wyprwadzeń A2, A1, A0 d masy wtedy pierwszy adres zapisu wynsi w systemie decymalnym 160 5, zaś dczytu 161. Trzeba nadmienić, Ŝe układ 24C16 psiada 8 adresów zapisu i tyle sam dczytu. Przykładwe adresy dla zapisu: 160, 162, 164, 166, 168, 170, 172, 174. TRYB ZAPISU Algrytm zapisu pjedynczeg bajtu przedstawin pniŝej. wysłanie sekwencji START, wysłanie bajtu adresu na magistralę z bitem R/W w stanie niskim (zapis), wysłanie bajtu adresu kmórki pamięci w uprzedni zaadreswanym układzie pamięci, wysłanie bajtu danych przeznaczneg d zapisu, wysłanie sekwencji STOP. PniŜszy rysunek ilustruje działanie algrytmu. Rysunek. Zapis bajtu d pamięci 24C16 5 160 (10)=1010 0000 (2) (zapis) 161 (10)=1010 0001 (2) (dczyt) 28

Pamięć ptwierdza debranie kaŝdeg bajtu pprzez ustawieniu na magistralę bitu ACK (stan niski SDA). PniŜej przedstawin ramkę zapisu strnicweg danych. Rysunek. Zapis strnicwy d pamięci 24C16 TRYB ODCZYTU Algrytm dczytu pjedynczeg bajtu przedstawin pniŝej. wysłanie sekwencji START, wysłanie bajtu adresu układu pamięci na magistralę z bitem R/W w stanie niskim, wysłanie bajtu adresu kmórki pamięci, spd której nastąpi dczyt, wysłanie sygnału START, wysłanie bajtu adresu układu pamięci z bitem R/W w stanie wyskim (dczyt), debranie bajtu danych wysłanych przez układ pamięci, wystawienie sygnału braku ptwierdzenia (NACK), wysłanie sekwencji STOP. Rysunek. Odczyt bajtu danych z kmórki pamięci układu 24C16 29

Odczyt bajtu z aktualneg adresu prwadzi się według pniŝszej ramki. Rysunek. Odczyt bajtu z aktualneg adresu kmórki układu 24C16 Odczyt sekwencyjny zstał przedstawiny w ramce pniŝej. Rysunek. Odczyt sekwencyjny danych z pamięci układu 24C16 Psiadając wiedzę na temat zapisu i dczytu d pamięci raz znając mŝliwści mdułu TWI, mŝemy przejść d implementacji prgramwej bsługi magistrali I 2 C. 4. OBSŁUGA PAMIĘCI EEPROM W JĘZYKU C Głównym celem teg pracwania jest prezentacja implementacji prgramwej bsługi interfejsu TWI (I 2 C). ZałŜn, Ŝe prgramwany mikrkntrler będzie psiadał mduł sprzętwy TWI. Wybran kntrler ATmega16, psiadający 16kB pamięci flash i przede wszystkim psiadający, nas interesujący, interfejs TWI. Śrdwiskiem d stwrzenia prgramu będzie WinAVR. Z klei jak język prgramwania przyjęt Ansi C (kmpilatr GCC). ZałŜeniami pierwszeg prgramu jest wysłanie i debranie pjedynczeg bajtu z pamięci układu 24C16. 30

PROGRAM PIERWSZY Prgram pierwszy zakładał stwrzenie funkcji elementarnych, takich jak: wysłanie sekwencji START na magistralę, zatrzymanie transmisji, dbiór i wysłanie pjedynczych bajtów itd. Prcesr będzie pracwał w trybie Master Transmitter (MT). Pierwszą stwrzną funkcją jest funkcja wysyłająca Ŝądanie START na magistralę. Pmcny jest tutaj pis TWI (datasheet ATmega16). NaleŜy zaznaczyć iŝ w prezentwanej bsłudze interfejsu TWI wykrzystuje się tzw. plling (pętle czekujące na ustawienie danej flagi). W bardziej wyrafinwanych i krytyczn czaswych aplikacjach pwinn wykrzystywać się dstępne przerwania. (1) Ustawienie bitu TWINT pwduje dblkwanie przerwań. Z klei ustawienie TWSTA aktywuje wygenerwanie w trybie Master sekwencji startu transmisji. Bit TWEN dblkwuje interfejs TWI. Pętla while() wyknywana jest dpóki w rejestrze TWCR nie zstanie ustawiny bit TWINT. Bit ten jest ustawiany sprzętw p zakńczeniu bieŝącej peracji przez interfejs. Klejną przedstawiną funkcją jest funkcja wysyłająca sekwencję STOP na magistralę. (2) Funkcja piera się na ustawieniu wartści w rejestrze TWCR. Bit TWSTO dpwiedzialny jest za wygenerwanie Ŝądania STOP i wysłanie g na magistralę. P wyknaniu zadania bit TWSTO jest sprzętw czyszczny. Pętla while() działa dpóki w rejestrze TWCR bit TWSTO nie będzie równy zer. Prcedura pniŝej przedstawia wysłanie pjedynczeg bajtu. 31

(3) Rejestr TWDR zawiera bajt danych d wysłania/debrania. Aktywując flagę TWINT i interfejs uruchamiamy przesył tych danych ma magistralę. PniŜej przedstawin analgiczną strukturę dpwiedzialną za debranie bajtu danych. (4) Ustawienia bitu TWINT i TWEN są analgiczne d wcześniej przytcznych kdów źródłwych. Z klei ustawienie lub wyczyszczenie bitu TWEA jest dpwiedzialne za generwanie ptwierdzenia debrania wiadmści. Mając elementarne funkcje bsługujące magistralę TWI, zajmiemy się teraz zastswaniem ich d dczytu i zapisu pjedynczych bajtów wiadmści d układu EEPROM 24C16. Analizując pis spsbu kmunikwania się z tym układem pniŝej prezentwany jest kd zapisujący bajt danych d kmórki pamięci układu EEPROM. (5) Widać, Ŝe w kdzie wykrzystan funkcje stwrzne wcześniej. Algrytm zapisu zaczerpnięt z pisu układu 24C16. Najpierw wysyłamy Ŝądanie START, następnie adres 32

układu wraz z bitem R/W 6. Klejn wysyła się adres kmórki którą chcemy bsłuŝyć i wreszcie bajt danych d zapisu. Transmisję kńczy się pprzez wysłanie sekwencji STOP na magistralę. P zatrzymaniu transmisji naleŝy dczekać tzw. Time Write Cycle dla układów 24C16 jest t d 10 d 15ms 7. PniŜszy fragment przedstawia dczyt pjedynczeg bajtu danych z układu EEPROM. (6) Algrytm dczytu, jak i zapisu party jest datasheet układu 24C16. P wysłaniu sekwencji START, naleŝy wysłać adres układu (tryb zapis), następnie adres kmórki d dczytu. Klejn trzeba wysłać jeszcze raz sekwencję start, a p niej adres Slave (d dczytu), p tym zabiegu mŝna dczytać dane, zwracając na magistralę NACK. Transmisja kńczy się wysłaniem Ŝądania STOP. Mając juŝ wszystkie funkcje mŝemy przystąpić d napisania prsteg prgramu mająceg na celu zapisanie pierwszeg blku pamięci (adres 0xA0) liczbami: 255-L, gdzie L znacza numer kmórki. Następnie następuje dczyt tych danych. ZałŜn, Ŝe wyniki będą przedstawine na wyświetlaczu LCD 8. MŜliwe jest czywiście równieŝ inne przetwarzanie, np. wysłanie na prt szeregwy itd. 6 Przypmnienie: Adres 0xA0 dpwiada zapiswi dwójkwemu: 1010 0000. Cztery najstarsze bity są bitami fabrycznymi układu 24C16, zaś najmłdsze są knfigurwalne. Klejne trzy bity p bitach fabrycznych są bitami adreswymi (mŝliwe 8 róŝnych adresów). Ostatni bit jest bitem R/W dpwiadającym za tryb pracy zapis/dczyt 7 Obsługa dstępów czaswych zstała zrealizwana przy pmcy biblitek RKlibAVR (avr.elektrda.eu) 8 Obsługa wyświetlacza LCD zstała przeprwadzna za pmcą biblitek RKlibAVR (avr.elektrda.eu) 33

(7) PROGRAM DRUGI ZałŜeniami drugieg prgramu była prezentacja mŝliwści wykrzystania pamięci celem dczytu ustawień zapisanych przed dłączeniem zasilania. Z punktu widzenia standardu TWI ddan zapisywanie strnicwe raz bsługę błędów. W prgramie wykrzystan takŝe bsługę czterech przycisków raz prezentacje wyników na wyświetlaczu LCD. Prgram drugi, pdbnie jak i pierwszy wyknan mdułw dpwiednie funkcje mgą zstać uŝyte w innych prgramach. RównieŜ cechą wspólną dla bu prgramów jest wykrzystanie tzw. pllingu (czekiwanie w pętli na ustawienie danej flagi). Jest t rzwiązanie dbre dla małych i niekrytyczn-czaswych aplikacji. NaleŜy pamiętać, Ŝe w pllingu prgram czeka na ustawienie danej flagi, a w przypadku np. błędów hardware u, flaga mŝe nie być nigdy ustawiana, wtedy prgram zawiesza się. W przypadku skrzystania z przerwań (wektr TWI_vect) taki prblem nie pjawia się. Celem pierwszych działań jest stwrzenie funkcji zapisu i dczytu strnicweg. Jest t wygdne w wypadku dczytu i zapisu większej ilści danych. MŜna czywiście zrealizwać t za pmcą wcześniej stwrznej funkcji, mianwicie wielkrtneg dczytu (zapisu) pjedynczeg bitu, ale wymusza t stswanie późnienia czasweg (dla zapisu 15ms), p kaŝdej sekwencji STOP. PniŜej przedstawin algrytm zapisu strnicweg. 34

(1) W wywłaniu funkcji pdajemy adres pczątkwy, dane d zapisu, raz ilść tych danych. Algrytm zapisu pchdzi z dkumentacji układu EEPROM. P wysyłaniu sekwencji start, adresu Slave a raz adresu kmórki, następuje ciągły zapis bajtów d układu. P zakńczeniu, naleŝy wysłać sekwencję stp, a następnie dczekać 15ms 9. Klejną przedstawiną funkcją jest funkcja dczytu strnicweg. Widczna jest pniŝej. (2) Zajmiemy się teraz mdyfikacją funkcji stwrznych w prgramie pierwszych. D plików nagłówkwych mŝemy ddać plik zawierający makra TWI. (3) Jest t jedna z biblitek WinAVR, zawierająca makra funkcji i adresów. 9 Czas czekiwania p sekwencji stp jest róŝny dla układów róŝnych prducentów. MŜna tu zastswać późnienie nawet 5ms, ale my stsujemy bezpieczne graniczenie 15ms. 35

Dalsze mdyfikacje będą dtyczyły bsługi błędów transmisji. Kierwać będziemy się wcześniej przytczną dkumentacją prcesra ATmega16 i interfejsu TWI. Na pierwszy rzut pójdzie sprawdzanie pprawnści wysłania sekwencji start. (4) Zmiany dtyczą sprawdzanie rejestru TWSR i jeg zawartści. Operacja bitwa & pwduje maskwanie bitów teg rejestru 10. Kd 0x08 dpwiada wysłaniu sekwencji start, zaś kd 0x10 wysłaniu pwtórneg startu. Jeśli w rejestrze znajdują się takie wartści tzn., Ŝe sekwencja start zstała pmyślnie wysłana na magistralę. NaleŜy nadmienić, Ŝe kdy liczbwe uŝywane przy bsłudze magistrali mgą być zamienine na makra kreślne w pliku twi.h. Np. dla kdu 0x08 makr t TW_START. Klejnym etapem będzie zmdyfikwanie funkcji vtwistp(). (5) W tym wypadku czekiwana wartść szesnastkwa t 0xF8. Jeśli zawartść rejestru TWSR będzie róŝnić się d czekiwanej, wtedy wyświetlamy kmunikat. PniŜej znajduje się klejna funkcja, mianwicie zmienina funkcja transmisji pjedynczeg bajtu danych. 10 Wartść 0xF8 dpwiada wartści binarnej 11111000. NaleŜy przypmnieć, Ŝe pięć najstarszych bitów teg rejestru dpwiada za generwanie dpwiednich kdów statusu interfejsu. Bity 2, 1 są zarezerwwane, zaś najmłdszy bit słuŝy d ustawienia preskalera (w naszym wypadku preskaler równy zer). 36

(6) Kd 0x18 dpwiada wysłaniu adresu i debraniu d Slave, bitu ptwierdzająceg ACK. Kd TW_MT_DATA_ACK dpwiada wysłaniu bajtu danych i trzymaniu bitu ACK. Zaś 0x40 dpwiada wysłaniu SLA+R i debraniu NACK. (7) PwyŜsza funkcja pzwala debrać bajt danych. Rejestr TWSR jest sprawdzany pd kątem wysłania bitu ACK lub NACK w trybie Master Receiver. Przypminam, Ŝe w celu uŝywania makr zamiast kdów liczbwych naleŝy dłączyć d plików nagłówkwych plik twi.h. W stsunku d prgramu pierwszeg wyglądu nie zmieniły funkcje veepromwritedata() raz uceepromreaddata(). Wszystkie ptrzebne funkcje są juŝ utwrzne, naleŝy teraz je wykrzystać. W prgramie wykrzystywane są 4 przyciski: up, dwn, next, save. ZałŜn, Ŝe uŝytkwnik będzie miał cztery dane A, B, C, D, i ich wartści będzie mógł zmieniać. D teg celu będą słuŝyć przyciski up i dwn. Z klei przycisk next będzie pwdwał przejście d klejnej danej d zmiany. Kniec zmian będzie ptwierdzany przyciskiem save. Zmiany zstaną zapisane na trwałe w pamięci zewnętrznej EEPROM. 37

(8) Prcedura vshwdataonlcd() wyświetla na wyświetlaczu dane przekazane w wywłaniu. Opiera się na bsłudze wyświetlacza za pmcą biblitek (rkavrlib). Z klei funkcja vreadfrmemry() ma za zadanie dczytanie czterech kmórek pamięci EEPROM d adresu 1, a następnie wyświetlenie danych za pmcą vshwdataonlcd (). MŜna przejść juŝ d pisu pętli głównej prgramu. Najpierw ułatwmy sbie Ŝycie definiując makra. (9) Makra te dnszą się d prtu D mikrprcesra raz przycisków pdłącznych d jeg wyprwadzeń (klejn PIND0...PIND3). Inicjujemy równieŝ tablicę glbalną ucdata. PniŜej znajduje się pczątek funkcji głównej prgramu. 38

(10) Jak widać inicjuje się tutaj zmienne lkalne, ustawienia prtów, bsługę wyświetlacza LCD. Na starcie dczytujemy równieŝ wstępną zawartść pamięci EEPROM. W pętli głównej prgramu zawart bsługę czterech przycisków. ZałŜn, Ŝe aby wyeliminwać drgania styków 30ms jest wartścią wystarczającą. Klejnym pczyninym załŝeniem są zmiany wartści pszczególnych zmiennych (A, B, C, D). ZałŜn, Ŝe liczby te będą przyjmwać wartści d 0 d 9. Wynika t z faktu mŝliwści wypisania danych na wyświetlaczu LCD 2x16. Oczywiście mŝna regulwać te liczby w zakresie 0.. 255 (jedneg bajtu). PniŜej zaprezentwan dalszą część funkcji main(). (11) 39

(12) UŜywając wewnętrznych makr bit_is_clear() lub bit_is_set() mŝemy łatw sprawdzić stan prtu mikrprcesra. Analiza zamieszczneg kdu nie pwinna sprawić prblemu. 5. Pdsumwanie Dzięki wspieraniu standardu I 2 C (TWI) przez firmę Atmel mamy mŝliwść krzystania z układów mikrprcesrwych psiadających wbudwaną bsługę interfejsu I 2 C. Znacznie ułatwia t twrzenie prgramów i jest bardz pmcne w przypadku analizy błędów transmisji. Dzięki wbudwanej kntrli, na jednej szynie magistrali mŝe znajdwać się nawet kilka układów Master. W pracwaniu tym krzystan bezpśredni z interfejsu TWI jaki ferwał mikrkntrler ATmega16. MŜna by pkusić się stwrzenie implementacji I 2 C d pdstaw, jednak zapewne nie udałby się stwrzyć tak bszerneg i bezpieczneg interfejsu jaki feruje Atmel. Autr ma nadzieje, Ŝe w spsób prsty i jasny wytłumaczył spsób i zasadę działania interfejsu TWI i Ŝe prgramy umieszczne w tymŝe pracwaniu będą pmcne. 6. Bibligrafia [1] Grębsz J.: Symfnia C++. Kraków 1999, Kallimach [2] Opracwanie własne Prgramwanie mikrkntrlerów AVR w języku C. Kraków 2007 [3] Atmel : ATmega16 datasheet. Atmel 2007 [4] Atmel: 2-Wire Serial EEPROM. AT24C164 [5] Fairchild Semicnductr: NM24C16/17, Luty 2000 40

[6] STMicrelectrnics: ST24C16, Luty 1999 [7] http://radzi.dxp.pl [8] http://wikipedia.rg 41