16. Szeregowy interfejs SPI

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

Komunikacja w mikrokontrolerach Laboratorium

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

Mikroprocesory i Mikrosterowniki Laboratorium

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

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Laboratorium mikroinformatyki. Szeregowe magistrale synchroniczne.

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

MIKROKONTROLERY - MAGISTRALE SZEREGOWE

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

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

Hardware mikrokontrolera X51

Opis procedur asemblera AVR

MAGISTRALE MIKROKONTROLERÓW (BSS) Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Programowanie mikrokontrolerów. 8 listopada 2007

Instytut Teleinformatyki

MIKROPROCESORY architektura i programowanie

Spis tre 1. Przedstawienie standardu 1-wire Dokumentacja układu DS18B Obsługa termometru DS18B20 w j

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

2. Architektura mikrokontrolerów PIC16F8x... 13

LITEcomp aplikacje Zegar z układem PCF8583

Expandery wejść MCP23S17 oraz MCP23017

2.1 Porównanie procesorów

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

Komunikacja w mikrokontrolerach Laboratorium

Układy czasowo-licznikowe w systemach mikroprocesorowych

Analizowanie protokołów szeregowych oscyloskopami Rohde&Schwarz (2) SPI, I 2 C

Konwerter 1 Wire > SPI opisany P R Ow JVerilogu

Współpraca procesora ColdFire z urządzeniami peryferyjnymi

2. Format danych i zaimplementowane funkcje MODBUS

interfejs szeregowy wyświetlaczy do systemów PLC

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

Programowanie mikrokontrolerów 2.0

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

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

Ultradźwiękowy generator mocy MARP wersja Dokumentacja techniczno-ruchowa

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

Politechnika Białostocka Wydział Elektryczny

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

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

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

Kod produktu: MP01105

Odbiór i dekodowanie znaków ASCII za pomocą makiety cyfrowej. Znaki wysyłane przez komputer za pośrednictwem łącza RS-232.

Wstęp Architektura... 13

Programowanie w językach asemblera i C

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

Układy Cyfrowe projekt. Korekcja jasności obrazów w 24-bitowym formacie BMP z użyciem funkcji gamma. Opis głównych modułów sprzętowych

Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

MIKROPROCESORY architektura i programowanie

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

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

DODATEK A OPIS INTERFEJSU SIECIOWEGO FMP300

Programowanie Mikrokontrolerów

Podział układów cyfrowych. rkijanka

Współpraca procesora z urządzeniami peryferyjnymi

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

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

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

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

Programowanie mikrokontrolerów

TRD-MINI COMBO. Uniwersalny moduł czytnika transponderów UNIQUE - wersja OEM. Podstawowe cechy :

Enkoder magnetyczny AS5040.

Moduł temperatury TMB-880EXF Nr produktu

Instrukcja do ćwiczenia : Matryca komutacyjna

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

UKŁADY CYFROWE. Układ kombinacyjny

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

Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30

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

Architektura komputerów. Układy wejścia-wyjścia komputera

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

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

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

4. Karta modułu Slave

Opis układów wykorzystanych w aplikacji

Instrukcja obsługi czytnika MM-R32

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.

Opis czytnika TRD-55 CLASSIC ver Moduł czytnika transponderów UNIQUE z zewnętrzną anteną

Wstęp: Interfejs portu równoległego 6821 i portu szeregowego 6850 firmy Motorola

Układy czasowo-licznikowe w systemach mikroprocesorowych

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

OPROGRAMOWANIE FIRMWARE INTERFEJSU ETHERNETOWEGO UNIV

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

PC 3 PC^ TIMER IN RESET PC5 TIMER OUT. c 3. L 5 c.* Cl* 10/H CE RO WR ALE ADO AD1 AD2 AD3 AD4 A05 A06 LTJ CO H 17 AD7 U C-"

1W-H3-04P (K)* *Litera K odnosi się do wersji czytnika ze wspólną katodą. Czytnik RFID 125 khz Unique. Karta produktu

Programator układów HCS

Architektura komputerów

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.

Wyjście do drukarki Centronix

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

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Zegar Czasu Rzeczywistego I²C

Transkrypt:

16. Szeregowy interfejs SPI Szeregowy interfejs SPI (Serial Peripherial Interface) służy do dwukierunkowej (full-duplex), synchronicznej transmisji danych pomiędzy mikrokontrolerem, a zewnętrznymi układami peryferyjnymi (np. przetwornik A/C i C/A, szeregowa pamięć zewnętrzna, zegar, potencjometr cyfrowy lub inny mikrokontroler) [1, 17]. Interfejs SPI jest trójprzewodowy, składa się z dwóch linii synchronicznie przesyłających dane w przeciwnych kierunkach oraz linii z sygnałem taktującym synchronizującym transfer danych. Transfer danych przez interfejs SPI odbywa się w układzie master-slave. Jeżeli w systemie znajduje się więcej niż 1 mikrokontroler, to tylko jeden z nich w danej chwili pełni rolę urządzenia master. Sposób połączenia układu nadrzędnego (master) z układem podrzędnym (slave) przedstawiono na rysunku. Rys.24. Transmisja danych po liniach magistrali SPI [1] Interfejs SPI składa się z dwóch rejestrów przesuwnych połączonych w licznik pierścieniowy i generatora sygnału taktującego (rys.24). Generator sygnału taktującego znajduje się zawsze w układzie nadrzędnym (master). Linia MISO jest wejściem danych dla urządzenia master, a wyjściem dla slave, natomiast linia MOSI jest wyjściem dla urządzenia master, a wejściem dla slave. Linia SCK jest wejściem taktującym dla układu slave oraz wyjściem dla master. Sygnał taktujący jest zawsze generowany przez układ nadrzędny (master) bez względu na to czy dane są przez niego nadawane czy też odbierane. Sygnał taktujący jest nadawany jedynie podczas transmisji. Transmisje na liniach magistrali SPI są zawsze dwukierunkowe. Nadawaniu danych na linii MOSI przez układ master towarzyszy zawsze nadawanie danych na linii MISO przez układ slave. Nie wszystkie nadawane dane niosą informacje, najczęściej w jednym kierunku są nadawane dane niosące informacje, podczas gdy w drugim są nadawane dane puste.

