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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-10-05T19:07:12+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=3&amp;t=4378&amp;mode</id>
<entry>
<author><name><![CDATA[eMCe2]]></name></author>
<updated>2013-10-05T19:07:12+01:00</updated>
<published>2013-10-05T19:07:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52011#p52011</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52011#p52011"/>
<title type="html"><![CDATA[Re: zestaw ATB - RTC - TWI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52011#p52011"><![CDATA[
Panowie wstyd się przyznać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Wgrałem jeszcze raz i tym razem lcd zwieche miał już ze słowem TEST <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> także wstawiam jak Mirek radzi (co zresztą robiłem już wczoraj w nocy ale widocznie za późno było) mryganie podświetleniem owego LCD i kurde mryga i przed zapisem do RTC i za zapisam do RTC i nawet za wyswietleniem lini &quot;Godzina:&quot;... a na lcd ciągle napis TEST... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />I patrzę sobie w bibliotekę od LCD a tam RS i RW na PC0 i PC1 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Problem rozwiązany TWI działa <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=1363">eMCe2</a> — 5 paź 2013, o 19:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-05T18:28:12+01:00</updated>
<published>2013-10-05T18:28:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52005#p52005</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52005#p52005"/>
<title type="html"><![CDATA[Re: zestaw ATB - RTC - TWI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52005#p52005"><![CDATA[
Tylko po co ci druga atmega skoro piszesz że na analizatorze widać że wszystko śmiga <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... więc musi to być jakiś czeski błąd<br /><br />Sprawdź sobie pojedynczą diodą LED gdzie program ci się ew zatrzymuje , gdzie nie działa - w takim wypadku to nie będzie trudne  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 paź 2013, o 18:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[eMCe2]]></name></author>
<updated>2013-10-05T17:56:47+01:00</updated>
<published>2013-10-05T17:56:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52002#p52002</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52002#p52002"/>
<title type="html"><![CDATA[Re: zestaw ATB - RTC - TWI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=52002#p52002"><![CDATA[
No kurde kod właściwie poza tym przełączaniem nie różni się od mojego <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /> u mnie to niestety nie działa a nie mam drugiej sztuki m644p żeby sprawdzić na innej.<br />Co do funkcji lcd_bl(); to sobie zmodyfikowalem bibliotekę Mirkową od LCD a właściwie dorobiłem funkcję od podświetlenia.<br /><br />W pliku lcd44780.h dodałem:<br />[syntax=c]#define LCD_BLPORT C<br />#define LCD_BL 7<br />#define ON 1<br />#define OFF 0<br /><br />void lcd_bl(int);[/syntax]<br /><br />a w pliku lcd44780.c dodałem:<br />[syntax=c]#define SET_BL PORT(LCD_BLPORT) |= (1&lt;&lt;LCD_BL)<br />#define CLR_BL PORT(LCD_BLPORT) &amp;= ~(1&lt;&lt;LCD_BL)<br /><br />void lcd_bl(int onoff)<br />{<br />if(onoff)<br />{<br />SET_BL;<br />}<br />else<br />{<br />CLR_BL;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1363">eMCe2</a> — 5 paź 2013, o 17:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-10-05T13:47:52+01:00</updated>
<published>2013-10-05T13:47:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51986#p51986</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51986#p51986"/>
<title type="html"><![CDATA[Re: zestaw ATB - RTC - TWI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51986#p51986"><![CDATA[
Kod jest dobry i przed chwilą sprawdziłem na ATB1.04 z ATMEGĄ644PA. Takim kodem dokładnie, aby było wygodnie przełączać:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;I2C_SOFT/i2c_soft.h&quot;<br /><br />#define SOFT_MODE 1<br />#define TWI_MODE 2<br /><br />#define MODE TWI_MODE //tu wybieramy obsługę sprzętową lub programową<br /><br />#define RTC 0xA2<br />uint8_t bcd2dec(uint8_t bcd);<br />uint8_t dec2bcd(uint8_t dec);<br />volatile int flaga = 1;<br />enum {<br />ss = 1, mm, hh<br />};<br />uint8_t bufor&#91;4&#93;; // rezerwacja bufora 4 bajty<br />uint8_t sekundy, minuty, godziny;<br />uint8_t znak&#91;&#93; = { 4, 14, 21, 21, 19, 17, 14, 17 };<br />uint8_t c = 0;<br />int main(void) {<br /><br />#if(MODE == SOFT_MODE)<br />i2c_init();<br />#elif(MODE == TWI_MODE)<br />i2cSetBitrate(100);<br />#endif<br /><br />lcd_init();<br />DDRA |= (1&lt;&lt;PA7); PORTA |= (1&lt;&lt;PA7); //podświetlenie LCD<br />//lcd_bl(1);<br />lcd_str(&quot;TEST&quot;);<br /><br />//INT0<br />EICRA |= (1 &lt;&lt; ISC01);<br />EIMSK |= (1 &lt;&lt; INT0);<br />PORTD |= (1 &lt;&lt; PD2);<br />lcd_defchar(0x80, znak);<br /><br />// Ustawianie czasu<br /><br />bufor&#91;0&#93; = 0; // setne części sekundy<br />bufor&#91;1&#93; = dec2bcd(22); // sekundy<br />bufor&#91;2&#93; = dec2bcd(27); // minuty<br />bufor&#91;3&#93; = dec2bcd(20); // godziny<br />// zapis 4 bajtów z bufora pod adres 0x01 w pamięci RAM naszego RTC<br />#if 0<br />#if(MODE == SOFT_MODE)<br />I2C_write_buf( RTC, 0x01, 4, bufor );<br />#elif(MODE == TWI_MODE)<br />TWI_write_buf( RTC, 0x01, 4, bufor );<br />#endif<br />#endif<br /><br />lcd_cls();<br />lcd_str(&quot;Godzina:&quot;);<br />lcd_locate(1, 0);<br />lcd_int(TWBR);<br />sei();<br />while (1) {<br />if (flaga == 1) {<br /><br />#if(MODE == SOFT_MODE)<br />I2C_read_buf( RTC, 0x01, 4, bufor );<br />#elif(MODE == TWI_MODE)<br />TWI_read_buf(RTC, 0x01, 4, bufor);<br />#endif<br /><br />sekundy = bcd2dec(bufor&#91;ss&#93;);<br />minuty = bcd2dec(bufor&#91;mm&#93;);<br />godziny = bcd2dec(bufor&#91;hh&#93;);<br /><br />// wyświetlenie czasu na LCD<br />lcd_locate(1, 0);<br />if (godziny &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(godziny);<br />lcd_str(&quot;:&quot;);<br />if (minuty &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br />lcd_str(&quot;:&quot;);<br />if (sekundy &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br /><br />flaga = 0;<br /><br />}<br />lcd_locate(1, 12);<br />lcd_str(&quot;\x80&quot;);<br /><br />}<br />}<br /><br />// konwersja liczby BCD na dziesiętne<br />uint8_t bcd2dec(uint8_t bcd) {<br />return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}<br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec) {<br />return ((dec / 10) &lt;&lt; 4) | (dec % 10);<br />}<br /><br />// procedura obsługi przerwania INT 0<br />ISR( INT0_vect ) {<br />flaga = 1;<br />}[/syntax]<br />Możesz pokazać magiczną funkcję lcd_bl(1) ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 5 paź 2013, o 13:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[eMCe2]]></name></author>
<updated>2013-10-05T10:42:36+01:00</updated>
<published>2013-10-05T10:42:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51967#p51967</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51967#p51967"/>
<title type="html"><![CDATA[Re: zestaw ATB - RTC - TWI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51967#p51967"><![CDATA[
Poprawiłem funckję TWI_stop() ale niestety dalej to samo<br />LCD wisi na ekranie:<br />Godzina:<br />&lt;wartosc TWBR&gt; czyli u mnie 47<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1363">eMCe2</a> — 5 paź 2013, o 10:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-04T23:12:47+01:00</updated>
<published>2013-10-04T23:12:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51944#p51944</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51944#p51944"/>
<title type="html"><![CDATA[Re: zestaw ATB - RTC - TWI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51944#p51944"><![CDATA[
pobierz uaktualnienie do TWI<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/uaktualnienia-programow-do-dvd.html" >http://atnel.pl/uaktualnienia-programow-do-dvd.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 paź 2013, o 23:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[eMCe2]]></name></author>
<updated>2013-10-04T22:15:14+01:00</updated>
<published>2013-10-04T22:15:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51941#p51941</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51941#p51941"/>
<title type="html"><![CDATA[zestaw ATB - RTC - TWI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4378&amp;p=51941#p51941"><![CDATA[
Potrzebna pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Zestaw ATB/ Mega 644p / 11,0592Mhz/ RTC w zestawie<br />Męczę TWI i kurde sprzętowe za chiny nie działa a I2C soft działa jak ta lala...<br />Na dodatek przy I2C_Soft nie zmienialem opozniej i mam SCL ok 480kHz (nie jak chce PCF 100kHz). Dla TWI HW ustawiam fSCL na 100kHz (próbowalem też ~400 ale nic nie daje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />)<br />Poniżej kod do przejrzenia. Biblioteki Mirkowe z płyty.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />//#include &quot;I2C_SOFT/i2c_soft.h&quot;<br /><br /><br />#define RTC 0xA2<br />uint8_t bcd2dec(uint8_t bcd);<br />uint8_t dec2bcd(uint8_t dec);<br />volatile int flaga=1;<br />enum {ss=1, mm, hh};<br />uint8_t bufor&#91;4&#93;;// rezerwacja bufora 4 bajty<br />uint8_t sekundy, minuty, godziny;<br />uint8_t znak&#91;&#93;={4,14,21,21,19,17,14,17};<br />uint8_t c=0;<br />int main(void)<br />{<br />//i2c_init();<br />lcd_init();<br />lcd_bl(1);<br />lcd_str(&quot;TEST&quot;);<br />i2cSetBitrate(100);<br /><br />//INT0<br />EICRA |= (1&lt;&lt;ISC01);<br />EIMSK |= (1&lt;&lt;INT0);<br />PORTD |= (1&lt;&lt;PD2);<br />lcd_defchar(0x80,znak);<br /><br /><br />// Ustawianie czasu na godzinê: 14:41:22<br /><br />bufor&#91;0&#93; = 0;// setne czêœci sekundy<br />bufor&#91;1&#93; = dec2bcd(22);// sekundy<br />bufor&#91;2&#93; = dec2bcd(27);// minuty<br />bufor&#91;3&#93; = dec2bcd(20);// godziny<br />// zapis 4 bajtów z bufora pod adres 0x01 w pamiêci RAM naszego RTC<br />//I2C_write_buf( RTC, 0x01, 4, bufor );<br />//TWI_write_buf( RTC, 0x01, 4, bufor );<br /><br /><br />lcd_cls();<br />lcd_str(&quot;Godzina:&quot;);<br />lcd_locate(1,0);<br />lcd_int(TWBR);<br />sei();<br />while(1)<br />{<br />if(flaga==1)<br />{<br /><br />    TWI_read_buf( RTC, 0x01, 4, bufor );<br />    //I2C_read_buf( RTC, 0x01, 4, bufor );<br /><br /><br /><br /><br />sekundy = bcd2dec( bufor&#91;ss&#93; );<br />minuty = bcd2dec( bufor&#91;mm&#93; );<br />godziny = bcd2dec( bufor&#91;hh&#93; );<br /><br />// wyœwietlenie czasu na LCD<br />lcd_locate(1,0);<br />if( godziny &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(godziny);<br />lcd_str(&quot;:&quot;);<br />if( minuty &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br />lcd_str(&quot;:&quot;);<br />if( sekundy &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br /><br /><br /><br />flaga=0;<br /><br />}<br />lcd_locate(1,12);<br />lcd_str(&quot;\x80&quot;);<br /><br />}<br />}<br /><br /><br />// konwersja liczby BCD na dziesiêtn¹<br />uint8_t bcd2dec(uint8_t bcd) {<br />    return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}<br /><br />// konwersja liczby dziesiêtnej na BCD<br />uint8_t dec2bcd(uint8_t dec) {<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);<br />}<br /><br />// procedura obs³ugi przerwania INT 0<br />ISR( INT0_vect ) {<br />flaga = 1;<br />}[/syntax]<br />Po odkomentowaniu I2C_SW a zakomentowaniu TWI wszystko ładnie śmiga...<br /><br />I biblioteka.<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />#include &quot;i2c_twi.h&quot;<br /><br /><br /><br />void i2cSetBitrate(uint16_t bitrateKHz) {<br />uint8_t bitrate_div;<br /><br />bitrate_div = ((F_CPU/1000L)/bitrateKHz);<br />if(bitrate_div &gt;= 16)<br />bitrate_div = (bitrate_div-16)/2;<br /><br />TWBR = bitrate_div;<br />}<br /><br />void TWI_start(void) {<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTA);<br />while (!(TWCR&amp;(1&lt;&lt;TWINT)));<br /><br />}<br /><br />void TWI_stop(void) {<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO);<br />while ( !(TWCR&amp;(1&lt;&lt;TWSTO)));<br /><br />}<br /><br />void TWI_write(uint8_t bajt) {<br />TWDR = bajt;<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN);<br />while ( !(TWCR&amp;(1&lt;&lt;TWINT)));<br /><br /><br />}<br /><br />uint8_t TWI_read(uint8_t ack) {<br />TWCR = (1&lt;&lt;TWINT)|(ack&lt;&lt;TWEA)|(1&lt;&lt;TWEN);<br />while ( !(TWCR &amp; (1&lt;&lt;TWINT)));<br />return TWDR;<br />}<br /><br /><br /><br />void TWI_write_buf( uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf ) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />while (len--) TWI_write(*buf++);<br />TWI_stop();<br />}<br /><br /><br /><br />void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />TWI_start();<br />TWI_write(SLA + 1);<br />while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />TWI_stop();<br /><br /><br />}[/syntax]<br /><br />Podpiąłem sobie analizatorek do SCL i SDA i odziwo przy tym sprzętowym TWI ładnie co sekundę zgodnie z przerwaniem widzę dane na lini <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /> Za to wygląda to tak jakby się zwieszała funkcja i nie wykonywało się już dalej wyświetlanie na lcd... ale czemu na analizatorze widzę dane co 1 sek? Na dodatek jak wartości odczytane analizatorem wklepie w BCD2DEC to otrzymuję prawidłowe wartości HH:MM:SS także pomysłów brak. Pewnie zamotałem ale męczę to już na wszystkie strony parę godzin i nic z tego nie ma także jakby coś było niejasne to pytać proszę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />TWI:<br /><a href="http://forum.atnel.pl/_obrazki/o/1363/84013eb1b55fc94bec0a7bfe6da26745.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1363/84013eb1b55fc94bec0a7bfe6da26745.png" alt="Obrazek" /></a><br /><br />I2C_SOFT:<br /><a href="http://forum.atnel.pl/_obrazki/o/1363/3f4b9f7e9940b3f93813dd6a868034af.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1363/3f4b9f7e9940b3f93813dd6a868034af.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1363">eMCe2</a> — 4 paź 2013, o 22:15</p><hr />
]]></content>
</entry>
</feed>