<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Krzysztof Wesołowski &#187; ds1338</title>
	<atom:link href="http://kwesoly.net/tag/ds1338/feed/" rel="self" type="application/rss+xml" />
	<link>http://kwesoly.net</link>
	<description>Programowanie, elektronika, automatyka - doświadczenia i projekty</description>
	<lastBuildDate>Wed, 07 Sep 2011 14:03:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Obsługa interfejsu I2C/TWI w mikrokontrolerach AVR na przykładzie DS1338</title>
		<link>http://kwesoly.net/programowanie/avr/obsluga-twi-i2c-ds1338-avr/</link>
		<comments>http://kwesoly.net/programowanie/avr/obsluga-twi-i2c-ds1338-avr/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 18:44:00 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[AVR]]></category>
		<category><![CDATA[ds1338]]></category>
		<category><![CDATA[i2c]]></category>
		<category><![CDATA[RTC]]></category>
		<category><![CDATA[twi]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=385</guid>
		<description><![CDATA[Interfejs TWI/I2C To dwa określenia dotyczące tej samej magistrali. Jej twórcą była firma PHILIPS, która do teraz jest właścicielem znaku handlowego I2C. Dlatego też inne implementacje tego standardu są często określane w inny sposób - np.  Atmel nazywa ten interfejs TWI. Na połączenie składają się dwie linie, zegarowa (oznaczana najczęściej SCK/SCL) i danych (oznaczana SDA), [...]]]></description>
			<content:encoded><![CDATA[<h3>Interfejs TWI/I2C</h3>
<p>To dwa określenia dotyczące tej samej magistrali. Jej twórcą była firma PHILIPS, która do teraz jest właścicielem znaku handlowego I2C. Dlatego też inne implementacje tego standardu są często określane w inny sposób - np.  Atmel nazywa ten interfejs TWI. Na połączenie składają się dwie linie, zegarowa (oznaczana najczęściej SCK/SCL) i danych (oznaczana SDA), łącząca wszystkie urządzenia na danej magistrali. Więcej o samym sposobie działania i podłączania można przeczytać w internecie.</p>
<h3>Obsługa interfejsu I2C w mikrokontrolerach AVR</h3>
<p>Zakładam, że korzystamy z mikrokontrolera posiadającego sprzętowe wsparcie dla tego interfejsu. Pozwala nam to obsługiwać ten interfejs na poziomie bajtów, z prędkościami nieosiągalnymi przy emulacji za pomocą zmian stanów portów (bitbang). Przykład, który tutaj zamieszczam został sprawdzony na uC ATmega8, jednak powinien być w pełni przenośny na każdy mikrokontroler AVR ze sprzętowym wsparciem I2C.</p>
<p><span id="more-385"></span></p>
<p>Program obsługuje zegar czasu rzeczywistego <a href="http://datasheets.maxim-ic.com/en/ds/DS1338-DS1338Z.pdf">Maxim/Dallas,DS1338</a>. Ze względu na stosunkowo rzadkie odczyty zrezygnowałem z trudniejszej obsługi za pomocą przerwań - odczyty i zapisy blokują pracę mikrokontrolera. Obsługę podzielono na dwa fragmenty:</p>
<ul>
<li>twi_basics.c, twi_basics.h, zawierające funkcje odnoszące się bezpośrednio do rejestrów kontrolnych (TWCR) i danych (TWDR) oraz oczekujące na ukończenie operacji.</li>
<li>ds1338.c,ds1338.h, zawierające funkcje do bezpośredniej obsługi podłączonego zegara, odczyt/zapis czasu, wykorzystanie pozostałych 56bajtów NVRAM.</li>
</ul>
<p>Cała obsługa sprawdza wartości zwracane przez magistralę i informuje o wyniku operacji za pomocą kodów błędu zdefiniowanych w plikach nagłówkowych. Ułatwia to znajdowanie ewentualnych problemów,  nie eliminuje niestety wszystkich możliwych problemów.</p>
<p>Obsługę innych urządzeń można łatwo skonstruować korzystając z funkcji zawartych w twi_basics, dodając tylko interfejs do danego układu. Dla wielu urządzeń istniejąca biblioteka ds1338 będzie wymagała tylko niewielkich zmian, gdyż filozofia dostępu do danych jest identyczna.</p>
<p>Do samych plików dołączam przykład ilustrujący działaniem wystarczający do zrozumienia jej wykorzystania. Zachęcam do samodzielnego studiowania źródeł, zarówno tych jak i innych spotykanych w internecie, w celu lepszego zrozumienia problemu.</p>
<p>Załącznik:</p>
<p><a href="http://download.kwesoly.net/2009/09/ds1338_lib.zip">Biblioteka DS1338, oparta o TWI</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/avr/obsluga-twi-i2c-ds1338-avr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