Rys.25. System składający się z urządzenia Master i kilku urządzeń Slave na magistrali SPI [17] Układ nadrzędny (master) wybiera poszczególne układy podrzędne (slave) przez jedną z równoległych linii portu dołączonych do wyprowadzeń SS układów podrzędnych (rys.25). Urządzenie slave zostanie wybrane, gdy na jego wejście SS zostanie podany określony stan (istnieją urządzenia wybierane stanem niskim oraz stanem wysokim). W czasie transmisji, w celu uniknięcia kolizji, tylko jeden układ podrzędny może być aktywny na liniach interfejsu. 16.1. Tryby pracy interfejsu SPI Polaryzacja i faza sygnału taktującego układu master musi być dostosowana do sposobu pracy układu slave. Polaryzacja sygnału taktującego jest określana przez wartość logiczną tego sygnału w stanie spoczynkowym. Gdy: CPOL=0 w stanie spoczynku linia taktująca jest w stanie niskim, CPOL=1 w stanie spoczynku linia taktująca jest w stanie wysokim. Rys.26. Przebiegi czasowe interfejsu SPI dla sygnału zegarowego o CPHA=0 [1] Faza sygnału taktującego definiuje zależność pomiędzy zboczami sygnału taktującego, a momentami odbioru (próbkowania) danych wejściowych i nadawania (przesuwania w rejestrze) danych wyjściowych. Gdy:

CPHA=0 pierwsze zbocze sygnału taktującego próbkuje dane wejściowe, drugie zbocze przesuwa dane w rejestrze (dane są próbkowane, a następnie przesuwane i wysyłane) (rys.26) CPHA=1 pierwsze zbocze sygnału taktującego przesuwa dane w rejestrze wyprowadza je z rejestru, drugie zbocze próbkuje dane wejściowe (dane są przesuwane i wysyłane, a następnie próbkowane i wpisywane do rejestru) (rys.27). Rys.27. Przebiegi czasowe interfejsu SPI dla sygnału zegarowego o CPHA=1[1] Wartości bitów CPOL i CPHA decydują o wyborze jednego z 4-ch trybów pracy interfejsu SPI, oznaczonych jako 0, 1, 2 lub3. Wybór trybu pracy interfejsu SPI [1] Zbocze narastające Zbocze opadające Tryb pracy SPI CPOL = 0, CPHA = 0 Odbiór (narastające) Nadawanie (opadające) 0 CPOL = 0, CPHA = 1 Nadawanie (narastające) Odbiór (opadające) 1 CPOL = 1, CPHA = 0 Odbiór (opadające) Nadawanie (narastające) 2 CPOL = 1, CPHA = 1 Nadawanie (opadające) Odbiór (narastające) 3 Tryb pracy interfejsu SPI należy dostosować do wymagań urządzenia zewnętrznego podłączonego do linii magistrali przez dokonanie odpowiednich wpisów rejestrze kontrolnym SPCR. 16.2. Sterowanie interfejsem SPI Z interfejsem SPI skojarzone są trzy rejestry mikrokontrolera, które zapewniają dostęp do wszystkich funkcji interfejsu: Rejestr kontrolny SPCR służy do konfiguracji interfejsu i sterowania jego pracą Rejestr statusu SPSR zawiera flagi sygnalizujące stan interfejsu. Rejestr danych SPDR służy do wpisywania bajtu danych do wysłania oraz do odczytu odebranego bajtu danych.

