<?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=44&amp;t=24810&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2025-05-04T05:55:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=44&amp;t=24810&amp;mode</id>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2025-05-04T05:55:49+01:00</updated>
<published>2025-05-04T05:55:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239030#p239030</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239030#p239030"/>
<title type="html"><![CDATA[Re: Wyświetlacz LCD po I2C Atmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239030#p239030"><![CDATA[
Jeszcze raz dziękuję <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=10257">Robert_1967</a> — 4 maja 2025, o 05:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2025-05-03T21:27:56+01:00</updated>
<published>2025-05-03T21:27:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239029#p239029</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239029#p239029"/>
<title type="html"><![CDATA[Re: Wyświetlacz LCD po I2C Atmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239029#p239029"><![CDATA[
No widzisz nie bez powodu mówiłem obejrzyj poradnik Mirka o i2c skanerze .Mirek tam porusza bardzo ważną kwestię adresów i2c 7bitoych i to tłumaczy 0x27 to 7 bitowy adres i2c i jest równo ważny z 8 bitowym 0x4e .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 3 maja 2025, o 21:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2025-05-03T09:43:30+01:00</updated>
<published>2025-05-03T09:43:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239028#p239028</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239028#p239028"/>
<title type="html"><![CDATA[Re: Wyświetlacz LCD po I2C Atmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239028#p239028"><![CDATA[
Dzięki tonygryps <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Udało mi się znaleźć odpowiedź wcześniej, ale dziękuję, że się odezwałeś. Obejrzałem lekcje o I2C z kursu i tam Mirek poruszył<br />temat tego pcf-a z literką T. Podał również adres. Tak, 0x4E poszło. Biblioteka działa bardzo dobrze. 800KHz pociągnęło. <br /><br />Nie rozumiem, że w opisie z linku jest wyraźnie podane 0x27, jak i na niektórych aukcjach w Alle.... również, a układ nie chodzi.<br />Chyba że jeszcze czegoś nie wziąłem pod uwagę. Straciłem sporo czasu przez ten adres. Teraz demo z MK_LCD i MK_I2C działają.<br /><br />Udało mi się nawet odpalić na Atmega 328PB. Musiałem trochę pozmieniać w pliku mk_i2c.c i poszło.<br /><br />Ciekawa ta magistrala i przyda mi się szczególnie przy płytkach Arduino NANO. lcd zabierało sporo pinów, a teraz tylko 2 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Trzeba będzie tylko zmienić podejście do programowania. Zauważyłem, że łatwo blokować pętlę (spowalniać) ale to następny problem do ogarnięcia.<br /><br />Jeszcze raz dzięki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 3 maja 2025, o 09:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2025-05-02T18:00:01+01:00</updated>
<published>2025-05-02T18:00:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239027#p239027</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239027#p239027"/>
<title type="html"><![CDATA[Re: Wyświetlacz LCD po I2C Atmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239027#p239027"><![CDATA[
Spróbuj zmienić adres  na 7e bądź 4e .<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />poza tym obejrzyj poradnik Mirka o i2c skanerze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 2 maja 2025, o 18:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2025-05-02T09:19:07+01:00</updated>
<published>2025-05-02T09:19:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239025#p239025</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239025#p239025"/>
<title type="html"><![CDATA[Re: Wyświetlacz LCD po I2C Atmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239025#p239025"><![CDATA[
A więc dane dotyczące tego konkretnego ekspandera znajdują się tutaj:<br /><br /><a href="https://protosupplies.com/product/lcd-i2c-interface-adapter/"  class="postlink">https://protosupplies.com/product/lcd-i2c-interface-adapter/</a><br /><br />Wynika z tego, że adres domyślny jest 0x27. A1 A2 A3 są podpięte pod VCC. Jest również konfiguracja pinów na pcb eksp....<br /><br /><a href="https://obrazkiforum.atnel.pl/10257/07d3440c91c4753fbd78cd15f88799f8.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/10257/07d3440c91c4753fbd78cd15f88799f8.jpg" alt="Obrazek" /></a><br /><br />W konfig. lcd mam ustawione tak:<br /><br />[syntax=c]// rozdzielczość wyświetlacza LCD (wiersze/kolumny)<br />#define LCD_ROWS 2// ilość wierszy wyświetlacza LCD<br />#define LCD_COLS 16    // ilość kolumn wyświetlacza LCD<br /><br />// tu ustalamy za pomocą zera lub jedynki czy sterujemy pinem RW<br />//0 - pin RW podłączony na stałe do GND<br />//1 - pin RW podłączony do mikrokontrolera<br />#define USE_RW 1<br /><br />#define USE_BACKLIGHT0<br /><br />//----------------------------------------------------------------------------------------<br />//<br />//Wybór trybu pracy I2C / Standard<br />//<br />//----------------------------------------------------------------------------------------<br />// włączenie obsługi magistrali I2C (1 - włączone, 0 - wyłączone)<br />//<br />//UWAGA! użycie magistrali I2C wymaga użycia odrębnej biblioteki MK_I2C : https://sklep.atnel.pl/pl/p/0581_0582-MK-I2C-AVR-Biblioteka-C/244<br />//<br />#define USE_I2C1<br /><br />#define I2C_KHZ100// ustalamy prędkość na magistrali I2C od 50 kHz do 400 kHz (standard to 100 kHz)[/syntax]<br /><br /><br />[syntax=c]// Adres EXPANDERA<br />//#define PCF8574_LCD_ADDR 0x70// PCF8574A gdy A0, A1 i A2 --&gt; GND<br />//#define PCF8574_LCD_ADDR 0x40// PCF8574  gdy A0, A1 i A2 --&gt; GND<br />#define PCF8574_LCD_ADDR 0x27// PCF8574T  gdy A0, A1 i A2 --&gt; VCC[/syntax]<br /><br /><br />Zmieniony lcd na 2x16.<br /><br />Konfig pinów:<br /><br />[syntax=c]// Tu definiujemy piny ekspandera do których podłączamy sygnały D7..D4 LCD<br />#define LCD_D7 7<br />#define LCD_D6 6<br />#define LCD_D5 5<br />#define LCD_D4 4<br /><br />// tu definiujemy piny ekspandera do których podłączamy sygnały RS,RW, E<br />#define LCD_RS 0<br />#define LCD_RW 1<br />#define LCD_E 2[/syntax]<br /><br /><br />W konfig I2C ma tak:<br /><br /><br />[syntax=c]//^^^^^^^^^^^^^^^^^^^^^^^^^^ konfiguracja I2C SLAVE tylko TWI lub USI ^^^^^^^^^<br />#define I2C_MODE0// 0 - I2C MASTER<br />// 1 - for ATmega uC's with TWI<br />// 2 - for ATtiny uC's with USI ( ATtiny 2313 / 25/45/85 / 24(A)/44(A)/84 / 26 / 261/461/861 )<br /><br />#define I2C_SLAVE_ADDRESS0x10// range: 0-255 (only for MODE = 1,2<br />//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br /><br /><br />//.......................... ustawienia pinów SOFT I2C .........<br /><br />#define USE_SOFT_I2C0// soft I2C only for MODE = 0 (Master)[/syntax]<br /><br /><br />main.c<br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MK_I2C/mk_i2c.h&quot;<br />#include &quot;MK_LCD/mk_lcd44780.h&quot;<br /><br /><br />volatile uint8_t Timer1;<br /><br /><br /><br /><br />int main(void)<br />{<br />lcd_init();<br /><br />DDRD |= (1&lt;&lt;PD0);<br />PORTD |= (1&lt;&lt;PD0);<br />_delay_ms(10);<br /><br />TCCR0 |= (1&lt;&lt;WGM01);// tryb CTC<br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024<br />OCR0 = (F_CPU/1024UL)/100UL;// 100ms - 100Hz<br />TIMSK |= (1&lt;&lt;OCIE0);// przerwanie Compare Match<br />_delay_ms(10);<br /><br /><br />lcd_cls();<br />lcd_locate(1,6);<br />lcd_str(&quot;Test_I2C&quot;);// napis z pamięci RAM<br /><br /><br />sei();<br /><br />while(1)<br />{<br />if(!Timer1)<br />{<br />Timer1=100;<br />PORTD ^= (1&lt;&lt;PD0);<br />}<br /><br />//lcd_locate(1,6);<br />//lcd_str(&quot;Test_I2C&quot;);<br /><br />}<br />}<br /><br /><br /><br />ISR( TIMER0_COMP_vect )<br />{<br />uint16_t a;<br /><br />a = Timer1;// 100Hz Timer1<br />if (a) Timer1 = --a;<br />}[/syntax]<br /><br /><br />Efekt jest taki, że dioda miga co 1s, a na wyświetlaczu w zerowej linii kwadraty. Jak odkomentuję w pętli wyświetlanie napisu<br />&quot;Test_I2C&quot;, to dioda zmienia stan wolniej.<br /><br />Mam urządzenie, gdzie jest ten wyświetlacz 2x16 i dołączony do niego taki sam ekspander. Tam wyświetlanie działa, ale to<br />nie moje urządzenie.<br /><br />Przy zastosowaniu programu z biblioteki Mirka MK_LCD i MK_I2C, ustawieniu adresu na 0x27, kwarc 20MHz nie działa wyświetlanie.<br /><br />W Mirka poradnikach wszystko śmiga. O czym jeszcze zapomniałem. Gdzie robię babola ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 2 maja 2025, o 09:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2025-05-01T19:04:16+01:00</updated>
<published>2025-05-01T19:04:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239024#p239024</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239024#p239024"/>
<title type="html"><![CDATA[Wyświetlacz LCD po I2C Atmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24810&amp;p=239024#p239024"><![CDATA[
Dzień dobry.<br /><br />Proszę o pomoc.<br /><br />Temat może dla wielu banalny, ale nie mogę sobie poradzić z uruchomieniem wyświetlacza lcd 4x20 (taki akurat mam) po magistrali I2C.<br />Pop prostu nigdy wcześniej nie używałem tej metody i postanowiłem zgłębić ten rodzaj obsługi. A żeby się nie rozpisywać, to podaję<br />info, jak na tą chwilę to wygląda.<br /><br />1. Zestaw atb (starsza wersja).<br />2. Atmega32 z kwarcem 20MHz.<br />3. Dwie biblioteki zakupione w Atnelu (MK_LCD i MK_I2C).<br />4. Wyświetlacz lcd 4x20 na sterowniku HD44780.<br />5. Konwerter na układzie PCF8574T zakupiony na Alle.... Konwerter na małej prostokątnej płytce ze zworką do LED i 3 punktami do<br />ustawienia adresu. Pewnie wiecie, o którym piszę. Pełno ich na aukcjach. Napisałem krótki program, gdzie dodałem obsługę przerwań.<br />W pętli na ten moment jest tylko kod do migania diodą w przerwaniu co 1s w celu kontroli, czy procek się nie zawiesza.<br /><br />Do projektu dołączone w/w biblioteki Mirka. <br /><br />Obejrzałem poradniki do tych bibliotek, ale nie mogę nic zrobić. Nie czaję bazy... Wcześniej zaimportowałem zakupione biblioteki wraz <br />z programami Mirka, ale nic mi nie działało. Programy się kompilowały bez błędów, ale na wyświetlaczu tylko 2 rzędy prostokątów.<br /><br />Postanowiłem napisać własny, krótki do wyświetlenia czego kolwiek. Mam tylko kwadraty. Dwa rzędy na 4 linijkach.<br /><br />W pliku mk_lcd44708.h ustawiona 1 w #define USE_I2C. W pliku mk_i2c.h  ustawione #define I2C_MODE  0  czyli chyba OK.<br /><br />Konwerter podpięty do PC0 i PC1 Atmegi. Prześledziłem pcb konwertera, które piny PCF-a idą do listwy i ustawiłem numerację pinów<br />w pliku do lcd. W kablologii i konfiguracji pinów nie ma błędów.<br /><br />Czego nie wiem:<br /><br />Na aukcjach ze sprzedaży najczęściej pojawia się, że adres dla konwertera jest Ox27 <br />Tak wpisałem w mk_lcd44780.h<br /><br />// Adres EXPANDERA<br />//#define PCF8574_LCD_ADDR 0x70// PCF8574A gdy A0, A1 i A2 --&gt; GND<br />#define PCF8574_LCD_ADDR 0x27// PCF8574  gdy A0, A1 i A2 --&gt; GND  ///////  0x40<br /><br />Ale nie wiem, czy literka na końcu T to to samo, co scalak z literką A, czy bez A (PCF)<br /><br />Nie wiem, czy mam zlutować zworki dla Ox27 (są czyste) Gdzieś było napisane zlutować do vcc, ale nie wiem.<br /><br />Proszę, pomóżcie, co mam dalej robić, a żeby ruszyło. Czy jest jakaś inicjalizacja I2C w main, jak np. lcd_init(); adc_init......<br /><br />Czy o czymś zapomniałem ? Z góry dziękuję za chęć pomocy.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 52 minutyach ]</span></strong><br /><br />Celem sprostowania.<br />Żeby nie było. Wiadome dla mnie jest, że program Mirka jest ok i ma działać. Na moim ekspanderze nie ruszył, a jest on niewiadomą dla mnie na ten moment. Dla tego zacząłem od prostego programu, a żeby skrócić kod i ograniczyć się do minimum w celu chociażby wyświetlenia raptem 1 znaku, czy wyczyszczeniu wyświetlacza. Dałoby mi to info, że komunikacja istnieje.<br />Jeszcze jeden mankament. Po resecie atmegi z przycisku na atb dioda zaczynać zmieniać stan dopiero po 5 sekundach, Co zabiera tyle czasu ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 1 maja 2025, o 19:04</p><hr />
]]></content>
</entry>
</feed>