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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-15T18:52:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=9063&amp;mode</id>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-14T10:09:50+01:00</updated>
<published>2014-11-14T10:09:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103902#p103902</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103902#p103902"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103902#p103902"><![CDATA[
Jak nie znajdę innego rozwiązania to właśnie planuję samą multipleksację zrobić na osobnym małym procku, tylko dane podsyłać będę przez UART np..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 14 lis 2014, o 10:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2014-11-14T09:58:58+01:00</updated>
<published>2014-11-14T09:58:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103901#p103901</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103901#p103901"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103901#p103901"><![CDATA[
Można by się jeszcze pokusić o sterowanie anod wyświetlaczy z układu CD4017, a do taktowania tego układu wykorzystać generator na LM555. Wtedy sygnał taktowania tego układu doprowadzić do procesora na przerwanie i tylko w tym przerwaniu ustawiać odpowiednie wartości portu z danymi do segmentów wyświetlacza. Dodatkowo można użyć konwersji BCD  i wtedy do sterowania segmentów wyświetlaczy mikroprocesor będzie sterował tylko 4 pinami. Robiłem kiedyś taki układ jeszcze w bascomie na attiny2313 gdzie brakowało mi wolnych pinów, program był sporo odciążony dzięki takiemu podejściu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 14 lis 2014, o 09:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-14T09:10:52+01:00</updated>
<published>2014-11-14T09:10:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103900#p103900</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103900#p103900"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103900#p103900"><![CDATA[
Ja liczę 50Hz na wyświetlacz. Czyli w moim przypadku 16*50=800Hz.<br />F_CPU 18432000,<br />preskaler 1024,<br />porównanie w OCR 23 (dałem 20, bo kątem oka widoczne było lekkie migotanie).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 14 lis 2014, o 09:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2014-11-13T18:48:04+01:00</updated>
<published>2014-11-13T18:48:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103787#p103787</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103787#p103787"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103787#p103787"><![CDATA[
A z jaką częstotliwością pracuje multipleksacja wyświetlacza led?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 13 lis 2014, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-13T16:41:19+01:00</updated>
<published>2014-11-13T16:41:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103758#p103758</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103758#p103758"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103758#p103758"><![CDATA[
Wcześniej miałem w przerwaniu i było też w porządku. Ale do układu dołączyłem moduł ethernetowy, również na SPI. <br />Zbyt częste przerwania 800Hz gryzły się z modułem i działał w kratkę. W sumie to przerwanie dalej sobie działa, ale teraz jest krótkie bez wysyłania na SPI.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 13 lis 2014, o 16:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2014-11-13T14:02:54+01:00</updated>
<published>2014-11-13T14:02:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103729#p103729</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103729#p103729"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103729#p103729"><![CDATA[
Miałem bardzo podobny problem, kombinowałem na wszystkie sposoby a pomogło dopiero jak dałem procedurę multipleksacji wyświetlaczy led w przerwanie oddzielnego timera. Wtedy jak ręką odjął wszystkie problemy z mruganiem wyświetlaczy itp. Innej opcji nie widzę jak to zrobić aby wyświetlanie nie było w przerwaniu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 13 lis 2014, o 14:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-13T07:23:19+01:00</updated>
<published>2014-11-13T07:23:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103697#p103697</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103697#p103697"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103697#p103697"><![CDATA[
Ano tak, ale w timer0 mam timery programowe:<br /><br />[syntax=c]ISR(TIMER0_COMPA_vect){<br /><br />  // timer programowy na potrzeby superdebounce i innych funkcji<br /><br />              uint16_t n;<br /><br />  n = Timer1;<br />  if (n) Timer1 = --n;<br />  n = TimerBuz;<br />  if (n) {TimerBuz = --n; BUZ_ON;} //pikanie w menu<br />  else BUZ_OFF;<br />  n=powrot;<br />  if (n) powrot = --n;<br /><br />  //multiled();<br /><br /><br /><br />                led_flag=1;<br /><br /><br />  }[/syntax]<br /><br />i ustawiam flagę w której multipleksuję wyświetlacze funkcją multiled().<br /><br /><br />EDIT;<br /> Wywaliłem zezwolenie na przerwanie, skasowałem funkcję przerwania i działa, ale z ręcznym zerowaniem flagi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 13 lis 2014, o 07:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-11-12T21:45:24+01:00</updated>
<published>2014-11-12T21:45:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103650#p103650</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103650#p103650"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=103650#p103650"><![CDATA[
<div class="quotetitle">Rafał555 napisał(a):</div><div class="quotecontent"><br />W przerwaniu dodaję sekundy to go nie wyłączam.<br /></div><br />A ja widzę, że w przerwaniu:<br />[syntax=c]ISR( INT0_vect )[/syntax]<br />zwiększasz sekundy. Dlatego proponowałem usunięcie linii:<br />[syntax=c]TIMSK0 |= (1&lt;&lt;OCIE0A);[/syntax]<br />Czy masz funkcję:<br />[syntax=c]ISR(TIMER0_COMPA_vect)[/syntax]<br />?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 12 lis 2014, o 21:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-08T12:32:34+01:00</updated>
<published>2014-11-08T12:32:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102890#p102890</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102890#p102890"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102890#p102890"><![CDATA[
No właśnie doczytałem już to automatyczne zerowanie flagi.<br />Ale nijak to nie działa. Jak wpiszę zanegowane sprawdzenie to przepuszcza warunek z prędkością pętli, a jak sprawdzam tak:<br /><br />[syntax=c]if (TIFR0 &amp; (1&lt;&lt;OCF0A))[/syntax] <br /><br />to przepuszcza co jakiś czas pojedynczą cyferkę. <br />  Jakiś babol siedzi u mnie w programie i pewnie to ma wpływ na beznadziejną pracę wyświetlacza LED.<br /> W przerwaniu dodaję sekundy to go nie wyłączam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 8 lis 2014, o 12:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-11-07T21:21:21+01:00</updated>
<published>2014-11-07T21:21:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102848#p102848</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102848#p102848"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102848#p102848"><![CDATA[
Jak jest linia:<br />[syntax=c]TIMSK0 |= (1&lt;&lt;OCIE0A);[/syntax]<br />i odpowiednia funkcja obsługi przerwania (ISR). To pierwsze co procesor robi po ustawieniu tej flagi przerwania to skok do funkcji obsługi przerwania, a tam flaga zostaje automatycznie wyzerowana i po powrocie do pętli głównej jest już nieaktywna i dlatego to nie działa. Jak chcesz ją sam zerować to nie zezwalaj na przerwanie i wtedy funkcja obsługi przerwania nie jest potrzebna, bo i tak się nie wykona.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 7 lis 2014, o 21:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-06T11:50:48+01:00</updated>
<published>2014-11-06T11:50:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102585#p102585</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102585#p102585"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102585#p102585"><![CDATA[
plik pomiar.c z funkcją pomiar(), która wykonywana jest co jedną sekundę w pętli głównej:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />#include &quot;pomiar.h&quot;<br />#include &quot;../SPI/spi_led.h&quot;<br />#include &quot;../1Wire/ds18x20.h&quot;<br />#include &quot;../ZEGAREK/zegarek.h&quot;<br /><br /><br />int8_t temp_wew, temp_zew, temp_wn, temp_obud;<br />uint8_t subzero, cel, cel_fract_bits;<br />uint8_t ds_fr&#91;4&#93;={0,2,5,7};<br /><br />volatile uint8_t miganie;<br />volatile uint8_t int0_flag=1;<br /><br />uint8_t sekunda;<br />uint8_t czujniki_cnt;/* ilość czujników na magistrali */<br /><br />void pomiar(void){<br /> //*****************termometry***********************//<br /><br /><br /><br /> /* co trzy sekundy gdy reszta z dzielenia modulo 3 == 0 sprawdzaj ilość dostępnych czujników */<br /> if( 0 == (sekunda%30) ) {<br /><br /> uint8_t *cl=(uint8_t*)gSensorIDs;// pobieramy wskaźnik do tablicy adresów czujników<br /> for( uint8_t i=0; i&lt;MAXSENSORS*OW_ROMCODE_SIZE; i++) *cl++ = 0; // kasujemy całą tablicę<br /> czujniki_cnt = search_sensors();// ponownie wykrywamy ile jest czujników i zapełniamy tablicę<br />// TimerBuz=5;<br /> }<br /><br /> /* co trzy sekundy gdy reszta z dzielenia modulo 3 == 1 wysyłaj rozkaz pomiaru do czujników */<br /> if( 3 == (sekunda%30) ) { DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br /> //TimerBuz=15;<br /> }<br /><br /> /* co trzy sekundy gdy reszta z dzielenia modulo 3 == 2 czyli jedną sekundę po rozkazie konwersj<br />  *  dokonuj odczytu i wyświetlania temperatur z 2 czujników jeśli są podłączone, jeśli nie<br />  *  to pokaż komunikat o błędzie<br />  */<br /> if( 6 == (sekunda%30) ) {<br /> //TimerBuz=30;<br /> if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br /> {<br />     if(subzero) U.wys1.t1=12;else U.wys1.t1=10;<br />     U.wys1.t2 = cel/10;    U.wys1.t3 = cel%10;<br />     U.wys1.t4=cel_fract_bits;<br />                 if (subzero) temp_wew = cel-(2*cel);    //jesli temp. ujemna, zapisz jako wartosć ujemną<br />                 else temp_wew = cel;<br /><br /> }<br /><br /><br />                     if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br />                     {<br />                     if(subzero) U.wys2.t1=12;else U.wys2.t1=10;<br />                        U.wys2.t2 = cel/10;    U. wys2.t3 = cel%10;<br />                        U.wys2.t4=cel_fract_bits;<br />                     if (subzero) temp_zew = cel-(2*cel); //zamiana na wartosć ujemną<br />                     else temp_zew = cel;<br />                     }<br /><br />                     if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;2&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br />                     {<br />                         if(subzero) U.wys3.t1=12;else U.wys3.t1=10;<br />                                                 U.wys3.t2 = cel/10;    U.wys3.t3 = cel%10;<br />                                                 U.wys3.t4=cel_fract_bits;<br />                         if (subzero) temp_wn = cel-(2*cel);<br />                         else temp_wn = cel;<br />                     }<br /> if (temperature.ds_cel&lt;0) U.wys4.t1=12;  else U.wys4.t1=10;<br />                    U.wys4.t2=temperature.ds_cel/10;<br />                    U.wys4.t3=temperature.ds_cel%10;<br />                    if (temperature.ds_cel &gt;=0) U.wys4.t4=ds_fr&#91;temperature.ds_fract&#93;;<br />                    else U.wys4.t4=ds_fr&#91;3-temperature.ds_fract&#93;;  //jek ujemna odwrotnie wpisuj dziesętną temperatury<br />                      temp_obud=temperature.ds_cel;<br /> }}<br /><br /><br />ISR( INT0_vect ) {<br /><br />/* zwiększ licznik sekund */<br />if(++sekunda&gt;59) {<br />sekunda=0;            /* jeśli ilość sekund &gt; 59 - wyzeruj */<br />    //if (++minuta&gt;59) minuta=0;<br />             }<br />    miganie= !miganie;<br /><br />int0_flag = 1;<br /><br />}[/syntax]<br /><br />plik h:<br />[syntax=c]#ifndef POMIAR_H_<br />#define POMIAR_H_<br /><br />extern int8_t temp_wew, temp_zew, temp_wn;<br />//extern uint8_t subzero, cel, cel_fract_bits;<br />extern volatile uint8_t int0_flag;<br />extern volatile uint8_t miganie;<br /><br />//extern uint8_t sekunda;<br />//extern uint8_t czujniki_cnt;/* ilość czujników na magistrali */<br /><br />void pomiar(void);<br /><br />#endif /* POMIAR_H_ */[/syntax]<br /><br />  I tak przy okazji chciałem zapytać jak poprawnie używać flagi sprzętowej. Tak mam ustawiony Timer0:<br />[syntax=c]// ustawienie TIMER0  cztery poczwórne wyswietlacze - ok. 800 Hz<br />    TIMSK0 |= (1&lt;&lt;OCIE0A);<br />             // zezwolenie na przerwanie CompareMatch<br />    TCCR0A |= (1&lt;&lt;WGM01);// tryb CTC<br />    TCCR0B |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);// preskaler = 1024<br /><br />    OCR0A = 15;[/syntax]<br /><br /> A tak używam flagi w pętli głównej:<br />[syntax=c]if (TIFR0 &amp; (1&lt;&lt;OCF0A))  // //flaga ustawiana w przerwaniu 800Hz<br />//if (led_flag)<br /> {<br /> multiled(); //led_flag=0;<br />TIFR0 = (1&lt;&lt;OCF0A); }                      //odswieżanie 16 wyswietlaczy LED[/syntax]<br /><br /> i wyświetlacze nie działają. Jak ustawiam flagę &quot;led_flag&quot; (teraz zakomentowaną)to działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 6 lis 2014, o 11:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-06T11:12:18+01:00</updated>
<published>2014-11-06T11:12:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102575#p102575</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102575#p102575"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102575#p102575"><![CDATA[
<div class="quotetitle">Rafał555 napisał(a):</div><div class="quotecontent"><br />Największa zwiecha jest podczas odczytu temperatur z z trzech DS18b20.<br /></div><br />To może pokaż jak ty to robisz w kodzie<br /><br />bo na razie to nie widać tego<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 lis 2014, o 11:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-06T10:41:38+01:00</updated>
<published>2014-11-06T10:41:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102573#p102573</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102573#p102573"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102573#p102573"><![CDATA[
No i zrobiłem jak mówiłem. Teraz karta sieciowa działa i nie ma wpływu na multipleksowanie. Natomiast ma wpływ przerwanie od INT0 sterowane z DS3231 co 1 sekundę. W przerwaniu wykonywane jest dodawanie sekund i ustawianie flagi, czyli tyle co nic. Między flagami natomiast co 30 sek. szukanie, rozkaz pomiaru i odczyt z trzech DS18b20, co sekundę odświeżanie LCD, odczyt temperatury i czasu z DS3231, wysłanie na terminal jednej temperatury. Może poczekać z tym do czasu zmontowania układu na docelowej płytce ? Teraz to trochę taka pajęczynka, długie przewody i wygląda to tak:<br /><a href="http://forum.atnel.pl/_obrazki/o/2697/e676a746f11f75b3f86f06b7332551b4.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2697/e676a746f11f75b3f86f06b7332551b4.jpg" alt="Obrazek" /></a><br /><br />Tutaj kawałek funkcji main:<br />[syntax=c]int main(void){<br /><br />DDRC |= (1&lt;&lt;PC3);       //pin Buzzera jako wyjscie<br />DDRA |= (1&lt;&lt;PA7);<br />//DDRB |= (1&lt;&lt;PB4);         //CS jako wyjcie (musi być ustawione mimo zmiany CS na inny pin)<br />PORTA |= (1&lt;&lt;PA7);   // podswietlenie LCD<br /><br /><br /><br />    //uint8_t zeg_flag=1;<br />    void ir_zero_bip(void);<br />    void menu_1(TDATETIME *dt);<br /><br /><br /><br />    InitSpi();<br />    init_tcp();<br />    lcd_init();             //inicjalizacja LCD<br />    ir_init();<br />lcd_locate(0,3);<br />    lcd_str(&quot;STEROWNIK&quot;);<br />    lcd_locate(1,5);<br />    lcd_str(&quot;RAMAJA&quot;);<br />    _delay_ms(1500);<br />    lcd_cls();<br /><br /><br />SendSpi(0,0);<br />USART_Init(__UBRR);<br />zegarek_init();<br />_delay_ms(1000);<br />sei();<br /><br /><br />while(1){          //----------------pętla nieskończona-------------------<br />//TimerBuz=5;<br /><br /><br />if (int0_flag )   {<br />               ds_get_temp(&amp;temperature);<br /><br />               if (!ust_dataczas)         //jak ustawiam zegar i datę to wyłącz odczyt z DSa.<br />       zegarek_odczyt(&amp;datetime);<br /><br />                  pomiar();<br />//          if(zeg_flag)       //jeżeli nie jest wywietlane co innego to pokaż godzinę i datę<br />//          {<br /><br />           lcd_locate(0,0);<br />           zegarek_show(&amp;datetime);<br />           lcd_locate(1,0);<br />                   data_show(&amp;datetime);<br /><br /><br />IR_ZEROWANIE();   //dodatkowe zerowanie flagi pilota co 1s, aby przypadkowy klawisz nie zablokował działania<br /><br />   uart_putint(temp_wew,10);<br /><br /><br /><br /><br />           int0_flag=0;          //kasowanie flag<br />}<br /> //if(!((TIFR0)&amp;(1&lt;&lt;OCF0A)))  // //flaga ustawiana w przerwaniu 800Hz<br />if (led_flag){<br /> multiled(); led_flag=0;}                      //odswieżanie 16 wyswietlaczy LED<br /> //TIFR0 |= (1&lt;&lt;OCF0A);<br /><br /><br />send_tcp();   //wysyłanie strony www<br /><br />      menu_1(&amp;datetime);    //sprawdzanie pilota IR<br /><br />}}<br /><br />//////////-----------koniec  main--------------//////////////[/syntax]<br /><br /> Wszystko wykonywane jest liniowo jak widać, wszystko wyrzucone z przerwań.<br /><br />Największa zwiecha jest podczas odczytu temperatur z z trzech DS18b20.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 6 lis 2014, o 10:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-02T19:50:51+01:00</updated>
<published>2014-11-02T19:50:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102043#p102043</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102043#p102043"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102043#p102043"><![CDATA[
<div class="quotetitle">Rafał555 napisał(a):</div><div class="quotecontent"><br />I teraz tak sobie myślę, że odświeżanie LEDów trzeba chyba wyrzucić z przerwania timera, bo pewnie wcina się to przerwanie jak karta sieciowa robi swoje.<br /></div><br />O widzisz i teraz to sobie dobrze kombinujesz ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lis 2014, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-02T19:40:22+01:00</updated>
<published>2014-11-02T19:40:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102041#p102041</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102041#p102041"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102041#p102041"><![CDATA[
No mam osobne piny CS dla LED i karty sieciowej. Już chyba zatrybiłem o co chodzi. Muszę tylko bardziej dogłębnie <br />poznać jak ta karta wysyła dane znaczy się jak często.<br /> Bo chodzi chyba o to, że jak wysyłam dane do rejestrów sterujących wyświetlaczami to nie mogę w tym samym czasie wysyłać danych do karty? <br /> Może dać karcie ethernet pełną swobodę ( korzystam z gotowych bibliotek pana Mirka), natomiast dla LEDów zwiększyć<br />częstotliwość odświeżania, żeby miały większą szansę wstrzelić się z odczytem własnych danych, bo będę musiał na czas pracy karty zablokować jakąś flagą odświeżanie.<br /> I teraz tak sobie myślę, że odświeżanie LEDów  trzeba chyba wyrzucić z przerwania timera, bo pewnie wcina się to przerwanie jak karta sieciowa robi swoje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 2 lis 2014, o 19:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-11-02T17:16:36+01:00</updated>
<published>2014-11-02T17:16:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102009#p102009</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102009#p102009"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=102009#p102009"><![CDATA[
Kolega sygnały CS od wyświetlaczy musisz mieć na osobnym pinie, od ATB-Ethernetu osobny. W przypadku rejestrów i potrzeby wrzucenia używasz ten co jest podłączony do Latch Clock, a w przypadku modułu do ATB osobny.<br /><br />Podobne sterowanie masz pokazane na Atnelowskich wyświetlaczach OLED z dodatkowym pinem.<br />Jak sterować masz w poradnikach o OLEDach.<br /><br /><span style="color: #0040FF">z Niebieskim pozdRowieniem,<br />Doman89</span><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Możesz zawsze zrobić też tak, aby rejestry do których są podłączone LEDy, miały wsuwane te same dane podczas dodawania danych od ATB-Ethernet.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 2 lis 2014, o 17:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-15T18:52:41+01:00</updated>
<published>2014-11-02T15:21:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101960#p101960</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101960#p101960"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101960#p101960"><![CDATA[
Schematu nie posiadam jeszcze, bo opieram się na zestawie ATB 1.04. Moduł ethernetowy wpięty jest w gniazdo programatora, a sygnał CS połączony zworką do PB4. Wyświetlacze z rejestrami są na osobnej płytce, a schemat zaginął po zmianie systemu, ale jest oparty o ten z Elektrody:<br /><img src="http://obrazki.elektroda.pl/1300731900_1353690793.jpg" alt="Obrazek" /><br /><br /> i działa poprawnie ponad pół roku (podłączony bezpośrednio do pinów procesora na zestawie). <br /> Coś mi się widzi, że ja nie rozumiem jak ma działać sterowanie tymi sygnałami CS.<br /> No, bo przecież LEDy są multipleksowane w przerwaniu z częstotliwością ok. 800 Hz dla 16 wyświetlaczy i CS na PC7 działa jako zatrzask (oparte na bibliotece z BB). Natomiast ATB Ethernet steruje sobie swoim CS na PB4 i najwyraźniej blokuje i sądząc po efektach i migotkach wysyła swoje dane na LEDy. Właśnie nie mogę zakumać jak poprawnie sterować tymi sygnałami CS. Biblioteka do modułu ethernet również jest z książki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 2 lis 2014, o 15:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-02T10:20:23+01:00</updated>
<published>2014-11-02T10:20:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101927#p101927</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101927#p101927"/>
<title type="html"><![CDATA[Re: Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101927#p101927"><![CDATA[
<div class="quotetitle">Rafał555 napisał(a):</div><div class="quotecontent"><br />Jest możliwe pogodzenie ethernetu i multipleksowania na jednej magistrali SPI ?<br /></div><br />Pewnie, że jest możliwe - po to są sygnały CS (Chip Select) na tej magistrali do wybranych układów ... A jeśli ci coś nie gra to nie szukaj przyczyn w sprzęcie tzn w sensie w tym że coś się nie wyrabia rzekomo sprzętowo bo niby eth potrzebuje tam dużego taktowania itp ...<br /><br />Panie taktować możesz jak chcesz - i z taką samą szybkością możesz taktować równie dobrze SCK do rejestrów przesuwnych bo co to im zaszkodzi ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />W takich przypadkach (o ile oczywiście dobrze to wszystko po podłączałeś - a tego nie wiemy bo przecież schematu nie pokazujesz &quot;lubię&quot; takie pytania <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> )..... to w 99% zwykle chodzi o problem w kodzie programu ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lis 2014, o 10:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2014-11-02T09:39:37+01:00</updated>
<published>2014-11-02T09:39:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101919#p101919</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101919#p101919"/>
<title type="html"><![CDATA[Moduł Atb-Ethernet i multipleksowanie na SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9063&amp;p=101919#p101919"><![CDATA[
Witam. Na płytce ATB 1.04 z Atmega 644 i kwarc 18,432 mam już zainstalowane multipleksowanie 4 wyświetlaczami czteropozycyjnymi poprzez 3 rejestry przesuwne 74HC595 za pomocą SPI, Jest też uruchomiony wyświetlacz LCD, sterowanie menu przez IR, zegar DS3231, odczyt z 3 czujników temp.  DS18b20+ jeden z DS3231.<br /> Postanowiłem dołożyć jeszcze moduł Atb-Ethernet, aby na stronie wyświetlać np. temperatury z czujników. Efekt jest taki, że cyferki wyświetlacza LED radośnie sobie pomrugują jakby SPI się nie wyrabiało, a stronę internetową raz załaduje, a raz nie(z naciskiem na nie). Bez obsługi LEDów moduł ethernet działa dobrze.  Jest możliwe pogodzenie ethernetu i multipleksowania na jednej magistrali SPI ?<br /> Z tego co czytałem obsługa Modułu ethernetowego ma spore wymagania- szybki kwarc i magistrala SPI ustawiona na max.<br /> Pin SS dla sterowania zatrzaskiem rejestrów zmieniłem na PC7, a dla karty zostawiłem na PB4.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 2 lis 2014, o 09:39</p><hr />
]]></content>
</entry>
</feed>