Rejestr kontrolny interfejsu SPI - SPCR Bit 7 6 5 4 3 2 1 0 Nazwa SPIE SPE DODR MSTR CPOL CPHA SPR1 SPR0 Odczyt/zapis R/W R/W R/W R/W R/W R/W R/W R/W Wartość początkowa 0 0 0 0 0 0 0 0 Bit 7 SPIE: maska przerwania interfejsu SPI Gdy bit 7 jest logiczną 1, wówczas zakończenie transmisji znaku po magistrali SPI i ustawienie bitu SPIF w rejestrze SPSR spowoduje skok do procedury obsługi przerwania rozpoczynającego się od adresu $008 pod warunkiem ustawienia bitu I w rejestrze statusowym. Bit 6 SPE: włączenie interfejsu Ustawienie bitu 6 umożliwia transmisje po magistrali SPI. Bit 5 DODR: kolejność przesyłu danych Bit 5 decyduje o kolejności przesyłania danych, gdy bit 5 zostanie ustawiony w stan logicznej 1 dane będą przesyłane od bitu najmłodszego do najstarszego, gdy bit 5 zostanie wyzerowany dane będą przesyłane od bitu najstarszego do najmłodszego. Bit 4 MSTR: wybór trybu master/slave Ustawienie bitu 4 powoduje przejście urządzenia do pracy w trybie nadrzędnym master (wyzerowanie bitu spowoduje przejście do pracy w trybie podrzędnym slave). Bit ten jest zerowany poziomem niskim na linii SS. Bit 3 CPOL: wybór polaryzacji sygnału taktującego Bit 3 umożliwia wybór polaryzacji sygnału taktującego. Gdy na pozycji 3 zostanie wpisana logiczna 1 sygnał taktujący w stanie spoczynku będzie miał poziom wysoki, zaś gdy 0 sygnał taktujący w stanie spoczynku będzie miał poziom niski. Bit 2 CPHA: wybór fazy próbkowania Bit 2 dokonuje wyboru fazy próbkowania. Kiedy CPHA = 0 wówczas pierwsze zbocze sygnału taktującego próbkuje dane wejściowe, a drugie zbocze przesuwa je w rejestrze i nadaje (dane są próbkowane, a następnie przesuwane i wysyłane). W przypadku gdy bit ten zostanie ustawiony w stan logicznej 1, wówczas pierwsze zbocze sygnału taktującego przesuwa dane w rejestrze i wysyła, a drugie zbocze próbkuje dane wejściowe (dane są przesuwane i wysyłane a następnie próbkowane i wpisywane do rejestru). Bit 1 SPR1, bit 0 SPR0: wybór częstotliwości taktującej Bity 1 i 0 określają częstotliwość sygnału taktującego interfejsu pracującego w trybie master. Wartości bitów 1 i 0 nie mają wpływu na pracę urządzenia skonfigurowanego w trybie slave. Rejestr statusowy interfejsu SPI - SPSR Bit 7 6 5 4 3 2 1 0 Nazwa SPIF WCOL - - - - - - Odczyt/zapis R R R R R R R R Wartość początkowa 0 0 0 0 0 0 0 0

Wybór częstotliwości taktującej SCK [1] SPR1 SPR0 SCK 0 0 f OSC /4 0 1 f OSC /16 1 0 f OSC /64 1 1 f OSC /128 Bit 7 SPIF: flaga sygnalizująca zakończenie transferu danej Bit 7 informuje o zakończeniu przesyłania danych. Gdy transfer jest kompletny (nastąpi przepisanie rejestru szeregowego do bufora) flaga ta zostaje ustawiona i następuje skok do adresu $008 rozpoczynającego procedurę przerwania (jeśli maska SPIE w rejestrze SPCR została ustawiona). Flaga SPIF jest zerowana sprzętowo po wyjściu z obsługi przerwania, jak również po odczycie danych z rejestru SPDR. Do rejestru SPDR można wprowadzić kolejny bajt danych wyłącznie w przypadku, gdy flaga SPIF jest wyzerowana. Bit 6 WCOL: flaga sygnalizująca kolizję podczas transferu danej Bit 6 kolizji zostaje ustawiony w stan logicznej 1, gdy zawartość rejestru danych zostanie zmieniona podczas transmisji. Rejestr danych interfejsu SPI - SPDR Bit 7 6 5 4 3 2 1 0 Nazwa MSB - - - - - - LSB Odczyt/zapis R/W R/W R/W R/W R/W R/W R/W R/W Wartość początkowa X X X X X X X X X niezdefiniowana

17. Zegar czasu rzeczywistego DS1305 na magistrali SPI Zegar czasu rzeczywistego DS1305 [7] pełni rolę zegara i kalendarza podającego czas oraz datę w systemie BCD na liniach magistrali SPI. Układ zlicza sekundy, minuty, godziny, dni, miesiące (uwzględniając różną liczbę dni w miesiącu) oraz lata (uwzględniając lata przestępne). Zegar czasu rzeczywistego DS1305 może pracować w trybie 12-sto lub 24-ro godzinnym. Zegar czasu rzeczywistego DS1305 jest wyposażony w układ ładowania baterii kontrolowany programowo. Bateria ładowalna może zostać wykorzystana jako rezerwowe źródło energii dla zegara. Dodatkowo zegar czasu rzeczywistego DS1305 posiada 96 bajtów pamięci RAM ogólnego przeznaczenia. Zegar czasu rzeczywistego DS1305 może generować dwa niezależne alarmy. Stan alarmowy jest sygnalizowany stanem niskim na liniach odpowiednio: INT0 oraz INT1. Linie te mogą zostać połączone z wejściami przerwań zewnętrznych mikrokontrolera. W układzie ewaluacyjnym EVB-503 linie zegara czasu rzeczywistego są wyprowadzone na złącze AUX3. Należy dokonać połączeń wg tabeli. Połączenie linii zegara DS1305 i linii mikrokontrolera wyprowadzonych na złącze AUX3 płytki EVB-503 [5] Linie zegara DS1305 Linie złącza AUX3 (połączone z liniami zegara DS1305) Linie mikrokontrolera CE linia wyboru Chip Enable ES (SS) Chip Select (Slave Select) PORTB, 4 SDI wejście danych Serial Data Input SI (MOSI) Master Output Slave Input PORTB, 5 SDO wyjście danych Serial Data Output SO (MISO) Master Input Slave Output PORTB, 6 SCLK linia taktująca Serial Lock SCK Serial Lock PORTB, 7 INT0 linia przerwania Interrupt 0 /IR (INT0) Interrupt 0 PORTD, 2 17.1. Rejestry zegara czasu rzeczywistego DS1305 Rejestry czasu i alarmów Rejestry czasu są dostępne w trybie odczytu pod adresami od $00 (rejestr sekund) do $06 (rejestr lat). W trybie zapisu najstarszy bit adresu rejestru musi być ustawiony, stąd rejestry czasu są zapisywane pod adresami od $80 (rejestr sekund) do $86 (rejestr lat). Po resecie bit 6 w rejestrze godzin jest wyzerowany i zegar startuje w trybie 24-godzinnym. Rejestry zegara DS1305 są zapisywane w formacie BCD, np. rejestr sekund przechowuje pojedyncze sekundy na młodszym półbajcie i dziesiątki sekund na starszym półbajcie. Wyświetlenie odczytanego czasu na wyświetlaczu LCD wymaga zamiany formatu BCD liczby na format ASCII. W tym celu należy rozdzielić i obrócić półbajty, aby uzyskać zapis binarny cyfr, a następnie do każdej cyfry w zapisie binarnym dodać wartość 48 w celu przeniesienia w zakres ASCII.

