<?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>KVorb &#187; avr</title>
	<atom:link href="http://kvorb.ru/tag/avr/feed/" rel="self" type="application/rss+xml" />
	<link>http://kvorb.ru</link>
	<description>KVorb</description>
	<lastBuildDate>Sat, 25 Jun 2011 11:18:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Микроконтроллеры Atmel архитектуры AVR32 семейства АТ32UC3</title>
		<link>http://kvorb.ru/2010/05/13/mikrokontrollery-atmel-arxitektury-avr32-semejstva-at32uc3/</link>
		<comments>http://kvorb.ru/2010/05/13/mikrokontrollery-atmel-arxitektury-avr32-semejstva-at32uc3/#comments</comments>
		<pubDate>Thu, 13 May 2010 14:57:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Книги электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[микроконтроллеры]]></category>
		<category><![CDATA[Электроника]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=535</guid>
		<description><![CDATA[Предлагаемая книга является законченным справочным пособием и руководством по применению 32-разрядных микроконтроллеров архитектуры AVR32 фирмы Atmel семейства AT32UC3. Книга содержит подробную справочную информацию о большинстве выпускаемых в настоящее время устройств этого семейства. Помимо сведений справочного характера книга включает обширную информацию по программным инструментальным средствам разработки приложений для AT32UC3: IDE IAR Embedded Workbench for AVR32 от [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.ozon.ru/multimedia/books_covers/1001578689.jpg" alt="" /></p>
<p>Предлагаемая книга является законченным справочным пособием и руководством по применению 32-разрядных микроконтроллеров архитектуры AVR32 фирмы Atmel семейства AT32UC3.<br />
Книга содержит подробную справочную информацию о большинстве выпускаемых в настоящее время устройств этого семейства. Помимо сведений справочного характера книга включает обширную информацию по программным инструментальным средствам разработки приложений для AT32UC3: IDE IAR Embedded Workbench for AVR32 от IAR, IDE AVR32Studio от Atmel и аппаратным инструментальным средствам от Atmel. В книге также приводятся описания свободно распространяемых производителем примеров приложений для AT32UC3, протестированных автором.<br />
Изложенная в книге информация охватывает все этапы проектирования приложений на основе AT32UC3, что позволяет в короткие сроки овладеть навыками работы с этими микроконтроллерами даже начинающим разработчикам.<br />
<span id="more-535"></span>К книге прилагается DVD-диск, содержащий бесплатные демоверсии описанного в ней инструментального программного обеспечения, исходные коды описанных проектов, оригинальную справочную информацию производителя и другие информационные и справочные материалы.</p>
<p>Книга предназначена для специалистов в области разработки электронной аппаратуры, студентов технических вузов и других лиц, интересующихся электроникой. Необходимый уровень подготовки читателей предполагает знание основ цифровой и аналоговой схемотехники, а также основ программирования на языке С. </p>
<p><a href="http://www.ozon.ru/context/detail/id/5019083/?partner=kvorb&#038;from=bar">Купить на OZON.ru</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2010/05/13/mikrokontrollery-atmel-arxitektury-avr32-semejstva-at32uc3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Индикатор TIC107. Адресация.</title>
		<link>http://kvorb.ru/2010/02/21/indikator-tic107-adresaciya/</link>
		<comments>http://kvorb.ru/2010/02/21/indikator-tic107-adresaciya/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 10:48:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cтатьи]]></category>
		<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[I2C]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[TIC107]]></category>
		<category><![CDATA[микроконтроллеры]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=447</guid>
		<description><![CDATA[На рисунке карта памяти индикатора TIC107. Адреса первой строки 0&#215;00-0&#215;27. Второй 0&#215;40-0&#215;67. Видимая часть в первой строке 0&#215;00-0x0F, во второй 0&#215;40-0x4F. Функция переводящая указатель на нужный адрес. void LCD_Address&#40;char DDRAM&#41;&#123; StartI2C&#40;&#41;; WriteI2C&#40;0x74&#41;; // Адрес индикатора WriteI2C&#40;0b00000000&#41;; // Co=0, RS=0 WriteI2C&#40;0b00110100&#41;; // DL=1, M=1, SL=0, H=0 WriteI2C&#40;0b10000000 &#124; DDRAM&#41;; // Установка адреса DDRAM StopI2C&#40;&#41;; &#125; Пример [...]]]></description>
			<content:encoded><![CDATA[<p>На рисунке карта памяти индикатора TIC107.<br />
<a href="http://kvorb.ru/wp-content/uploads/2010/02/TIC107_DDRAM.jpg"><img src="http://kvorb.ru/wp-content/uploads/2010/02/TIC107_DDRAM.jpg" alt="" title="TIC107_DDRAM" width="569" height="154" class="alignnone size-full wp-image-448" /></a></p>
<p>Адреса первой строки 0&#215;00-0&#215;27. Второй 0&#215;40-0&#215;67. Видимая часть в первой строке 0&#215;00-0x0F, во второй 0&#215;40-0x4F.</p>
<p><span id="more-447"></span>Функция переводящая указатель на нужный адрес.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> LCD_Address<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> DDRAM<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	StartI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x74</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Адрес индикатора</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Co=0, RS=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00110100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// DL=1, M=1, SL=0, H=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b10000000</span> <span style="color: #339933;">|</span> DDRAM<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">// Установка адреса DDRAM </span>
	StopI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Пример использования.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	LCD_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Инициализация индикатора</span>
&nbsp;
	StartI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x74</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Адрес индикатора</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b01000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Co=0, RS=1</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'A'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// 'A' </span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'B'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// 'B'</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'C'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// 'C'</span>
	StopI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	LCD_Address<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x40</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Указатель на вторую строку</span>
&nbsp;
	StartI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x74</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Адрес индикатора</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b01000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Co=0, RS=1</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'1'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// '1' </span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'2'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// '2'</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'3'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// '3'</span>
	StopI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2010/02/21/indikator-tic107-adresaciya/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Пример работы с TIC107</title>
		<link>http://kvorb.ru/2010/02/13/primer-raboty-s-tic107/</link>
		<comments>http://kvorb.ru/2010/02/13/primer-raboty-s-tic107/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 13:50:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cтатьи]]></category>
		<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[I2C]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[TIC107]]></category>
		<category><![CDATA[микроконтроллеры]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=427</guid>
		<description><![CDATA[Стрелкой отмечен первый контакт (SCL). Схема подключения: 1 &#8211; SCL &#8211; i2c 2 &#8211; POR &#8211; сброс драйвера, сброс высоким уровнем, подключен напрямую к ноге микроконтроллёра 3 &#8211; SDA &#8211; i2c 4 &#8211; VDD1 &#8211; +5В 5 &#8211; VDD2/VDD3 &#8211; через диод 1N4148 к +5. Катодом (отмечен чёрной полоской) к VDD2/VDD3. 6 &#8211; VSS &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://kvorb.ru/wp-content/uploads/2010/02/tic107.jpg" alt="" title="TIC107" width="320" height="149" class="alignnone size-full wp-image-422" /></p>
<p>Стрелкой отмечен первый контакт (SCL).</p>
<p>Схема подключения:<br />
1 &#8211; SCL &#8211; i2c<br />
2 &#8211; POR &#8211; сброс драйвера, сброс высоким уровнем, подключен напрямую к ноге микроконтроллёра<br />
3 &#8211; SDA &#8211; i2c<br />
4 &#8211; VDD1 &#8211; +5В<br />
5 &#8211; VDD2/VDD3 &#8211; через диод 1N4148 к +5. Катодом (отмечен чёрной полоской) к VDD2/VDD3.<br />
6 &#8211; VSS &#8211; земля<br />
7 &#8211; VLCD &#8211; керамический конденсатор 0.1 мкФ на землю </p>
<p>SCL и SDA подтянуты резисторами 4.7 КОм к +5. Между VDD1 и VSS конденсатор 0.1 мкФ.</p>
<p><span id="more-427"></span>Для начала надо инициализировать индикатор.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> LCD_init<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	TRISC <span style="color: #339933;">=</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Порт на вывод</span>
	PORTC <span style="color: #339933;">=</span> <span style="color: #208080;">0xFF</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Сброс высоким уровнем</span>
	Delay1KTCYx<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Пауза</span>
	PORTC <span style="color: #339933;">=</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Низкий уровень</span>
	Delay1KTCYx<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Пауза</span>
&nbsp;
	StartI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x74</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Адрес индикатора</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Co=0, RS=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00110100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// DL=1, M=1, SL=0, H=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00001100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// D=1, C=0, B=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00000110</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// I/D=1, S=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00110101</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// DL=1, M=1, SL=0, H=1</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00000011</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// L=1</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00000100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// P=0, Q=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00001000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// IM=0, IB=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00010000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// TC1=0, TC2=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b01000010</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// S1=1, S0=0 (4x)</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b10000000</span> <span style="color: #339933;">|</span> <span style="color: #0000dd;">23</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">// V=0 (Va)</span>
	StopI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Функция устанавливающая адрес DDRAM, по которому будет выводиться следующий символ.<br />
Здесь 0&#215;40 &#8211; это адрес первого символа второй строки.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> LCD_Address<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	StartI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x74</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Адрес индикатора</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Co=0, RS=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b00110100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// DL=1, M=1, SL=0, H=0</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b10000000</span> <span style="color: #339933;">|</span> <span style="color: #208080;">0x40</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">// Установка адреса DDRAM </span>
	StopI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ну и простой пример. Настройка I2C делается отдельно, у меня в коде её нет.<br />
Инициализирую индикатор. Вывожу три символа в первой строке. Перевожу указатель на вторую строку. Вывожу ещё три символа</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	LCD_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Инициализация индикатора</span>
&nbsp;
	StartI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x74</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Адрес индикатора</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b01000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Co=0, RS=1</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'A'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// 'A' </span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'B'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// 'B'</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'C'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// 'C'</span>
	StopI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	LCD_Address<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Указатель на вторую строку</span>
&nbsp;
	StartI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x74</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #666666; font-style: italic;">// Адрес индикатора</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #208080;">0b01000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// Co=0, RS=1</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'1'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// '1' </span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'2'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// '2'</span>
	WriteI2C<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'3'</span><span style="color: #339933;">+</span><span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		<span style="color: #666666; font-style: italic;">// '3'</span>
	StopI2C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Есть особенности с кодовой таблицей. Так чтобы вывести латинские символы и цифры, к их коду надо прибавить 128. С кирилицей сложнее. Символы идут не по порядку и они там не все. Так нет символов &#8216;С&#8217;,'T&#8217; и других. Их приходится заменять латинскими. </p>
<p>Вот сама кодовая талица.<br />
<a href="http://kvorb.ru/wp-content/uploads/2010/02/TIC107_table1.jpg"><img src="http://kvorb.ru/wp-content/uploads/2010/02/TIC107_table1-234x300.jpg" alt="" title="TIC107_table" width="234" height="300" class="alignnone size-medium wp-image-424" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2010/02/13/primer-raboty-s-tic107/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>USB термометр.</title>
		<link>http://kvorb.ru/2010/01/08/usb-termometr/</link>
		<comments>http://kvorb.ru/2010/01/08/usb-termometr/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 09:00:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[LM75AD]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[микроконтроллеры]]></category>
		<category><![CDATA[термометр]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=399</guid>
		<description><![CDATA[Начал работать с микроконтроллёром PIC18F14K50. Похож на AtTiny2313. Но у него есть USB. Куча фирменных микрочиповских примеров. Вот собственно, что на нём можно сделать. USB термометр с датчиком LM75AD. Деталей минимум: подтягивающие резисторы на I2C, конденсаторы на питании и кварце, ну и сам кварц. Если делать плату двухстороннюю, то размер будет ещё меньше. Температура передаётся [...]]]></description>
			<content:encoded><![CDATA[<p>Начал работать с микроконтроллёром PIC18F14K50. Похож на AtTiny2313. Но у него есть USB. Куча фирменных микрочиповских примеров. Вот собственно, что на нём можно сделать.<br />
<a href="http://kvorb.ru/wp-content/uploads/2010/01/DSC_5816.jpg"><img class="alignnone size-medium wp-image-400" title="USB термометр" src="http://kvorb.ru/wp-content/uploads/2010/01/DSC_5816-300x130.jpg" alt="" width="300" height="130" /></a></p>
<p>USB термометр с датчиком LM75AD. Деталей минимум: подтягивающие резисторы на I2C, конденсаторы на питании и кварце, ну и сам кварц. Если делать плату двухстороннюю, то размер будет ещё меньше.</p>
<p>Температура передаётся текстом в виртуальный com порт. На этом сайте в статистике теперь будет температура у меня дома. Обновление раз в 10 минут.</p>
<p>Да и наверно полностью перейду на PIC. Всё, что мощнее AtMega8. А вот всякие Tiny13 и Tiny2313 выигрывают у пиков в цене.</p>
]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2010/01/08/usb-termometr/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Русская документация к AvrDude. Часть 1 в PDF.</title>
		<link>http://kvorb.ru/2009/10/23/russkaya-dokumentaciya-k-avrdude-chast-1-v-pdf/</link>
		<comments>http://kvorb.ru/2009/10/23/russkaya-dokumentaciya-k-avrdude-chast-1-v-pdf/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 16:17:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[avrdude]]></category>
		<category><![CDATA[микроконтроллеры]]></category>
		<category><![CDATA[программатор]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=380</guid>
		<description><![CDATA[Оформил свой перевод документации к AvrDude в PDF-файл. Это пока только первая часть. Опции командной строки и примеры использования. Качать тут.]]></description>
			<content:encoded><![CDATA[<p>Оформил свой перевод документации к AvrDude в PDF-файл.<br />
Это пока только первая часть. Опции командной строки и примеры использования.<br />
<a href="http://depositfiles.com/files/azg0eg246">Качать тут.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2009/10/23/russkaya-dokumentaciya-k-avrdude-chast-1-v-pdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перевернуть байт</title>
		<link>http://kvorb.ru/2009/08/19/367/</link>
		<comments>http://kvorb.ru/2009/08/19/367/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 14:11:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cтатьи]]></category>
		<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[микроконтроллеры]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=367</guid>
		<description><![CDATA[Есть задача перевернуть байт. Чтобы первый и последний биты поменялись местами, предпоследний и второй и т.д. Вот как это можно сделать. Первый вариант: x = &#40;x&#60;&#60;7&#41;&#124;&#40;&#40;x&#60;&#60;5&#41;&#38;64&#41;&#124;&#40;&#40;x&#60;&#60;3&#41;&#38;32&#41;&#124;&#40;&#40;x&#60;&#60;1&#41;&#38;16&#41; &#124;&#40;&#40;x&#62;&#62;1&#41;&#38;8&#41;&#124;&#40;&#40;x&#62;&#62;3&#41;&#38;4&#41;&#124;&#40;&#40;x&#62;&#62;5&#41;&#38;2&#41;&#124;&#40;x&#62;&#62;7&#41;; Вот такой код предложил cybersonner tmp = &#40;&#40;in &#38; 0x0F&#41; &#60;&#60; 4&#41; &#124; &#40;&#40;in &#38; 0xF0&#41; &#62;&#62; 4&#41;; tmp = &#40;&#40;tmp &#38; 0x33&#41; &#60;&#60; 2&#41; &#124; &#40;&#40;tmp &#38; [...]]]></description>
			<content:encoded><![CDATA[<p>Есть задача перевернуть байт. Чтобы первый и последний биты поменялись местами, предпоследний и второй и т.д.</p>
<p>Вот как это можно сделать. Первый вариант:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">x <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&lt;&lt;</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&lt;&lt;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span><span style="color: #0000dd;">64</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&lt;&lt;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span><span style="color: #0000dd;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&lt;&lt;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span><span style="color: #0000dd;">16</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">|</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&gt;&gt;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span><span style="color: #0000dd;">8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&gt;&gt;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&gt;&gt;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&gt;&gt;</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Вот такой код предложил <strong>cybersonner</strong></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">tmp <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>in <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0x0F</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>in <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0xF0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
tmp <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>tmp <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0x33</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>tmp <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0xCC</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
out <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>tmp <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0x55</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>tmp <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0xAA</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><span id="more-367"></span>Найдено в сети, <strong>33 такта</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">ldi   tmp1<span style="color: #339933;">,</span><span style="color: #0000dd;">40</span>
&nbsp;
loop<span style="color: #339933;">:</span>
   rol   tmp
   ror   tmp1
   brcc  loop
   mov   tmp<span style="color: #339933;">,</span>tmp1</pre></div></div>

<p>Еще вариант, <strong>13 тактов</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">ldi   tmp<span style="color: #339933;">,</span><span style="color: #0000dd;">40</span>
&nbsp;
mov   tmp1<span style="color: #339933;">,</span>tmp
andi  tmp1<span style="color: #339933;">,</span><span style="color: #208080;">0b01010101</span>
andi  tmp<span style="color: #339933;">,</span><span style="color: #208080;">0b10101010</span>
bst   tmp1<span style="color: #339933;">,</span><span style="color: #0000dd;">0</span>    
lsr   tmp1          
bld   tmp1<span style="color: #339933;">,</span><span style="color: #0000dd;">7</span>        
lsl   tmp           
adc   tmp<span style="color: #339933;">,</span>tmp1     
mov   tmp1<span style="color: #339933;">,</span>tmp     
andi  tmp1<span style="color: #339933;">,</span><span style="color: #208080;">0b01100110</span>
swap  tmp1         
andi  tmp<span style="color: #339933;">,</span> <span style="color: #208080;">0b10011001</span>
add   tmp<span style="color: #339933;">,</span> tmp1</pre></div></div>

<p>А вот это мой вариант.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">main<span style="color: #339933;">:</span>
ldi   temp<span style="color: #339933;">,</span><span style="color: #0000dd;">40</span>
&nbsp;
ldi   ZL<span style="color: #339933;">,</span>Low<span style="color: #009900;">&#40;</span>BYTES<span style="color: #339933;">*</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>
ldi   ZH<span style="color: #339933;">,</span>High<span style="color: #009900;">&#40;</span>BYTES<span style="color: #339933;">*</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>        
add   ZL<span style="color: #339933;">,</span>temp
lpm        
mov   temp<span style="color: #339933;">,</span>r0
rjmp  main
&nbsp;
BYTES<span style="color: #339933;">:</span>                    <span style="color: #339933;">;</span> Таблица перёрнутых байт
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x80</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x40</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x20</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x60</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE0</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x90</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x50</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x30</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x70</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF0</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x08</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x88</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x48</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x28</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x68</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE8</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x18</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x98</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x58</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x38</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB8</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x78</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF8</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x04</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x84</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x44</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x24</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x64</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE4</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x14</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x94</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x54</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x34</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB4</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x74</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF4</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x0C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCC</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xAC</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xEC</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x1C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xDC</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xBC</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7C</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFC</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x02</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x82</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x42</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x22</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x62</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE2</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x12</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x92</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x52</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x32</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x72</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF2</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x0A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCA</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xAA</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xEA</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x1A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xDA</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xBA</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7A</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFA</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x06</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x86</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x46</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x26</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x66</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE6</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x16</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x96</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x56</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x36</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB6</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x76</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF6</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x0E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCE</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xAE</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xEE</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x1E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xDE</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xBE</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7E</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFE</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x01</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x81</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x41</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x21</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x61</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE1</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x11</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x91</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x51</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x31</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB1</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x71</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF1</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x09</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x89</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x49</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x29</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x69</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE9</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x19</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x99</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x59</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x39</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB9</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x79</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF9</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x05</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x85</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x45</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x25</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x65</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE5</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x15</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x95</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x55</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x35</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB5</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x75</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF5</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x0D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCD</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xAD</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xED</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x1D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xDD</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xBD</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7D</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFD</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x03</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x83</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x43</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x23</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x63</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE3</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x13</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x93</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x53</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x33</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB3</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x73</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF3</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x0B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCB</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xAB</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xEB</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x1B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xDB</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xBB</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7B</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFB</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x07</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x87</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x47</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xC7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x27</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x67</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xE7</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x17</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x97</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x57</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xD7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x37</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xB7</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x77</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xF7</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x0F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x8F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x4F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x2F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xAF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x6F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xEF</span>
    .<span style="color: #202020;">db</span> <span style="color: #208080;">0x1F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x9F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x5F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xDF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x3F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xBF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x7F</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFF</span></pre></div></div>

<p>Тут все просто. Есть большая таблица с уже перевернутыми байтами. Просто выбираем из неё нужное значение. Места занимает много, зато работает за <strong>7 тактов</strong>.</p>
<p>Ну и напоследок чумовое решение. Соединить крестом два 8-ми битных порта:<br />
<strong>PD0 &#8211; PB7<br />
PD1 &#8211; PB6<br />
PD2 &#8211; PB5<br />
PD3 &#8211; PB4<br />
PD4 &#8211; PB3<br />
PD5 &#8211; PB2<br />
PD6 &#8211; PB1<br />
PD7 &#8211; PB0</strong></p>
<p>Посылаем в первый порт обычный байт, принимаем из второго перевернутый :-D</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">out   PORTB<span style="color: #339933;">,</span>temp
in    temp<span style="color: #339933;">,</span>PORTD</pre></div></div>

<p>Работает за <strong>2 такта</strong>! </p>
]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2009/08/19/367/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Конвертер UART 2 I2C</title>
		<link>http://kvorb.ru/2009/07/21/konverter-uart-2-i2c/</link>
		<comments>http://kvorb.ru/2009/07/21/konverter-uart-2-i2c/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 08:27:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cтатьи]]></category>
		<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[микроконтроллеры]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=346</guid>
		<description><![CDATA[Программа для микроконтроллера ATmega. Работает с модулем TWI. Пока возможна только запись данных в I2C, чтение сделаю в следующей версии. Все команды состоят из трёх символов. Выполняемое действие и два байта на данные в HEX, если они нужны. Основные команды: Sxx &#8211; установить состояние СТАРТ или ПОВСТАРТ на линии I2C. Вместо &#171;xx&#187; могут быть любые [...]]]></description>
			<content:encoded><![CDATA[<p>Программа для микроконтроллера ATmega. Работает с модулем TWI. Пока возможна только запись данных в I2C, чтение сделаю в следующей версии. Все команды состоят из трёх символов. Выполняемое действие и два байта на данные в HEX, если они нужны.<br />
Основные команды:<br />
<strong>Sxx</strong> &#8211; установить состояние СТАРТ или ПОВСТАРТ на линии I2C. Вместо &laquo;xx&raquo; могут быть любые символы.<br />
<strong>Pxx</strong> &#8211; установить состояние СТОП на линии I2C. Вместо &laquo;xx&raquo; могут быть любые символы.<br />
<strong>Axx</strong> &#8211; Отправка адреса ведомого устройства I2C. Вместо &laquo;xx&raquo; адрес устройства в HEX.<br />
<strong>Dxx</strong> &#8211; Отправка данных. Вместо &laquo;xx&raquo; байт данных в HEX.</p>
<p><strong>Bxx</strong> &#8211; Отправить байт данных в порт B микроконтроллера. Вместо &laquo;xx&raquo; байт данных в HEX.<br />
<span id="more-346"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Конвертер UART =&gt; I2C</span>
<span style="color: #666666; font-style: italic;">// Микроконтроллёр ATmega8</span>
<span style="color: #666666; font-style: italic;">// Частота 1 Мгц. </span>
<span style="color: #666666; font-style: italic;">// Автор KVorb. Версия программы 1.0</span>
<span style="color: #339933;">#include &quot;ioavr.h&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Счётчик принятых по UART байтов</span>
<span style="color: #666666; font-style: italic;">// Буфер для команд </span>
<span style="color: #993333;">char</span> UART_count <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span><span style="color: #339933;">*</span> UART_str <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;123&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> USART_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Инифиализация UART</span>
  <span style="color: #666666; font-style: italic;">// Битрейт 2400 бит в секунду, при частоте 1 МГц</span>
  UCSRA <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>                                
  UCSRB <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
  UCSRC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                        
  UCSRC <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>             
  UCSRC <span style="color: #339933;">-=</span> <span style="color: #0000dd;">128</span><span style="color: #339933;">;</span>                             
  UBRRH <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  UBRRL <span style="color: #339933;">=</span> <span style="color: #0000dd;">25</span><span style="color: #339933;">;</span>                               
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">char</span> CHAR_to_HEX<span style="color: #009900;">&#40;</span> <span style="color: #993333;">char</span> a <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Функция конвертирует символ в hex число</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// число больше или равно 48</span>
  <span style="color: #666666; font-style: italic;">// и меньше или равно 57 ('0'-'9' ASCII)</span>
  <span style="color: #666666; font-style: italic;">// получаю число от 0x00 до 0x09</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> a <span style="color: #339933;">&gt;=</span> <span style="color: #0000dd;">48</span> <span style="color: #339933;">&amp;&amp;</span> a <span style="color: #339933;">&lt;=</span> <span style="color: #0000dd;">57</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    a <span style="color: #339933;">-=</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// число больше или равно 65</span>
  <span style="color: #666666; font-style: italic;">// и меньше или равно 70 ('A'-'F' ASCII)</span>
  <span style="color: #666666; font-style: italic;">// получаю число от 0x0A до 0x0F</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> a <span style="color: #339933;">&gt;=</span> <span style="color: #0000dd;">65</span> <span style="color: #339933;">&amp;&amp;</span> a <span style="color: #339933;">&lt;=</span> <span style="color: #0000dd;">70</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    a <span style="color: #339933;">-=</span> <span style="color: #0000dd;">55</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> 
&nbsp;
  <span style="color: #b1b100;">return</span> a<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TWI_START<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Состояние СТАРТ на линии I2C</span>
  TWCR <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span> TWCR <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TWI_ADDR<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> temp<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Отправка адреса I2C</span>
  <span style="color: #666666; font-style: italic;">// Адрес в переменной temp</span>
  TWDR <span style="color: #339933;">=</span> temp<span style="color: #339933;">;</span>
  TWCR <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span> TWCR <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> temp<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Отправка байта данных I2C</span>
  <span style="color: #666666; font-style: italic;">// Данные в переменной temp</span>
  TWDR <span style="color: #339933;">=</span> temp<span style="color: #339933;">;</span>
  TWCR <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span> TWCR <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TWI_STOP<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Состояние СТОП на линии I2C</span>
  TWCR <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">char</span> STRING_to_HEX<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Функция конвертирует строку в число HEX</span>
  <span style="color: #993333;">char</span> temp<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Получаю первую цифру числа</span>
  <span style="color: #666666; font-style: italic;">// Умножаю её на 0х10, чтобы получить десятки</span>
  <span style="color: #666666; font-style: italic;">// Получаю вторую цифру и прибавляю её к десяткам</span>
  temp <span style="color: #339933;">=</span> CHAR_to_HEX<span style="color: #009900;">&#40;</span>UART_str<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  temp <span style="color: #339933;">*=</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">;</span>
  temp <span style="color: #339933;">+=</span> CHAR_to_HEX<span style="color: #009900;">&#40;</span>UART_str<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> temp<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Порт B все пины на выход</span>
  DDRB <span style="color: #339933;">=</span> <span style="color: #0000dd;">255</span><span style="color: #339933;">;</span>                     
&nbsp;
  <span style="color: #666666; font-style: italic;">// Fscl=25КГц</span>
  <span style="color: #666666; font-style: italic;">// Запускаю TWI</span>
  TWBR <span style="color: #339933;">=</span> <span style="color: #0000dd;">12</span><span style="color: #339933;">;</span>			        
  TWCR <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                     
&nbsp;
  <span style="color: #666666; font-style: italic;">// Инициализирую UART</span>
  USART_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        
&nbsp;
  <span style="color: #666666; font-style: italic;">// Разрешаю прерывания</span>
  SREG <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                     
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #339933;">#pragma vector = USART_RXC_vect</span>
__interrupt <span style="color: #993333;">void</span> Recieve<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Прерывание на приём по UART</span>
&nbsp;
  <span style="color: #993333;">char</span> t<span style="color: #339933;">;</span>
  <span style="color: #993333;">char</span><span style="color: #339933;">*</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 00 &quot;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Копирую в буфер принятый байт</span>
  <span style="color: #666666; font-style: italic;">// Увеличиваю счётчик принятых байтов</span>
  UART_str<span style="color: #009900;">&#91;</span>UART_count<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> UDR<span style="color: #339933;">;</span>         
  UART_count<span style="color: #339933;">++;</span>                       
&nbsp;
  <span style="color: #666666; font-style: italic;">// Если приняты все три байта, то выполняются функции обработки</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>UART_count <span style="color: #339933;">==</span> <span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span>                 
  <span style="color: #009900;">&#123;</span> 
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>UART_str<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'S'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>TWI_START<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>                
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>UART_str<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'A'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>TWI_ADDR<span style="color: #009900;">&#40;</span>STRING_to_HEX<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>    
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>UART_str<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'D'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>TWI_DATA<span style="color: #009900;">&#40;</span>STRING_to_HEX<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>UART_str<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'P'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>TWI_STOP<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>UART_str<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #ff0000;">'B'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>PORTB <span style="color: #339933;">=</span> STRING_to_HEX<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Вместо этого условия надо написать функцию</span>
    <span style="color: #666666; font-style: italic;">// Конвертирующую число в строку</span>
    <span style="color: #666666; font-style: italic;">// Сделаю в следующей версии :)</span>
    <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>TWSR<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
      <span style="color: #b1b100;">case</span> <span style="color: #208080;">0xF8</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; F8 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x08</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 08 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x10</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 10 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x18</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 18 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x20</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 20 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x28</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 28 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x30</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 30 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x38</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 38 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span> status <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot; 00 &quot;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Отправляю по UART код статуса TWI    </span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>t<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> t<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">4</span><span style="color: #339933;">;</span> t<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Жду когда очистится буфер отправки по UART    </span>
      <span style="color: #666666; font-style: italic;">// Отправляю статус</span>
      <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span> UCSRA <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>   
      UDR <span style="color: #339933;">=</span> status<span style="color: #009900;">&#91;</span>t<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>                
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Обнуляю счётчик принятых байтов</span>
    UART_count<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>                     
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2009/07/21/konverter-uart-2-i2c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ошибки в I2C. Решено.</title>
		<link>http://kvorb.ru/2009/07/20/oshibki-v-i2c/</link>
		<comments>http://kvorb.ru/2009/07/20/oshibki-v-i2c/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 12:40:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[микроконтроллеры]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=338</guid>
		<description><![CDATA[Столкнулся со странной проблемой при работе с I2C. Код прекрасно работающий в отладчике, отказывается работать в железе. Есть вот такой код TWI_START&#40;&#41;; // В TWSR код 0х08 - Было сформировано состояние СТАРТ &#160; TWI_ADDR&#40;0x74&#41;; // В TWSR код 0х18 - Был передан пакет SLA+W // и принято подтверждение (ACK) &#160; TWI_DATA&#40;0x00&#41;; // А вот при [...]]]></description>
			<content:encoded><![CDATA[<p>Столкнулся со странной проблемой при работе с I2C. Код прекрасно работающий в отладчике, отказывается работать в железе.<br />
<span id="more-338"></span><br />
Есть вот такой код</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">  TWI_START<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>       
<span style="color: #666666; font-style: italic;">// В TWSR код 0х08 - Было сформировано состояние СТАРТ</span>
&nbsp;
  TWI_ADDR<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x74</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #666666; font-style: italic;">// В TWSR код 0х18 - Был передан пакет SLA+W</span>
<span style="color: #666666; font-style: italic;">// и принято подтверждение (ACK)</span>
&nbsp;
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// А вот при передаче данных начинаются глюки..</span>
<span style="color: #666666; font-style: italic;">// В TWSR код 0х10 (ПОВСТАРТ) или 0х20 (ПОВСТАРТ+NACK) ??</span>
&nbsp;
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x34</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x0C</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x06</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x35</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x03</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x04</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x08</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x42</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x97</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  TWI_STOP<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Как и главное почему после передачи байта данных появляется статус как после передачи стартового пакета??<br />
Первый раз с таким сталкиваюсь. Тот же код, но на ассемблере работает прекрасно. Микроконтроллер и устройство с которым он связан исправны, проверял с прошивкой на ассемблере.</p>
<p>Код функций TWI</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> TWI_START<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// Формирую состояние старт</span>
<span style="color: #666666; font-style: italic;">// Жду когда установится флаг TWINT</span>
<span style="color: #666666; font-style: italic;">// Отправляю статус по UART</span>
  TWCR <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span> TWCR <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
  UDR <span style="color: #339933;">=</span> TWSR<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TWI_ADDR<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> temp<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// Загружаю адрес</span>
<span style="color: #666666; font-style: italic;">// Отправляю адрес</span>
<span style="color: #666666; font-style: italic;">// Жду когда установится флаг TWINT</span>
<span style="color: #666666; font-style: italic;">// Отправляю статус по UART</span>
  TWDR <span style="color: #339933;">=</span> temp<span style="color: #339933;">;</span>
  TWCR <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span> TWCR <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
  UDR <span style="color: #339933;">=</span> TWSR<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TWI_DATA<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> temp<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// Загружаю байт данных</span>
<span style="color: #666666; font-style: italic;">// Отправляю данные</span>
<span style="color: #666666; font-style: italic;">// Жду когда установится флаг TWINT</span>
<span style="color: #666666; font-style: italic;">// Отправляю статус по UART</span>
  TWDR <span style="color: #339933;">=</span> temp<span style="color: #339933;">;</span>
  TWCR <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span> TWCR <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
  UDR <span style="color: #339933;">=</span> TWSR<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TWI_STOP<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// Формирую состояние СТОП</span>
  TWCR <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Глупая ошибка была.. Надо поменять все &laquo;|=&raquo; на &laquo;=&raquo;. Первый раз писал на Си под AVR. Почему то решил, что надо так присваивать, в каком то исходнике увидел. :)</p>
<p> Код TWCR |= (1 << 7) | (1 << 2) в функции отправки данных устанавливал соответствующие биты в регистре TWCR, но при этом не обнулялись все остальные биты, в том числе и бит TWSTA отвечающий за старт и повстарт.</p>
<p>Следующим постом будет исходник конвертера UART -> I2C.</p>
]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2009/07/20/oshibki-v-i2c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Русская документация к AVRDUDE. Часть 2.</title>
		<link>http://kvorb.ru/2009/06/29/russkaya-dokumentaciya-k-avrdude-chast-2/</link>
		<comments>http://kvorb.ru/2009/06/29/russkaya-dokumentaciya-k-avrdude-chast-2/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 11:20:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cтатьи]]></category>
		<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[avrdude]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=303</guid>
		<description><![CDATA[Примеры использования AVRDUDE. Запись файла diag.hex в микроконтроллер ATmega128 используя программатор STK500: Считывание flash памяти из микроконтроллера ATmega128 с помощью программатора STK500 и сохранение данных в бинарный файл c:/diagflash.bin: Используя программатор по умолчанию, записать файл diag.hex в flash память, файл eeprom.hex в EEPROM память. Программирование расширенной, старшей и младшей конфигурационных ячеек в 0xFF, 0&#215;89 и [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Примеры использования AVRDUDE.</strong></p>
<p>Запись файла <span>diag</span>.<span>hex</span> в микроконтроллер <span>ATmega</span>128 используя программатор <span>STK</span>500:</p>
<p><span id="more-303"></span><a href="http://kvorb.ru/wp-content/uploads/2009/06/1.png"><img class="alignnone size-medium wp-image-304" title="avrdude" src="http://kvorb.ru/wp-content/uploads/2009/06/1-300x281.png" alt="avrdude" width="300" height="281" /></a></p>
<p>Считывание <span>flash</span> памяти из микроконтроллера <span>ATmega</span>128 с помощью программатора <span>STK</span>500 и сохранение данных в бинарный файл c:/<span>diag</span><span>flash</span>.<span>bin</span>:</p>
<p><a href="http://kvorb.ru/wp-content/uploads/2009/06/2.PNG"><img class="alignnone size-medium wp-image-305" title="avrdude" src="http://kvorb.ru/wp-content/uploads/2009/06/2-300x145.PNG" alt="avrdude" width="300" height="145" /></a></p>
<p>Используя программатор по умолчанию, записать файл <span>diag</span>.<span>hex</span> в <span>flash</span> память, файл <span>eeprom</span>.<span>hex</span> в <span>EEPROM</span> память. Программирование расширенной, старшей и младшей конфигурационных ячеек в 0<span>xFF</span>, 0&#215;89 и 0x2E соответственно:</p>
<p><a href="http://kvorb.ru/wp-content/uploads/2009/06/3.PNG"><img class="alignnone size-medium wp-image-306" title="avrdude" src="http://kvorb.ru/wp-content/uploads/2009/06/3-300x289.PNG" alt="avrdude" width="300" height="289" /></a></p>
<p>Подключение <span>JTAG</span> <span>ICE</span> <span>mkII</span> программатора к <span>USB</span> и включение терминального режима:</p>
<p><a href="http://kvorb.ru/wp-content/uploads/2009/06/4.PNG"><img class="alignnone size-medium wp-image-307" title="avrdude" src="http://kvorb.ru/wp-content/uploads/2009/06/4-300x105.PNG" alt="avrdude" width="300" height="105" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2009/06/29/russkaya-dokumentaciya-k-avrdude-chast-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Русская документация к AVRDUDE. Часть 1.</title>
		<link>http://kvorb.ru/2009/06/24/russkaya-dokumentaciya-k-avrdude-chast-1/</link>
		<comments>http://kvorb.ru/2009/06/24/russkaya-dokumentaciya-k-avrdude-chast-1/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 09:21:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cтатьи]]></category>
		<category><![CDATA[Электроника]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[avrdude]]></category>

		<guid isPermaLink="false">http://kvorb.ru/?p=292</guid>
		<description><![CDATA[2 Параметры командной строки. 2.1 Описание параметров AVRDUDE это инструмент командной строки, которые используются в следующем виде: avrdude -p partno options &#8230; Опции командной строки используются для контроля параметров запуска AVRDUDE. Используются следующие опции: -p partno Это единственный обязательный параметр, он указывает AVRDUDE тип микроконтроллера, который подключен к программатору. В partno параметром является краткий идентификатор [...]]]></description>
			<content:encoded><![CDATA[<p><strong>2 Параметры командной строки.</strong></p>
<p><strong>2.1 Описание параметров</strong></p>
<p><span>AVRDUDE</span> это инструмент командной строки, которые используются в следующем виде:<br />
<strong><span>avrdude</span> -p <span>partno</span> <span>options</span> &#8230;</strong><br />
Опции командной строки используются для контроля параметров запуска <span>AVRDUDE</span>.<br />
Используются следующие опции:</p>
<p><span id="more-292"></span><strong>-p <em><span>partno</span></em></strong></p>
<div style="margin-left: 40px;">Это единственный обязательный параметр, он указывает <span>AVRDUDE</span> тип микроконтроллера, который подключен к программатору. В <span>partno</span> параметром является краткий идентификатор указанный в конфигурационном файле. Укажите -p ? чтобы увидеть список возможных идентификаторов перечисленных в конфигурационном файле. Если микроконтроллер неизвестен <span>AVRDUDE</span>, это значит, что его нет в файле конфигурации, но вы можете самостоятельно его туда добавить, если у вас есть <span>datasheet</span> на этот микроконтроллер. Сейчас поддерживаются следующие типы микроконтроллеров:<br />
<br style="font-family: Courier New;" /></div>
<div style="margin-left: 40px; font-family: Courier New;">c128          <span>AT</span>90<span>CAN</span>128</div>
<div style="margin-left: 40px;"><span style="font-family: Courier New;"><span>pwm</span>2          <span>AT</span>90<span>PWM</span>2</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;"><span>pwm</span>3          <span>AT</span>90<span>PWM</span>3</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">1200          <span>AT</span>90S1200</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">2313          <span>AT</span>90S2313</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">2333          <span>AT</span>90S2333</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">2343          <span>AT</span>90S2343 (*)</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">4414          <span>AT</span>90S4414</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">4433          <span>AT</span>90S4433</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">4434          <span>AT</span>90S4434</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">8515          <span>AT</span>90S8515</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">8535          <span>AT</span>90S8535</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m103          <span>ATmega</span>103</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m128          <span>ATMega</span>128</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m1280         <span>ATmega</span>1280</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m1281         <span>ATmega</span>1281</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m1284p        <span>ATmega</span>1284P</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m128<span>rfa</span>1      <span>ATmega</span>128<span>RFA</span>1</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m16           <span>ATmega</span>16</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m161          <span>ATmega</span>161</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m162          <span>ATmega</span>162</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m163          <span>ATmega</span>163</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m164          <span>ATmega</span>164</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m169          <span>ATmega</span>169</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m2560         <span>ATmega</span>2560 (**)</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m2561         <span>ATmega</span>2561 (**)</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m32           <span>ATmega</span>32</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m324          <span>ATmega</span>324</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m329          <span>ATmega</span>329</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m3290         <span>ATmega</span>3290</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m48           <span>ATmega</span>48</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m64           <span>ATmega</span>64</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m640          <span>ATmega</span>640</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m644          <span>ATmega</span>644</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m649          <span>ATmega</span>649</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m6490         <span>ATmega</span>6490</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m8            <span>ATmega</span>8</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m8515         <span>ATmega</span>8515</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m8535         <span>ATmega</span>8535</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">m88           <span>ATmega</span>88</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">t12           <span>ATtiny</span>12</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">t13           <span>ATtiny</span>13</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">t15           <span>ATtiny</span>15</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">t2313         <span>ATtiny</span>2313</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">t25           <span>ATtiny</span>25</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">t26           <span>ATtiny</span>26</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">t45           <span>ATtiny</span>45</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">t85           <span>ATtiny</span>85</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">x128a1        <span>ATXmega</span>128A1</span><br style="font-family: Courier New;" /><span style="font-family: Courier New;">x128a1d       <span>ATxmega</span>128A1<span>revD</span></span><br />
(*) В <span>AT</span>90S2313 и <span>ATtiny</span>22 используется один и тот же алгоритм.<br />
(**) <span>Flash</span> адреса выше 128 Кбайт не поддерживаются всеми аппаратными программаторами. Для работы с ними используйте <span>jtag</span>2, <span>stk</span>500v2 и <span>bit</span>-<span>bang</span> программаторы.</div>
<p><strong>-b <em><span>baudrate</span></em></strong></p>
<div style="margin-left: 40px;">Переопределяет скорость соединения по <span>RS</span>-232, указанную для программатора в файле конфигурации.</div>
<p><strong>-B <em><span>bitclock</span></em></strong></p>
<div style="margin-left: 40px;">Указывает <span>bit</span> <span>clock</span> <span>period</span> для интерфейса <span>JTAG</span> или <span>ISP</span> <span>clock</span> (только для <span>JTAG</span> <span>ICE</span>). Значением &#8211; число микросекунд. По умолчанию в <span>JTAG</span> <span>ICE</span> используется <span>bit</span> <span>clock</span> <span>period</span> равный 1 микросекунде, подходящий для  микроконтроллеров работающих на частоте 4 МГц и выше.</div>
<p><strong>-c <em><span>programmer</span>-<span>id</span></em></strong></p>
<div style="margin-left: 40px;">Указывает программатор, который будет использоваться. <span>AVRDUDE</span> известны несколько распространенных программаторов. Используйте эту опцию, чтобы указать, какой из них использовать. Идентификаторы известных программаторов перечислены в конфигурационном файле. Укажите -c ? чтобы увидеть список этих программаторов. Если у вас есть программатор, который неизвестен <span>AVRDUDE</span> и он управляется с помощью компьютера через параллельный порт, есть хороший шанс, что его можно будет легко добавить в файл конфигурации без каких-либо изменений в коде <span>AVRDUDE</span>. Просто скопировать существующий код и изменить номера контактов в соответствии со схемой подключения вашего программатора.</div>
<p><strong>-C <em><span>config</span>-<span>file</span></em></strong></p>
<div style="margin-left: 40px;">Использовать указанный файл конфигурации. По умолчанию  <span>AVRDUDE</span> читает конфигурацию из файла /<span>usr</span>/<span>local</span>/<span>etc</span>/<span>avrdude</span>.<span>conf</span> (FreeBSD <span>and</span> <span>Linux</span>).</div>
<p><strong>-D </strong></p>
<div style="margin-left: 40px;">Отключить автоматическое стирание <span>flash</span>-памяти. Автоматическое стирание <span>flash</span> не используется для микроконтроллеров <span>ATxmega</span>.</div>
<p><strong>-e</strong></p>
<div style="margin-left: 40px;">Стирает микроконтроллер. При этом в <span>flash</span> <span>ROM</span> и <span>EEPROM</span> записывается значение &#8217;0<span>xFF</span>&#8216;, и очищаются биты защиты. Эта опция не распространяется на микроконтроллеры <span>ATxmega</span>, в которых используется постраничная запись.</div>
<p><strong>-E <em><span>exitspec</span></em>[,...]</strong></p>
<div style="margin-left: 40px;">По умолчанию, <span>AVRDUDE</span> после программирования возвращает параллельный порт в тоже состояние, которое было до начала работы. Эта опция изменяет состояние линий <span>RESET</span> и <span>Vcc</span> параллельного порта в соответствии с аргументами:<br />
<strong><span>reset</span></strong></p>
<div style="margin-left: 40px;">На линии <span>RESET</span> будет оставлен низкий уровень, чтобы оставить микроконтроллер в состоянии сброса.</div>
<p><strong><span>noreset</span></strong></p>
<div style="margin-left: 40px;">На линии <span>RESET</span> будет установлен высокий уровень, чтобы запустить микроконтроллер после программирования.</div>
<p><strong><span>vcc</span></strong></p>
<div style="margin-left: 40px;">Эта опция оставляет высокий уровень на линии &laquo;<span>Vcc</span>&raquo; которая может использоваться для питания микроконтроллера.</div>
<p><strong><span>novcc</span></strong></p>
<div style="margin-left: 40px;">Эта опция устанавливает низкий уровень на линии &laquo;<span>Vcc</span>&laquo;после программирования.</div>
<p>Можно использовать несколько аргументов разделяя их запятыми.</p></div>
<p><strong>-F</strong></p>
<div style="margin-left: 40px;">По умолчанию перед программированием <span>AVRDUDE</span> проверяет сигнатуру микроконтроллера. Иногда сигнатура микроконтроллера повреждается (стирается или перезаписывается), но при этом микроконтроллер продолжает исправно функционировать. Эта опция позволяет отключить проверку сигнатуры.</div>
<p><strong>-i <em><span>delay</span></em></strong></p>
<div style="margin-left: 40px;">Для <span>bitbang</span> программаторов, делает паузу в микросекундах перед каждой отправкой <span>кадого</span> бита. Если компьютер слишком быстрый или микроконтроллер работает на слишком низкой частоте (от кварца 32 кГц или внутреннего <span>RC</span> генератора на 128 кГц), то эта опция позволяет соблюсти условие по которому частота <span>ISP</span> не должна превышать 1/4 частоты процессора.</div>
<p><strong>-n</strong></p>
<div style="margin-left: 40px;">Запрещает производить запись данных в микроконтроллер (используется для отладки <span>AVRDUDE</span>).</div>
<p><strong>-O</strong></p>
<div style="margin-left: 40px;">Эта опция калибрует <span>RC</span> генератор в соответствии с <span>апнотой</span> <span>AVR</span>503. Это поддерживается только на программаторах <span>STK</span>500v2, <span>AVRISP</span> <span>mkII</span>, <span>and</span> <span>JTAG</span> <span>ICE</span> <span>mkII</span>. При этом результат будет храниться в ячейке <span>EEPROM</span> по адресу 0.</div>
<p><strong>-P <em><span>port</span><br />
</em></strong></p>
<div style="margin-left: 40px;">Указывает к какому порту подключен программатор.</div>
<p><strong>-q</strong></p>
<div style="margin-left: 40px;">Отключает отображение прогресс бара при чтении или записи в микроконтроллер. Указывается дважды, чтобы выводить на экран еще меньше информации.</div>
<p><strong>-u</strong></p>
<div style="margin-left: 40px;">Отключает чтение и сравнение ячеек конфигурации до и после программирования. Этот параметр надо указывать если вы хотите изменить ячейки конфигурации, иначе <span>AVRDUDE</span> изменит их на прочитанные до программирования, для вашей безопасности.</div>
<p><strong>-t</strong></p>
<div style="margin-left: 40px;">Включает в <span>AVRDUDE</span> терминальный режим.</div>
<p><strong>-U <em><span>memtype</span>:<span>op</span>:<span>filename</span>[:<span>format</span>]</em></strong></p>
<div style="margin-left: 40px;">Указывает тип памяти:<br />
<strong style="font-family: Courier New;"><span>calibration</span></strong><span style="font-family: Courier New;"> Один или несколько байт калибровки </span><span>RC</span><span style="font-family: Courier New;"> генератора.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;"><span>eeprom</span></strong><span style="font-family: Courier New;"> </span><span>EEPROM</span><span style="font-family: Courier New;"> память микроконтроллера.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;"><span>efuse</span></strong><span style="font-family: Courier New;"> Дополнительный конфигурационный байт</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;"><span>flash</span></strong><span style="font-family: Courier New;"> </span><span>FLASH</span><span style="font-family: Courier New;"> память микроконтроллера.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;"><span>fuse</span></strong><span style="font-family: Courier New;"> Конфигурационный байт для микроконтроллеров с одним </span><span>fuse</span><span style="font-family: Courier New;">-байтом.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;"><span>hfuse </span></strong><span style="font-family: Courier New;"> Старший конфигурационный байт.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;"><span>lfuse</span></strong><span style="font-family: Courier New;"> Младший конфигурационный байт.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;"><span>lock</span></strong><span style="font-family: Courier New;"> Ячейки защиты.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;"><span>signature</span></strong><span style="font-family: Courier New;"> </span><span>Индентификатор</span><span style="font-family: Courier New;"> микроконтроллера.</span></p>
<p>Поле <em><span>op</span></em> определяет какая операция будет выполнена:<br />
<strong style="font-family: Courier New;">r</strong><span style="font-family: Courier New;"> чтение памяти из микроконтроллера и запись в файл</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">w</strong><span style="font-family: Courier New;"> чтение прошивки из файла и запись в память микроконтроллера</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">v</strong><span style="font-family: Courier New;"> чтение памяти из микроконтроллера и сравнение её с прошивкой</span></p>
<p>Поле <em><span>filename</span></em> указывает в какой файл писать или читать данные. Поле <em><span>format</span> </em>является необязательным и содержит формат файла. Возможные значения:<br />
<strong style="font-family: Courier New;">i</strong><span style="font-family: Courier New;"> </span><span>Intel</span> <span>Hex</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">s</strong><span style="font-family: Courier New;"> </span><span>Motorola</span><span style="font-family: Courier New;"> S-</span><span>record</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">r</strong><span style="font-family: Courier New;"> </span><span>Raw</span><span style="font-family: Courier New;">-формат</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">m</strong><span style="font-family: Courier New;"> </span><br style="font-family: Courier New;" /></p>
<div style="margin-left: 40px; font-family: Courier New;">Фактические значения байтов для записи указываются в командной строке. Байты помещаются в поле <em><span>filename</span></em> и разделяются запятыми или пробелами. Этот режим применяется за записи конфигурационных ячеек без создания специального файла или переключения в терминальный режим. Если байт указан в формате 0x, то он будет записан в шестнадцатеричном значении.    Если перед байтом стоит 0, то будет записано восьмеричное число. По умолчанию байты записываются в десятичной системе.</div>
<p><strong style="font-family: Courier New;">a</strong><span style="font-family: Courier New;"> Авто определение формата.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">d</strong><span style="font-family: Courier New;"> Десятичный формат. Числа разделяются запятыми.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">h</strong><span style="font-family: Courier New;"> Шестнадцатеричный формат. Перед числами ставится 0x.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">o</strong><span style="font-family: Courier New;"> Восьмеричный формат. Перед числами ставится ноль.</span><br style="font-family: Courier New;" /><strong style="font-family: Courier New;">b</strong><span style="font-family: Courier New;"> Двоичный формат. Перед числами ставится 0b.</span></p>
<p>По умолчанию (если не указан параметр) формат файла для записи в микроконтроллер определяется автоматически, а данные из микроконтроллера читаются в сыром двоичном формате.</p></div>
<p><strong>-v</strong></p>
<div style="margin-left: 40px;">Расширенный вывод информации.</div>
<p><strong>-V</strong></p>
<div style="margin-left: 40px;">Отключает автоматическую проверку <span>записаннной</span> информации.</div>
<p><strong>-x <em><span>extended</span>_<span>param</span></em></strong></p>
<div style="margin-left: 40px;">Дополнительные параметры.</div>
<p><strong>-y</strong></p>
<div style="margin-left: 40px;">Указывает <span>AVRDUDE</span> использовать последние четыре байта <span>EEPROM</span> памяти чтобы отслеживать сколько раз этот микроконтроллер был стерт. Если этот параметр указывается совместно с -e, то перед стиранием микроконтроллера счетчик считывается, увеличивается и записывается обратно после стирания.</div>
<p><strong>-Y <em><span>cycles</span></em></strong></p>
<div style="margin-left: 40px;">Указанное в параметре число будет записано в <span>EEPROM</span> как значение счетчика циклов стирания-записи.</div>
]]></content:encoded>
			<wfw:commentRss>http://kvorb.ru/2009/06/24/russkaya-dokumentaciya-k-avrdude-chast-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

