<?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; AVR</title>
	<atom:link href="http://kwesoly.net/kategoria/programowanie/avr/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>
		<item>
		<title>Usuwanie nieużywanych funkcji z programu</title>
		<link>http://kwesoly.net/programowanie/avr/usuwanie-nieuzywanych-funkcji-z-programu/</link>
		<comments>http://kwesoly.net/programowanie/avr/usuwanie-nieuzywanych-funkcji-z-programu/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 18:37:05 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[AVR]]></category>
		<category><![CDATA[język C]]></category>
		<category><![CDATA[kompilacja]]></category>
		<category><![CDATA[linkowanie]]></category>
		<category><![CDATA[optymalizacja]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=380</guid>
		<description><![CDATA[W trakcie tworzenia biblioteki do obsługi wyświetlacza 7 segmentowego (7 segmentów+kropka) doszedłem do wniosku,  że  najbardziej eleganckie rozwiązanie to stworzenie osobnego pliku C dla tej biblioteki, wraz z nagłówkami z prototypami funkcji jak i z konfiguracją. Niestety napisanie kilku funkcji ustawiających liczbę na wyświetlaczu spowodowało znaczny rozrost programu - nieużywane funkcje, często bardzo obszerne, trafiły [...]]]></description>
			<content:encoded><![CDATA[<p>W trakcie tworzenia biblioteki do obsługi wyświetlacza 7 segmentowego (7 segmentów+kropka) doszedłem do wniosku,  że  najbardziej eleganckie rozwiązanie to stworzenie osobnego pliku C dla tej biblioteki, wraz z nagłówkami z prototypami funkcji jak i z konfiguracją. Niestety napisanie kilku funkcji ustawiających liczbę na wyświetlaczu spowodowało znaczny rozrost programu - nieużywane funkcje, często bardzo obszerne, trafiły do pliku *.o a następnie do wygenerowanego HEXa zajmując miejsce, pomimo iż nie wszystkie były używane.</p>
<p>Po przetrząśnięciu kawałka internetu znalazłem rozwiązanie, którego efekty są naprawdę znaczące (usunięcie zbędnych funkcji potrafi zaoszczędzić dużo miejsca gdy korzystamy z bibliotek zawierających funkcje na każdą okazję), i w związku z tym warte powtórzenia w wielu innych programach - pozwoli to uniknąć ręcznego usuwania nieużywanego kodu z "biblioteki".</p>
<p><span id="more-380"></span></p>
<h3>Ustawienie kompilatora</h3>
<div id="attachment_381" class="wp-caption alignright" style="width: 310px"><a href="http://download.kwesoly.net/2009/08/project_properties-ffunctions.JPG"><img class="size-medium wp-image-381 " title="Okno Project Properties z dodanym poleceniem ffunctions-sections" src="http://download.kwesoly.net/2009/08/project_properties-ffunctions-300x198.jpg" alt="Okno Project Properties z dodanym poleceniem ffunctions-sections" width="300" height="198" /></a><p class="wp-caption-text">Okno Project Properties z dodanym poleceniem ffunctions-sections</p></div>
<p>Aby móc usuwać nieużywane funkcje, muszą one w pliku wynikowym kompilatora być odrębnymi częściami. Zachowanie takie wymusza dodatkowy argument w poleceniu kompilatora:</p>
<pre>-ffunction-sections</pre>
<p>Dodanie takiej komendy w projekcie przy użyciu Makefile:</p>
<pre>
<pre>CFLAGS += -ffunction-sections</pre>
</pre>
<p>Przy korzystaniu z <a href="http://kwesoly.net/programowanie/avr/eclipse-winavr-avrstudio-debuger/">Środowiska Eclipse dla AVR </a>należy z kolei polecenie dodać w ustawieniach projektu.</p>
<p>Z menu Eclipse wybieramy Project -&gt; Properties,<br />
następnie odnajdujemy C/C++ build -&gt; Settings.<br />
I przy wybranym configu Release, w zakładce Tool Settings wybieramy Optimizations z zakładki AVR Compiler. W polu Other Optimizations flag dopisujemy nasze "-ffunction-sections"</p>
<h3>Ustawienia linkera</h3>
<div id="attachment_382" class="wp-caption alignright" style="width: 310px"><a href="http://download.kwesoly.net/2009/08/project_properties-gc-sections.JPG"><img class="size-medium wp-image-382  " title="Okno Project Properties z dodanym poleceniem gc-sections" src="http://download.kwesoly.net/2009/08/project_properties-gc-sections-300x198.jpg" alt="Ustawienia projektu - włączenie gc-sections" width="300" height="198" /></a><p class="wp-caption-text">Okno Project Properties z dodanym poleceniem gc-sections</p></div>
<p>Poprzednio dodane polecenie umieści każdą funkcję w osobnej części pamięci - sekcji. Teraz pozostaje poinformowanie linkera, iż sekcje nie używane mają zostać usunięte - umożliwia to polecenie przekazane do linkera -gc-sections (gc od garbage collector). Tego również można dokonać poprzez plik Makefile lub ustawienia projektu.</p>
<p>Dla Makefile wystarczająca modyfikacja to</p>
<pre>-Wl,-gc-sections</pre>
<p>Z kolei w Eclipse będąc już w Project -&gt; Properties-&gt; C/C++ build -&gt; Settings -&gt;(Release) Wchodzimy w zakładkę AVR C Linker-&gt;General, i dodajemy polecenie "-Wl,-gc-sections"</p>
<p>U mnie taka modyfikacja ustawień pozwoliła na przykład usunąć jedyną funkcję używającą arytmetyki zmiennoprzecinkowej, zamieniając 2,5kB programu w 600bajtów.</p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/avr/usuwanie-nieuzywanych-funkcji-z-programu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Prosta aplikacja układu FT232R firmy FTDI</title>
		<link>http://kwesoly.net/programowanie/avr/aplikacja-ukladu-ft232r-ftdi/</link>
		<comments>http://kwesoly.net/programowanie/avr/aplikacja-ukladu-ft232r-ftdi/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 21:00:49 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[AVR]]></category>
		<category><![CDATA[Elektronika]]></category>
		<category><![CDATA[com]]></category>
		<category><![CDATA[ft232rl]]></category>
		<category><![CDATA[rs232]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=361</guid>
		<description><![CDATA[Po co taki układ? Kiedy próbujemy stworzyć oprogramowanie na uC stajemy często przed problemem wymiany danych z naszym komputerem PC.  Sposobów na połączenie własnego układu z komputerem PC jest przynajmniej kilka: Port LPT Możliwość niezależnego manipulowania bitami sprawia że to jedno z najprostszych rozwiązań. Poza zwykłym równoległym przekazywaniem informacji można również emulować interfejsy szeregowe. Obecnie [...]]]></description>
			<content:encoded><![CDATA[<h3>Po co taki układ?</h3>
<p>Kiedy próbujemy stworzyć oprogramowanie na uC stajemy często przed problemem wymiany danych z naszym komputerem PC.  Sposobów na połączenie własnego układu z komputerem PC jest przynajmniej kilka:</p>
<ul>
<li>Port LPT<br />
Możliwość niezależnego manipulowania bitami sprawia że to jedno z najprostszych rozwiązań. Poza zwykłym równoległym przekazywaniem informacji można również emulować interfejsy szeregowe. Obecnie laptopy bardzo rzadko posiadają taki interfejs, a nawet jeśli, są to często modele droższe od powszechnie spotykanych.</li>
<li>Port COM</li>
<li> Powszechny interfejs szeregowy. Poza podstawowymi liniami służącymi do transmisji i odbioru danych zawiera też linie sterujące przepływem danych. Pod względem sposobu transmisji do komunikacji wystarczy połączenie naprzemiennie sygnałów Tx&lt;-&gt;Rx portu COM i mikrokontrolera. Niestety, w warstwie fizycznej całkiem inne poziomy napięć nie pozwalają na takie połączenie. Powstało wiele układów służących do konwersji napięć między poziomem uC a portu COM. Często więc na płytce montowało/montuje się po prostu MAX232 do konwersji napięć podpięty pod odpowiednie nóżki mikroprocesora, i łączony z portem COM komputera. Stety/niestety porty COM też należą już do laptopowej rzadkości. Rozwiązanie polegające na używaniu przejściówek USB&lt;-&gt;COM wraz z takimi układami jest często spotykane, pomimo wiążącego się z tym narzutu - dwukrotna konwersja napięć nie ma sensu.<br />
<span id="more-361"></span></li>
<li>Port USB<br />
Jeśli odrzucimy to czego w laptopie nie ma, i zrezygnujemy z przejściówek pozostaje nam po prostu użycie portu  USB, który zadomowił się w komputerach już na dobre.  Tutaj też mamy kilka możliwości:</p>
<ul>
<li>Emulacja interfejsu USB za pomocą uC.<br />
Niestety programowa realizacja interfejsu USB utrudnia wykonywanie innych zadań, dlatego maksymalna wydajność takiego rozwiązania nie jest oszałamiająca. Mikro kontroler musiałby zajmować się wyłącznie obsługą USB, lub zrezygnować z wykonywanych przez siebie czynności. Urządzenia tak działające często komunikują się programowo z USB i np. przesyłają dane dalej przez wspierane sprzętowo interfejsy (np. UART, SPI)</li>
<li>Wykorzystanie specjalizowanego układu<br />
Sama firma FTDI produkuje kilka układów umożliwiających komunikacje za pomocą UART, użytym rozwiązaniem jest najprostszy z nich FT232RL. Umożliwia on w pełni sprzętowe przejście USB&lt;-&gt;UART, wraz z dodatkowymi liniami (sterującymi przepływem, pochodzącymi z portu COM) oraz dodatkowymi 4 portami, które można zastosować jako dowolne wejścia wyjścia. Układ posiada również bardzo dobre wsparcie producenta: sterowniki pod większość systemów operacyjnych, biblioteki ułatwiające programowanie komunikacji czy też przykłady zastosować w nocie katalogowej (możliwe aplikacje układu). Poza przedstawionym tutaj zastosowaniem istnieje wiele wiele innych - wystarczy przejrzeć dokumentacje: na <a href="http://www.ftdichip.com/Documents/DataSheets/DS_FT232R.pdf">http://www.ftdichip.com/Documents/DataSheets/DS_FT232R.pdf</a></li>
</ul>
</li>
</ul>
<h3>Wykonany układ</h3>
<p>Opierając się właśnie na wspomnianych notach aplikacyjnych, i materiałach samemu przejrzanych jak i konsultacjach z bardziej doświadczonymi kolegami, zaprojektowałam układ będący interfejsem Komputer PC &lt;-&gt; mikrokontroler. Główne zalety wykonanego urządzenia:</p>
<ul>
<li>Sprzętowy, niezawodny i wydajny interfejs.</li>
<li>Współpraca z urządzeniami zasilanymi praktycznie dowolnym napięciem - za pomocą zworki do wyboru 3.3 jak i 5 volt, ewentualnie możliwość podpięcia własnego napięcia VCCIO do układu.</li>
<li>Dodatkowe 4 porty GPIO, które można kontrolować z poziomu aplikacji pisanych z wykorzystaniem bibliotek dostarczonych przez FTDI.</li>
<li>Dodatkowe wyprowadzenia zasilania, poza wspólną masą dodatkowo 2 linie 3.3V o łącznej wydajności prądowej 50mA i 6 linii 5V pochodzących z portu USB o wydajności ograniczonej komputerem/standardem USB - w moim przypadku komputer jest w stanie dostarczyć tyle prądu, limitem jest więc standardowe 500mA.</li>
<li>Sygnalizacja transmisji jak i poprawnego zasilania za pomocą diod LED.</li>
</ul>
<p>Poniżej kilka zdjęć wykonanego układu:</p>

<a href='http://kwesoly.net/programowanie/avr/aplikacja-ukladu-ft232r-ftdi/attachment/usb2uart_01/' title='usb2uart_01'><img width="150" height="150" src="http://download.kwesoly.net/2009/08/usb2uart_01-150x150.jpg" class="attachment-thumbnail" alt="usb2uart_01" title="usb2uart_01" /></a>
<a href='http://kwesoly.net/programowanie/avr/aplikacja-ukladu-ft232r-ftdi/attachment/usb2uart_02/' title='usb2uart_02'><img width="150" height="150" src="http://download.kwesoly.net/2009/08/usb2uart_02-150x150.jpg" class="attachment-thumbnail" alt="usb2uart_02" title="usb2uart_02" /></a>
<a href='http://kwesoly.net/programowanie/avr/aplikacja-ukladu-ft232r-ftdi/attachment/usb2uart_03/' title='usb2uart_03'><img width="150" height="150" src="http://download.kwesoly.net/2009/08/usb2uart_03-150x150.jpg" class="attachment-thumbnail" alt="usb2uart_03" title="usb2uart_03" /></a>

<p>Oraz schemat urządzenia:</p>
<p><a href="http://download.kwesoly.net/2009/08/usb2uart-schemat.pdf">usb2uart-schemat</a></p>
<p>Układ przynajmniej pod względem poprawności połączeń i transmisji UART przetestowany wraz z prezentowanym poprzednio mikrokontrolerem.</p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/avr/aplikacja-ukladu-ft232r-ftdi/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Prosta płytka prototypowa dla ATmega162</title>
		<link>http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/</link>
		<comments>http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 01:25:14 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[AVR]]></category>
		<category><![CDATA[Elektronika]]></category>
		<category><![CDATA[Atmega]]></category>
		<category><![CDATA[prototypowa]]></category>
		<category><![CDATA[zestaw testowy]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=353</guid>
		<description><![CDATA[Jakiś czas temu opisałem proces konfiguracji środowiska Eclipse + WinAVR + AVRStudio Debuger Jako, że tematyka tych małych i tanich procesorów wciąż jest dla mnie interesująca zamieszczam schemat i wzór płytki PCB oraz opisu dla małego urządzenia, które wykonałem w ostatnim czasie. Na początek kilka zdjęć finalnej wersji płytki: Płytka umożliwia proste budowanie układów dzięki [...]]]></description>
			<content:encoded><![CDATA[<p id="posttitle">Jakiś czas temu opisałem proces konfiguracji środowiska <a title="Stały link: Eclipse + WinAVR + AVRStudio Debuger" rel="bookmark" href="../programowanie/avr/eclipse-winavr-avrstudio-debuger/">Eclipse + WinAVR + AVRStudio Debuger</a></p>
<p>Jako, że tematyka tych małych i tanich procesorów wciąż jest dla mnie interesująca zamieszczam schemat i wzór płytki PCB oraz opisu dla małego urządzenia, które wykonałem w ostatnim czasie.</p>
<p>Na początek kilka zdjęć finalnej wersji płytki:</p>

<a href='http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/attachment/atmega162_01/' title='ATmega162_01'><img width="150" height="150" src="http://download.kwesoly.net/2009/07/ATmega162_01-150x150.jpg" class="attachment-thumbnail" alt="ATmega162_01" title="ATmega162_01" /></a>
<a href='http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/attachment/atmega162_02/' title='ATmega162_02'><img width="150" height="150" src="http://download.kwesoly.net/2009/07/ATmega162_02-150x150.jpg" class="attachment-thumbnail" alt="ATmega162_02" title="ATmega162_02" /></a>
<a href='http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/attachment/atmega162_03/' title='ATmega162_03'><img width="150" height="150" src="http://download.kwesoly.net/2009/07/ATmega162_03-150x150.jpg" class="attachment-thumbnail" alt="ATmega162_03" title="ATmega162_03" /></a>
<a href='http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/attachment/atmega162_04/' title='ATmega162_04'><img width="150" height="150" src="http://download.kwesoly.net/2009/07/ATmega162_04-150x150.jpg" class="attachment-thumbnail" alt="ATmega162_04" title="ATmega162_04" /></a>
<a href='http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/attachment/atmega162_05/' title='ATmega162_05'><img width="150" height="150" src="http://download.kwesoly.net/2009/07/ATmega162_05-150x150.jpg" class="attachment-thumbnail" alt="ATmega162_05" title="ATmega162_05" /></a>
<a href='http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/attachment/atmega162_06/' title='ATmega162_06'><img width="150" height="150" src="http://download.kwesoly.net/2009/07/ATmega162_06-150x150.jpg" class="attachment-thumbnail" alt="ATmega162_06" title="ATmega162_06" /></a>

<p><span id="more-353"></span></p>
<p>Płytka umożliwia proste budowanie układów dzięki wyprowadzeniu wszystkich złącz na goldpiny. W przeciwieństwie jednak to prostych modułów rozprowadzających wszystkie nóżki na pary goldpinów, tutaj zintegrowano również podstawowe, przydatne funkcjonalności:</p>
<ul>
<li>Zintegrowany kwarc 16 MHz, pozwalający korzystać z największej teoretycznie możliwej prędkości tego mikro kontrolera.<br />
Za pomocą fusebitów możemy ten zegar podzielić przez 8 lub też z niego zrezygnować na rzecz wewnętrznego generatora RC.</li>
<li>Zintegrowany kwarc 32768Hz, wpięty do pinów przeznaczonych na taki kwarc/służących jako zwykłe IO.<br />
Podwójny Dipswitch umożliwia jego odcięcie w przypadku chęci skorzystania raczej z portu IO.</li>
<li>Wyprowadzone złącze do ISP, 10 pinowa zgodne z standardem KANDA. Zamiast zwykłych goldpinów zastosowano Gniazdo, co ułatwia poprawne wpięcie programatora.</li>
<li>Wyprowadzono 10 pinowe złącze JTAG, zgodne z JTAG ICE.</li>
<li>Przycisk umożliwiający ręczne zresetowanie procesora.</li>
<li>I oczywiście zasilanie wraz z kondensatorami.</li>
</ul>
<p>Do wpisu załączam schemat, w razie potrzeby proszę o kontakt mailowy- podeślę  pozostałe pliki.</p>
<p><a href="http://download.kwesoly.net/2009/07/ATmega162-Devboard-schematic.pdf">Schemat płytki prototypowej</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/avr/prosta-plytka-prototypowa-dla-atmega162/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Zintegrowany sterownik silników krokowych A3977</title>
		<link>http://kwesoly.net/programowanie/avr/zintegrowany-sterownik-silnikow-krokowych-a3977/</link>
		<comments>http://kwesoly.net/programowanie/avr/zintegrowany-sterownik-silnikow-krokowych-a3977/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 09:00:45 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[AVR]]></category>
		<category><![CDATA[krokowy]]></category>
		<category><![CDATA[microstepping]]></category>
		<category><![CDATA[silnik]]></category>
		<category><![CDATA[sterowanie]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=342</guid>
		<description><![CDATA[W ramach chęci rozwinięcia ciekawych umiejętności i podniesienia oceny powstał niedawno artykuł/referat na temat wymienionego w tytule układu. Na jego podstawie Jakub Tutro zbudował sterownik, do którego wspólnie napisaliśmy program testowy. Zamieszam go, gdyż zawiera wiele ciekawych informacji na temat ogólnej idei sterowania takimi silnikami . Silniki_krokowe - pobierz]]></description>
			<content:encoded><![CDATA[<p>W ramach chęci rozwinięcia ciekawych umiejętności i podniesienia oceny powstał niedawno artykuł/referat na temat wymienionego w tytule układu. Na jego podstawie Jakub Tutro zbudował sterownik, do którego wspólnie napisaliśmy program testowy. Zamieszam go, gdyż zawiera wiele ciekawych informacji na temat ogólnej idei sterowania takimi silnikami .</p>
<p><a href="http://download.kwesoly.net/2009/06/silniki_krokowe.pdf">Silniki_krokowe - pobierz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/avr/zintegrowany-sterownik-silnikow-krokowych-a3977/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse + WinAVR + AVRStudio Debuger</title>
		<link>http://kwesoly.net/programowanie/avr/eclipse-winavr-avrstudio-debuger/</link>
		<comments>http://kwesoly.net/programowanie/avr/eclipse-winavr-avrstudio-debuger/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 19:11:02 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[AVR]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[winAVR]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=313</guid>
		<description><![CDATA[Jako, że postanowiłem spróbować programowania w znanym mi języku, ale na całkiem innej platformie - procesorach  AVR, postaram się opisać niektóre fragmenty moich doświadczeń. Dziś jedno z pierwszych - konfiguracja tytułowego zestawu. Używanie takiej konfiguracji upraszcza pracę, pozwalając przerzucić odpowiedzialność za plik makefile na środowisko programistyczne, co jest z reguły wygodniejsze i efektywniejsze niż ręczna [...]]]></description>
			<content:encoded><![CDATA[<p>Jako, że postanowiłem spróbować programowania w znanym mi języku, ale na całkiem innej platformie - procesorach  AVR, postaram się opisać niektóre fragmenty moich doświadczeń. Dziś jedno z pierwszych - konfiguracja tytułowego zestawu. Używanie takiej konfiguracji upraszcza pracę, pozwalając przerzucić odpowiedzialność za plik makefile na środowisko programistyczne, co jest z reguły wygodniejsze i efektywniejsze niż ręczna edycja. Poza tym korzystamy  z wygodnego edytora, ze znanymi już funkcjami, skrótami klawiszowymi etc.</p>
<h3>Instalacja WinAVR</h3>
<p>Pierwszą częścią zestawu, niezbędną w pracy będzie kompilator WinAVR, dostępny pod adresem <a href="http://winavr.sourceforge.net/">http://winavr.sourceforge.net/</a>. Nie będę się rozpisywał na jego temat, gdyż przekracza to zakres tego wpisu, w dodatku jest bardzo szeroko opisane w internecie. Sama strona pobierania WinAVR na SourceForge.net znajduje się <a title="Pobierz WinAVR" href="http://sourceforge.net/project/showfiles.php?group_id=68108">tutaj</a>.</p>
<p>W trakcie instalacji najlepiej nie zmieniać domyślnej ścieżki, i pozwolić na dopisanie jej do zmiennej systemowej PATH, zwłaszcza jeżeli nie używamy innych kompilatorów korzystających z make (jeśli używamy, warto skorzystać np. ze skryptu wsadowego do odpalania środowisk tak, aby zmienną PATH modyfikować dynamicznie, i zawsze odpalać właściwy make, gdyż często różne wersje dołączane do aplikacji nie są ze sobą kompatybilne). Jeśli zamierzamy używać Eclipse, warto odznaczyć również instalacje Programmers Notepada.</p>
<p>Po instalacji warto uruchomić ponownie komputer tak, aby dopiski do zmiennej PATH zaczęły działać.</p>
<p><span id="more-313"></span></p>
<h3>Instalacja i konfiguracja Eclipse</h3>
<p>Podstawowym  środowiskiem edycyjnym będzie Eclipse, wraz z narzędziami do programowania w języku C/C++ rozprowadzany jako Eclipse CDT. Jego instalacja jest prosta, opisałem ją zresztą jakiś czas temu <a title="Instalacja Eclipse CDT" href="http://kwesoly.net/programowanie/cpp/eclipse-cdt/">tutaj</a>.</p>
<p>Po zainstalowaniu Eclipse, będziemy potrzebowali jeszcze dodatkowej wtyczki, która ułatwia tworzenie projektów, zarządzanie nimi, pisanie kodu jak i jego kompilacje.</p>
<p>Wtyczka ta jest dostępna pod adresem <a title="AVR-Eclipse" href="http://avr-eclipse.sourceforge.net">http://avr-eclipse.sourceforge.net</a>, konkretnie na stronie <a title="Strona pobierania AVR Eclipse" href="http://avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download">pobierania</a>. Najprostsza droga instalacji to skorzystanie z menedżera pakietów dostępnego w Eclipse, ją tez krótko opiszę.</p>
<ol>
<li>Uruchamiamy Eclipse, ewentualnie tworzymy już nowy Workspace na projekty AVR.</li>
<li>Wybieramy z menu Help-&gt;Software Updates.</li>
<li>W zakładce Available Software wybieramy Add Site...</li>
<li>Wpisujemy/wklejamy adres znaleziony na stronie pobierania, w moim wypadku to <em>http://avr-eclipse.sourceforge.net/updatesite/.</em></li>
<li>Na liście, która prawdopodobnie automatycznie się rozwinie, zaznaczamy oba pola, czyli w praktyce całą stronę wklejoną wcześniej.</li>
<li>Klikamy Install, i po przejściu przez prostą procedurę instalacji w stylu Next, Accept, Next i zamknięciu okienka Software Updates nastąpi instalacja zakończona propozycją ponownego uruchomienia środowiska Eclipse.</li>
</ol>
<p>Po zakończeniu powyższych czynności dysponujemy już zarówno kompilatorem, jak i środowiskiem edycyjnym.</p>
<h3>Instalacja AVRStudio</h3>
<p>Pomimo wielu prób stworzenia symulatora z możliwością debugowania programów napisanych na mikrokontrolery, wciąż najlepszym rozwiązaniem (ze znanych mi w tej chwili) pozostaje oryginalny debugger zintegrowany z AVRStudio, pozwalający na symulację i debugowanie programów na uC AVR.</p>
<p>Pobierania AVR Studio należy rozpocząć tutaj: <a href="http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725">http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725</a>. Niestety, sam doświadczyłem niekompatybilności najnowszej wersji (4.15 przy poprzedniej instalacji), z moim system Windows XP sp3 PL, dlatego w razie problemów należy spróbować użyć innej wersji (4.14 zadziałała wtedy, 4.16 też już działa).</p>
<p>Samo pobieranie wymaga wyjątkowo denerwującej rejestracji- Atmel nie tworzy nam konta, tylko pyta o te same dane przy każdym pobieraniu. Dlatego nie warto skrupulatnie wypełniać rubryczek, zwłaszcza, że zawierają szczegółowe dane o naszej osobie.</p>
<p>Instalacja przebiega bezproblemowo, AVR Studio gotowy do pracy.</p>
<h3>Pierwszy projekt w Eclipse</h3>
<p>Utworzę teraz nowy projekt, oraz podpowiem jak go skonfigurować, aby możliwa była współpraca z ww debugerem. W tym celu uruchamiamy Eclipse, i wykonujemy nastepujące kroki:</p>
<ol>
<li>Z menu File-&gt;New wybieramy "C Project".</li>
<li>Uzupełniamy jego nazwę, i w Project Type wybieramy "AVR Cross Target Application".</li>
<li>Przechodzimy dalej (Automatycznie zaznaczył nam się jedyny dostępny Toolchain).</li>
<li>Na następnej stronie pozostawiamy zaznaczone obie konfiguracje, wchodzimy w Advanced Settings.</li>
<li>W zakładce AVR ustawiamy typ docelowego procesora, jego częstotliwość oraz ewentualnie konfigurujemy programator (opiszę to przy następnej okazji).</li>
<li>Wchodzimy w zakładkę "C/C++ build", w część Settings.</li>
<li>Widzimy teraz listę ustawień kompilatora, linkera etc, w dodatku możemy modyfikować ją dla obu konfiguracji kompilatora, wybierając Debug/Release u góry okna.</li>
<li>Aby debugować kod w AVR Studio potrzebujemy posiadać niezbędne informację w pliku elf, w tym celu w wyżej wymienionych ustawieniach, w sekcji Debugging, zarówno dla AVR Assembler jak i AVR Comiler ustawiamy Debug info format  na dwarf-2.</li>
<li>Akceptujemy wszystkie ustawienia klikając OK i przechodzimy do następnego etapu.</li>
<li>W następnym oknie ponownie wybieramy docelowy MCU oraz wpisujemy jego częstotliwość.</li>
</ol>
<p>Utworzony projekt jest pusty, dlatego musimy jeszcze dodać przynajmniej jeden plik źródłowy, klikając na File, New, C Source File i wypełniając go treścią. Ja wykorzystałem listing pochodzący z kursu programowania mikroprocesorów w C z czasopisma "Elektronika dla wszystkich":</p>
<pre>#include &lt;avr/io.h&gt;
#include &lt;util/delay.h&gt;

int main(void)
{
	DDRD=0x7c;
	for(;;)
	{
		PORTD=0x7c;
		_delay_loop_2(0xffff)
		PORTD=0;
		_delay_loop_2(0xffff);
	}
	return 0;
}</pre>
<p>Po zapisaniu pliku pozostaje zbudowanie pliku, za pomocą menu Project-&gt;Build.</p>
<p>W katalogu Debug, wewnątrz naszego projektu powstanie m.in. plik nazwaprojeku.elf, który można symulować wraz z podglądem źródeł w AVR Studio.</p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/avr/eclipse-winavr-avrstudio-debuger/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