Rejestry zegara czasu rzeczywistego DS1305 [7] Adres szesnastkowy Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Odczyt Zapis Zakres (BCD) $00 $80 0 dziesiątki sekund sekundy 00-59 $01 $81 0 dziesiątki minut minuty 00-59 $02 $82 0 P 01-12 + 12 dziesiątki A godziny P/A godzin 24 10 00-23 $03 $83 0 0 0 0 dni tygodnia 1-7 $04 $84 0 0 dziesiątki dni miesiąca dni miesiąca 1-31 $05 $85 0 0 Dziesiątki miesięcy Miesiące 01-12 $06 $86 dziesiątki lat Lata 00-99 ALARM 0 $07 $87 M* 10 sekund alarmu sekundy alarmu 00-59 $08 $88 M 10 minut alarmu minuty alarmu 00-59 $09 $89 M P* 01-12 10 A* godzina alarmu 12+P/A godziny 24 10 00-23 $0A $8A M 0 0 0 dzień alarmu 01-07 ALARM 1 $0B $8B M 10 sekund alarmu sekundy alarmu 00-59 $0C $8C M 10 minut alarmu minuty alarmu 00-59 $0D $8D M P 01-12 10 A godzina alarmu 12+P/A godziny 24 10 00-23 $0E $8E M 0 0 0 dzień alarmu 01-07 $0F $8F Rejestr kontrolny - $10 $90 Rejestr statusowy - $11 $91 Rejestr układu ładującego baterię - $12 $1F $20 $7F $92 $9F $A0 $FF * M bit maski, P po południu, A przed południem Zarezerwowane - 96 bajtów pamięci RAM 00-FF

Etapy konwersji z zapisu BCD na zapis ASCII Starszy półbajt Młodszy półbajt Formatowanie Zawartość b7 b6 b5 b4 b3 b2 b1 b0 BCD Dziesiątki na starszym półbajcie Jednostki na dolnym półbajcie 0 0 0 0 b7 b6 b5 b4 binarne dziesiątki 0 0 0 0 b3 b2 b1 b0 binarne jednostki 0 0 1 1 b7 b6 b5 b4 ASCII dziesiątki 0 0 1 1 b3 b2 b1 b0 ASCII jednostki W zegarze DS1305 można zaprogramować dwa alarmy: Alarm0 i/lub Alarm1 przez wybór dnia i czasu alarmu oddzielnie dla każdego z alarmów: - w rejestrach $87 do $8A dokonuje się ustawień warunków Alarmu 0, - w rejestrach $8B do $8E dokonuje się ustawień warunków Alarmu 1. Bity masek w rejestrach alarmów[7] Bity masek w rejestrach alarmów (7-me bity) sekundy minuty godziny dni 1 1 1 1 Alarm co sekundę 0 1 1 1 Alarm co minutę 0 0 1 1 Alarm co godzinę 0 0 0 1 Alarm codziennie 0 0 0 0 Alarm co tydzień Bit 7 każdego z rejestrów alarmu (od $87 do $8E) jest bitem M maski. Gdy 7-me bity (bity masek) we wszystkich rejestrach alarmu zostaną wyzerowane, alarm będzie generowany raz w tygodniu. Gdy bit maski rejestru dnia alarmu zostanie ustawiony w stan logicznej 1, alarm będzie generowany codziennie. Gdy dodatkowo bit maski rejestru godziny alarmu zostanie ustawiony w stan logicznej 1, alarm będzie generowany co godzinę. Gdy dodatkowo bit maski rejestru minuty alarmu zostanie ustawiony w stan logicznej 1, alarm będzie generowany co minutę. Gdy dodatkowo bit maski rejestru sekundy alarmu zostanie ustawiony w stan logicznej 1, alarm będzie generowany co sekundę. Rejestry specjalnego przeznaczenia Rejestr kontrolny (czytany pod adresem $0F, zapisywany pod adresem $8F). Bit 7 6 5 4 3 2 1 0 Nazwa EOSC WP 0 0 0 INTCN AIE1 AIE0 Odczyt/zapis R/W R/W R/W R/W R/W R/W R/W R/W Wartość początkowa 0 n/a 0 0 0 0 0 0

