<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=6322&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-17T18:48:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6322&amp;mode</id>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2014-03-17T18:48:39+01:00</updated>
<published>2014-03-17T18:48:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74718#p74718</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74718#p74718"/>
<title type="html"><![CDATA[Re: Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74718#p74718"><![CDATA[
Doszedłem do tego przed chwilą <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />[syntax=c]uint8_t adres;<br /><br />for(adres=0;adres&lt;=127;adres++) {<br /><br />sbi(PORTB,0);<br /><br />TWI_start();<br />TWI_write(adres);<br /><br />if ( TWI_status() == 24 ) {<br />uart_puts(&quot;Adres LCD: &quot;);<br />uart_putint( adres,10 );<br />uart_putc('\n');<br />}<br />TWI_stop();<br /><br />cbi(PORTB,0);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 17 mar 2014, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-03-17T18:44:23+01:00</updated>
<published>2014-03-17T18:44:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74717#p74717</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74717#p74717"/>
<title type="html"><![CDATA[Re: Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74717#p74717"><![CDATA[
ACK to nie jest odebrany bajt tylko status transmisji, który znajduje się w rejestrze TWSR. Trzeba sobie dodać taką funkcję:<br />[syntax=c]#define ACK 0<br />#define NACK 1<br />uint8_t TWI_SLA_W(uint8_t adres) <br />{<br />   TWDR = adres;<br />   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN);<br />   while ( !(TWCR&amp;(1&lt;&lt;TWINT)));<br />   if(TWSR &amp; 0xF8 == 0x18) //Status codes for Master Transmitter mode form datasheet<br />       return ACK; <br />   else<br />       return NACK; <br />}[/syntax]<br />i tak użyć:<br />[syntax=c]for(adres=0;adres&lt;128;adres++) {<br />               <br />   sbi(PORTB,0);<br />               <br />   TWI_start();<br />   potwierdzenie = TWI_SLA_W(adres);<br />   cbi(PORTB,0);<br />   TWI_stop();<br /> <br />   uart_putint( potwierdzenie,10 );<br />   uart_putc('\n');<br />               <br />   _delay_ms(100);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 17 mar 2014, o 18:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2014-03-17T15:30:49+01:00</updated>
<published>2014-03-17T15:30:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74709#p74709</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74709#p74709"/>
<title type="html"><![CDATA[Re: Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74709#p74709"><![CDATA[
Coś robię nie tak - terminal wyświetla mi '0' i program staje z zapalonym ledem (na PB0).<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;I2C/i2c_twi.h&quot;<br />#include &quot;MK_USART/mkuart.h&quot;<br /><br />/* Makra */<br />#define sbi(byte,bit) byte|=(1&lt;&lt;bit)<br />#define cbi(byte,bit) byte&amp;=~(1&lt;&lt;bit)<br />#define bit(byte,n) (byte&gt;&gt;n)&amp;1<br />/*----------------------------------*/<br /><br />uint8_t potwierdzenie;<br />uint8_t adres;<br /><br />void init() {<br />    sbi(DDRB,0);// PB0 as output for LED<br />    cbi(PORTB,0);// LED off<br /><br />USART_Init(__UBRR);<br /><br />sbi(DDRC,0);<br />sbi(DDRC,1);<br />sbi(PORTC,0);<br />sbi(PORTC,1);<br /><br />TWI_SetBitrate(100);<br />}<br /><br />int main() {<br /><br />init();<br />sei();<br /><br />//uart_puts(&quot;Szukam LCD...\n&quot;);<br /><br />for(adres=0;adres&lt;128;adresik++) {<br /><br />sbi(PORTB,0);<br /><br />TWI_start();<br />TWI_write(adres);<br />potwierdzenie = TWI_read(NACK);<br />cbi(PORTB,0);<br />TWI_stop();<br /><br />uart_putint( potwierdzenie,10 );<br />uart_putc('\n');<br /><br />_delay_ms(100);<br />}<br /><br />return 1;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 17 mar 2014, o 15:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-03-12T18:50:28+01:00</updated>
<published>2014-03-12T18:50:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74016#p74016</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74016#p74016"/>
<title type="html"><![CDATA[Re: Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=74016#p74016"><![CDATA[
Po starcie programu wysyłasz najpierw adres PCF8574 i jak jest ACK to wiesz z czym masz do czynienia jak nie ma ACK to wysyłasz adres układu sterownika LCD i jak jest ACK to wykonujesz obsługę dla tego typu układu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 12 mar 2014, o 18:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2014-03-12T13:26:20+01:00</updated>
<published>2014-03-12T13:26:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73977#p73977</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73977#p73977"/>
<title type="html"><![CDATA[Re: Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73977#p73977"><![CDATA[
<div class="quotetitle">szopler napisał(a):</div><div class="quotecontent"><br />Wyświetlacz zawsze 2x16 znaków.<br />Jedna magistrala I2C, jednak nie wiemy czy użytkownik podepnie LCD z expanderem czy z natywną obsługą I2C.<br /></div><br /><br />A co innego może robić natywna obsługa I2C? Chyba że kombinujesz tak żeby peryferia były PnP czyli nie wiadomo co użytkownik podepnie a jak podepnie to ma zadziałać jak sobie ów użytkownik wyobrazi, że powinno zadziałać. W takim przypadku to chyba będzie bardzo trudne/niemożliwe.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 12 mar 2014, o 13:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2014-03-12T13:16:15+01:00</updated>
<published>2014-03-12T13:16:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73976#p73976</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73976#p73976"/>
<title type="html"><![CDATA[Re: Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73976#p73976"><![CDATA[
Wyświetlacz zawsze 2x16 znaków.<br />Jedna magistrala I2C, jednak nie wiemy czy użytkownik podepnie LCD z expanderem czy z natywną obsługą I2C.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 12 mar 2014, o 13:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2014-03-12T09:04:41+01:00</updated>
<published>2014-03-12T09:04:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73955#p73955</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73955#p73955"/>
<title type="html"><![CDATA[Re: Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73955#p73955"><![CDATA[
Jeżeli dobrze to odczytuję, to osobny zestaw pinów jest do obsługi I2C i bezpośredniej obsługi HD44780. Może warto puszczać jednocześnie na oba kanały nie patrząc czy na nich coś jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 12 mar 2014, o 09:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xbary]]></name></author>
<updated>2014-03-12T01:48:21+01:00</updated>
<published>2014-03-12T01:48:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73948#p73948</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73948#p73948"/>
<title type="html"><![CDATA[Re: Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73948#p73948"><![CDATA[
Raczej się to nie uda.<br /><br />Bo z tego co wiem HD44780 niema komendy która zwrotnie by opisała jaki to LCD, tzn ilu wierszowy itd. <br /><br />Ale więcej LCD do jednego procesora podłączyć przez taką przejściówkę już się da, trzeba praktycznie libsa od podstaw napisać - ale się da <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=447">xbary</a> — 12 mar 2014, o 01:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2014-03-11T23:15:40+01:00</updated>
<published>2014-03-11T23:15:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73930#p73930</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73930#p73930"/>
<title type="html"><![CDATA[Obsługa dwóch różnych LCD po I2C (expander i natywny)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6322&amp;p=73930#p73930"><![CDATA[
Mamy AVRka, który ma obsłużyć LCD, ale nie wiemy jaki zostanie podpięty przez użytkownika (chcemy uniknąć dwóch wersji firmware).<br />Opcje LCD są dwie...<br />1) zgodny z HD44780 sterowany poprzez expander na PCF8574T:<br /><img src="https://dl.dropboxusercontent.com/u/27006170/Radioactive/KIT/I2C_Expander_small.jpg" alt="Obrazek" /><br />2) wyświetlacz z natywnym I2C i sterowaniem w sposób:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">void LCD_write (unsigned char Control, unsigned char Data)<br />{<br />   IdleI2C();<br />    StartI2C(); <br />   IdleI2C();<br />   WriteI2C(0x7c);<br />   IdleI2C();<br />   WriteI2C(Control);<br />   IdleI2C();<br />   WriteI2C(Data);<br />   IdleI2C();<br />    StopI2C();<br /><br />}</div><br /><br />Załóżmy, że procesor przy inicjalizacji przeszukuje magistralę I2C w poszukiwaniu LCD (w praktyce dwa niewielkie zakresy).<br />I w zależności od tego w którym z dwóch zakresów znajdzie urządzenie (naszego LCD) ma inaczej go obsłużyć.<br />Standardowo przypisanie pinów przy ekspanderze jest podczas kompilacji...<br /><br />Jak się do tego zabrać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 11 mar 2014, o 23:15</p><hr />
]]></content>
</entry>
</feed>