Bit 7 EOSC: włączenie/wyłączenie oscylatora Wyzerowanie bitu EOSC rozpoczyna pracę oscylatora. Ustawienie bitu EOSC zatrzymuje pracę oscylatora i DS1305 wchodzi w tryb pracy energooszczędnej. Bit 6 WP: zabezpieczenie przed nieuprawnionym zapisem Przed każdą operacją zapisu do rejestru zegara lub RAM-u bit WP musi zostać wyzerowany. Ustawiony w stan logicznej 1 bit WP zapobiega operacji zapisania do rejestrów, w tym również na pozycje 1, 2 i 7 rejestru kontrolnego. Po resecie stan bitu WP jest nieustalony, dlatego przed operacją zapisu bit WP musi zostać wyzerowany. Bit 2 INTCN: bit kontrolny przerwania Bit INTCN kontroluje zależność miedzy alarmem, a stanem niskim na linii przerwania. Gdy bit INTCN jest ustawiony w stan logicznej 1, zrównanie rejestrów czasu i alarmu 0 zeruje linię INT0 (pod warunkiem uaktywnienia alarmu 0), a zrównanie rejestrów czasu i alarmu 1 zeruje linię INT1 (pod warunkiem uaktywnienia alarmu 1). Kiedy bit INTCN jest wyzerowany, zrównanie rejestrów czasu i alarmu 0 lub alarmu 1 zeruje linię INT0 (pod warunkiem uaktywnienia alarmów), podczas gdy linia INT1 nie pełni żadnej funkcji. Bit 1 AIE1: maska alarmu 1 Gdy bit masi AIE1 jest ustawiony w stan logicznej 1, ustawienie flagi przerwania 1 (IRQF1) w rejestrze statusowym wywołuje stan niski na linii INT1 (gdy INTCN=1) lub na linii INT0 (gdy INTCN=0). Gdy bit AIE1 jest wyzerowany, ustawienie flagi przerwania 1 (IRQF1) w rejestrze statusowym nie wywołuje zmiany na żadnej linii. Bit 0 AIE0: maska alarmu 0 Gdy bit maski AIE0 jest ustawiony w stan logicznej 1 ustawienie flagi przerwania 0 (IRQF0) w rejestrze statusowym wywołuje stan niski na linii INT0. Gdy bit AIE0 jest wyzerowany ustawienie flagi przerwania 0 (IRQF0) w rejestrze statusowym nie wywołuje żadnej zmiany na linii INT0. Rejestr statusowy (czytany pod adresem $10) Bit 7 6 5 4 3 2 1 0 Nazwa 0 0 0 0 0 0 IRQF1 IRQF0 Odczyt/zapis R R R R R R R R Wartość początkowa 0 0 0 0 0 0 0 0 Bit 1 IRQF1: flaga przerwania 1 Flaga IRQF1 zostanie ustawiona sprzętowo, gdy nastąpi zrównanie rejestrów czasu i alarmu1. Spowoduje to wyzerowanie linii INT1 pod warunkiem, że bit maski AIE1 jest ustawiony w stan logicznej 1. Wyzerowanie flagi IRQF1 następuje, gdy którykolwiek z rejestrów Alarmu 1 zostanie odczytany lub zapisany. Bit 0 IRQF0: flaga przerwania 0 Flaga IRQF0 zostanie ustawiona sprzętowo, gdy nastąpi zrównanie rejestrów czasu i alarmu 0. Spowoduje to wyzerowanie linii INT0 pod warunkiem, że bit maski AIE0 jest ustawiony w stan logicznej 1. Wyzerowanie flagi IRQF0 następuje, gdy którykolwiek z rejestrów Alarmu 0 zostanie odczytany lub zapisany.

17.2. Transfer danych po magistrali SPI Układ DS1305 rozpoznaje polaryzację zegara przez próbkowanie linii SCLK w stanie wysokim CE. Na skutek tego każda polaryzacja zegara SCLK jest akceptowana przez układ DS1305. Wybór układu DS1305 następuje stanem wysokim na linii CE. Częstotliwość taktująca nie powinna przekraczać wartości 2MHz, przy napięciu zasilania 5V. Zbocze impulsu CE powinno wyprzedzać 1-sze zbocze taktujące o co najmniej 2µs. Impulsy na magistrali SPI (np. impuls taktujący) nie mogą być krótsze niż 0.5µs. Dane są przesyłane po linii SDI podczas operacji zapisu (rys.28) i po linii SDO podczas operacji odczytu (rys.29). W trakcie transferu bajt adresowy jest nadawany jako pierwszy. Najstarszy bit (7-my bit) bajtu adresowego determinuje rodzaj operacji. Jeśli bit 7 jest logiczna 1, to nastąpi operacja zapisu jednego lub kilku bajtów. Jeśli bit 7 jest logicznym 0, to nastąpi operacja odczytu jednego lub kilku bajtów. Rys.28. Zapis pojedynczego słowa po magistrali SPI [7] Rys.29. Odczyt pojedynczego słowa po magistrali SPI [7] W przypadku transferu pojedynczego słowa (bajtu) po dokonaniu zapisu lub odczytu linia CE ponownie jest ustawiana w stan niski. W przypadku transferu wielu bajtów, w trybie seryjnym, po podaniu adresu może nastąpić zapis lub odczyt wielu bajtów danych (rys.30). Każdy z cykli zapisu lub odczytu powoduje automatyczną inkrementację adresu rejestru RTC (Real Time Clock) lub RAM-u. Inkrementacja jest kontynuowana dopóki trwa transfer.

Podczas transferu do RTC adres powraca do wartości $00 po wzroście do $1F (podczas odczytu) i powraca do wartości $80 po wzroście do $9F (podczas zapisu). Podczas transferu do RAM-u adres powraca do wartości $20 po wzroście do $7F (podczas odczytu ) i powraca do wartości $A0 po wzroście do $FF (podczas zapisu). Rys.30. Transfer danych w trybie seryjnym po magistrali SPI [7] Przykład konfiguracji magistrali SPI SPCR = (1<<SPE) (1<<MSTR) (1<<CPHA) (1<<SPR0)

18. Magistrala I 2 C Magistrala szeregowa I 2 C umożliwia dwukierunkową, simpleksową, synchroniczną transmisję danych między mikrokontrolerem, a zewnętrznymi układami peryferyjnymi. Magistrala I 2 C składa się z dwóch linii: linią SCL przesyłane są impulsy zegarowe synchronizujące transmisję, linia SDA transmituje dane w dwóch kierunkach (rys.31). Rys.31. Przykładowa konfiguracja magistrali I2C[17] Urządzenia podłączone do magistrali mogą być skonfigurowane jako MASTER (urządzenie nadrzędne) lub SLAVE (urządzenie podrzędne). W danej sesji łączności tylko jeden mikrokontroler podłączony do magistrali może być skonfigurowany jako MASTER, chociaż każde z urządzeń może pracować zarówno jako nadajnik jak i odbiornik (rys.32). Mikrokontroler MASTER generuje przebieg zegarowy SCL taktujący transmisję oraz inicjuje łączność z wybranym urządzeniem SLAVE podając programowo jego adres. Wybrany SLAVE potwierdza odbiór bajtu adresowego, pozostałe urządzenia SLAVE pozostawiają linię SDA w stanie wysokiej impedancji. Rys.32. Połączenie urządzeń z magistralą I 2 C[17] Układy podłączone do linii SCL i SDA muszą być wyposażone w wyjścia z otwartym drenem podciągnięte do zasilania przez rezystor. Liczba urządzeń SLAVE, jaka może być dołączona do jednego urządzenia MASTER jest ograniczona od strony sprzętowej pojemnością wejściową tych urządzeń i nie może przekroczyć wypadkowej wartości 400pF.

Stabilność i zmiana danych W stanie bezczynnym idle obie linie SCL i SDA znajdują się w stanie logicznym wysokim. Stan linii SDA może ulegać zmianom jedynie przy niskim stanie sygnału zegarowego, stan linii SDA musi być stabilny przy wysokim stanie linii SCL (rys.33). Naruszenie tej zasady w dwóch wyjątkowych sytuacjach pozwala na określenie początku i końca transmisji. Rys.33. Impulsy na liniach SCL i SDA w trakcie transmisji danych [9] Sekwencja startu i stopu Zmiana stanu na linii SDA z wysokiego na niski podczas wysokiego poziomu na linii SCL oznacza sekwencję startu (rys.34), zaś zmiana w kierunku przeciwnym sekwencję stopu (rys.34). Sekwencje startu i stopu generuje urządzenie MASTER. Rys.34. Sekwencja startu i stopu [9] Sesja transmisji danych Sesja połączeniowa inicjowana jest przez urządzenie typu MASTER przez wymuszenie stanu niskiego na linii SDA i wygenerowanie w ten sposób sekwencji startu. Następnie MASTER przesyła linią SDA osiem bitów słowa adresowego. Ósmy bit wybiera rodzaj operacji: logiczne 0 dla zapisu, logiczna 1 dla odczytu danych. Zaadresowane urządzenie SLAVE wymusza stan niski na zwolnionej przez MASTER linii SDA w trakcie dziewiątego impulsu zegarowego, co oznacza potwierdzenie odebrania słowa adresowego. Dalsza transmisja danych przebiega podobnie. Urządzenie nadające przesyła osiem bitów danych do urządzenia odbierającego synchronicznie z 8-ma impulsami zegarowymi na linii SCL, a w czasie 9-tego impulsu SCL (rys.35) oczekuje na potwierdzenie w postaci logicznego 0. Sekwencja stopu kończy sesję transmisji danych.

Rys.35. Sekwencja potwierdzenia odbioru znaku[9] 19. Pamięć EEPROM AT24CXX na magistrali I 2 C W rodzinie pamięci EEPROM AT24CXX występuje 5 typów pamięci różniących się pojemnością i liczbą linii adresowych A2, A1, A0. 16.1. Charakterystyka pamięci EEPROM AT24CXX Rys.36. Konfiguracja wyprowadzeń pamięci EEPROM AT24C01/02/04/08/16[9] Funkcje wyprowadzeń pamięci EEPROM AT24C01/02/04/08/16 [9] Linia wyprowadzenia A0-A2 SCL SDA WP Funkcja Linii Wejścia adresowe Wejście zegarowe Linia danych Zabezpieczenie przed nieuprawnionym zapisem SCL (serial clock) wejście zegara taktującego transmisję danych. Maksymalna częstotliwość zegara taktującego nie może przekroczyć 400kHz. SDA (serial data) dwukierunkowa linia transmisji danych (linia jest typu otwarty kolektor i może być łączona z dowolną liczbą innych linii tego samego typu). Linie adresowe (A0, A1, A2) wejściowe linie adresowe podłączane do masy lub zasilania, konfigurują sprzętowy adres pamięci na magistrali. Liczba linii adresowych determinuje

liczbę urządzeń jednakowego typu (np. pamięci EEPROM), które mogą zostać podłączone do magistrali I 2 C mikrokontrolera. Liczba pamięci jednego typu możliwa do podłączenia w systemie Typ pamięci Linie adresowe Liczba pamięci jednego typu w systemie AT24C01 A2, A1, A0 8 AT24C02 A2, A1, A0 8 AT24C04 A2, A1 4 AT24C08 A2 2 AT24C16 Brak 1 WP (write protect) zabezpieczenie przed zapisem gdy linia WP jest w stanie wysokim, nie można przeprowadzić operacji zapisu ani odczytu pamięci, gdy linia WP jest w stanie niskim, operacje zapisu i odczytu są dozwolone. Pamięci AT24CXX są stronicowane, przy czym liczba stron i liczba bajtów na stronę są różne dla poszczególnych typów pamięci, co implikuje zróżnicowanie długości słowa adresowego. Liczba wyprowadzeń A2, A1, A0, których konfiguracja sprzętowa jest częścią słowa adresowego również zależy od typu pamięci. W efekcie konstrukcja słów adresowych jest nieco odmienna dla każdego typu pamięci. Układ danych w pamięciach AT24CXX Typ pamięci Liczba stron pamięci Liczba bajtów na stronę Długość słowa adresowego w bitach AT24C01 16 8 7 AT24C02 32 8 8 AT24C04 32 16 9 AT24C08 64 16 10 AT24C16 128 16 11 Adres pamięci EEPROM AT24CXX (rys.37) składa się z: adresu rodziny urządzeń podłączonych na magistrali I 2 C (pamięci EEPROM posługują się adresem rodzinnym 4-ro bitowym o wartości1010), pola adresowego o zmiennej długości pozwalającego rozróżnić urządzenia tego samego typu podłączone do magistrali (pole to zawiera nie więcej niż 3 bity o wartościach zgodnych z podłączeniem linii adresowych A2, A1, A0 do masy lub zasilania), adresu strony pamięci o długości między 7 a 11 bitów w zależości od typu pamięci.

W szczególności: o W pamięciach o pojemności 1k i 2k adres sprzętowy składa się z bitów A 2, A 1, A 0 o W pamięci o pojemności 4k adres sprzętowy składa się z bitów A 2, A 1, linia A 0 nie jest podłączona, a odpowiadający jej bit jest najstarszym bitem adresu strony pamięci. o W pamięci o pojemności 8k adres sprzętowy składa się z bitu A 2. Linie A 1 i A 0 nie są podłączone, a odpowiadające im bity są wykorzystane jako najstarsze bity adresu strony pamięci. o W pamięci o pojemności 16k nie ma adresu sprzętowego. Linie A 2, A 1 i A 0 nie są podłączone, a odpowiadające im bity są wykorzystane jako najstarsze bity adresu strony pamięci. Bit 7 6 5 4 3 2 1 0 AT24C01/02 1 0 1 0 A2 A1 A0 R/W AT24C04 1 0 1 0 A2 A1 P0 R/W AT24C08 1 0 1 0 A2 P1 P0 R/W AT24C16 1 0 1 0 P2 P1 P0 R/W Rys.37. Adresowanie pamięci serii AT24CXX adres urządzenia [9] 19.2. Transfer po magistrali I 2 C W pamięci AT24CXX można zapisywać lub odczytywać pojedyncze słowa danych lub strony danych zgodne z zasadami stronicowania danego typu pamięci. Zapis słowa danych porządek transmisji (rys.38): Sekwencja startu, 1-sze słowo adresowe - adres urządzenia (rys.37), Potwierdzenie od pamięci EEPROM, 2-gie słowo adresowe - adres komórki pamięci EEPROM, Potwierdzenie od pamięci EEPROM, 8-mio bitowa dana dla komórki pamięci EEPROM, Potwierdzenie od pamięci EEPROM, Sekwencja stopu. Potwierdzenie polega na ustawieniu przez pamięć EEPROM linii SDA w stan logicznego 0 i jest wysyłane pod warunkiem prawidłowego zaadresowania pamięci przez mikrokontroler. Jeśli adres nie jest prawidłowy pamięć EEPROM wraca w stan czuwania. Wewnętrzny cykl zapisu pamięci EEPROM trwa około 10ms, w tym czasie wejścia pamięci są nieaktywne. Testowanie zakończenia procesu zapisu wewnetrznego porządek transmisji: Sekwencja startu, 1-sze słowo adresowe - adres urządzenia (rys.37), odczyt linii SDA, pamięć EEPROM odpowie bitem logicznego 0 po zakończeniu procesu zapisu.

Rys.38. Zapis słowa danych po magistrali I2C [9] Zapis strony danych W pamięciach EEPROM o pojemności 1k, 2k strona liczy 8 słów, natomiast w pamięciach EEPROM o pojemności 4k, 8k, 16k strona liczy 16 słów. Początek transmisji (rys.39) jest taki sam, jak podczas zapisu jednego baju, ale po zapisaniu 1-go bajtu danych mikrokontroler może jeszcze wysłać nie więcej niż 7 kolejnych bajtów danych w przypadku pamięci EEPROM 1k/2k lub nie więcej niż 15 bajtów danych w przypadku pamięci EEPROM 4k/8k/16k. Każdy bajt danych jest potwierdzany przez EEPROM bitem potwierdzenia (logiczne 0). Mikrokontroler musi zakończyć transmisję wysyłając sekwencję stopu. W trakcie zapisu strony inkrementacji sprzętowej podlegają: 3 najmłodsze bity adresu danych w pamięciach EEPROM o pojemności 1k i 2k 4 najmłodsze bity adresu danych w pamięciach EEPROM o pojemności 4k/8k/16k. Gdy inkrementowany w ten sposób adres strony dojdzie do końca strony, wówczas kolejny bajt danych zostanie zapisany na początku tej samej strony. Rys.39. Zapis strony danych po magistrali I2C [9] Odczyt słowa danych z podaniem adresu odczytu Odczyt słowa danych (rys.40) musi być poprzedzony: sekwencją startu, zapisem adresu urządzenia (najmłodszy bit adresu jest logicznym 0, co oznacza operację zapisu) zapisem adresu danej. Po otrzymaniu potwierdzenia od pamięci EEPROM mikrokontroler generuje: kolejną sekwencję startu ponownie podaje adres urządzenia, tym razem jednak najmłodszy bit jest logiczną 1 (wybór operacji odczytu). Pamięć EEPROM potwierdza odbiór adresu urządzenia, po czym następuje odbiór słowa danych od pamięci EEPROM. Mikrokontroler nie potwierdza odbioru słowa danych, lecz generuje sekwencję stopu.

Rys 40. Odczyt słowa danych z podaniem adresu odczytu [9] Odczyt słowa danych spod ustalonego adresu Jeśli adres komórki pamięci został ustawiony w toku poprzedniej łączności, to w kolejno realizowanym odczycie (rys. 41) można pominąć proces wyboru adresu komórki pamięci. W takim przypadku odczyt rozpoczyna się sekwencją startu, następnie przesłaniem adresu urządzenia z najmłodszym bitem ustawionym w stan logicznej 1, po czym następuje odbiór słowa danych. Odbiór danej nie jest potwierdzany przez mikrokontroler, który zamiast potwierdzenia generuje sekwencję stopu. Rys. 41.Odczyt słowa danych spod ustalonego adresu [9] Odczyt dowolnej liczby słów danych Początek transmisji (rys.42) jest taki sam, jak podczas odczytu jednego słowa danych. Po otrzymaniu słowa danych od pamięci mikrokontroler potwierdza logicznym 0. Dopóki mikrokontroler potwierdza odbiór, pamięć EEPROM wysyła kolejne słowa inkrementując sprzętowo adres pobierania danych. Po osiągnięciu adresu ostatniej komórki pamięci adres zeruje się i kolejny odczyt następuje spod adresu zerowego pamięci EEPROM. Zakończenie odczytu następuje, jeśli mikrokontroler nie potwierdzi odbioru kolejnego słowa, lecz wygeneruje sekwencję stopu.

Rys.42. Odczyt dowolnej liczby słów danych [9]

20. Magistrala 1-wire Magistrala 1-wire składa się z pojedynczej linii. Na magistrali 1-wire jedno urządzenie MASTER nadzoruje pracę jednego lub wielu urządzeń SLAVE. Urządzenie MASTER oraz wszystkie SLAVE są podłączone do magistrali wyjściem tranzystora otwarty dren lub bramką trójstanową. Takie podłączenie umożliwia zwolnienie linii przez każde z urządzeń po zakończeniu transmisji. Magistrala 1-wire wymaga zewnętrznego rezystora podciągającego do zasilania o wartości około 5kΩ. Stanem bezczynnym magistrali jest stan wysoki. Układ DS18B20 jest zawsze urządzeniem typu SLAVE. Wszystkie komendy i dane są nadawane do DS18B20 po magistrali począwszy od najmłodszego bitu. Rys.43. Impuls resetu i obecności [8] Sekwencja inicjalizacji Komunikacja po magistrali 1-wire rozpoczyna się od sekwencji inicjalizacji, która składa się z impulsu resetu (rys.43) nadawanego przez urządzenie MASTER (mikrokontroler) potwierdzanego impulsem obecności przez urządzenie SLAVE (termometr DS18B20). W czasie impulsu resetu MASTER zwiera magistralę do masy na czas co najmniej 480 µs. Po tym czasie MASTER zwalnia magistralę, która wskutek podciągnięcia rezystorem 5k przechodzi w stan wysoki. DS18B20 dokonuje detekcji zbocza narastającego, czeka 15 60 µs, po czym nadaje impuls obecności zwierając magistralę do masy na czas 60 240 µs. Ramka nadawcza Nadawanie stanów logicznych 0 i 1 przez urządzenie MASTER odbywa się w ramkach czasowych (rys.44). Każda ramka czasowa trwa co najmniej 60 µs, z odstępem między ramkami co najmniej 1µs. Ramki obu stanów logicznych rozpoczynają się od zbocza opadającego. Nadanie stanu logicznej 1 polega na zwarciu magistrali do zera przez urządzenie MASTER na czas 15 µs, a następnie zwolnieniu magistrali. Po zwolnieniu rezystor podciągający 5k przywróci magistrali stan logicznej 1. Nadanie stanu logicznego 0 polega na zwarciu magistrali do zera przez urządzenie MASTER i podtrzymanie tego stanu przez czas co najmniej 60 µs. DS18B20 próbkuje magistralę w czasie od 15 do 60 µs licząc od zbocza opadającego rozpoczynającego stan logiczny. Jeśli odczytany stan jest wysoki DS18B20 rozpoznaje logiczną 1, jeśli odczytany stan jest niski DS18B20 rozpoznaje logiczne0.