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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-16T12:01:20+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6374&amp;mode</id>
<entry>
<author><name><![CDATA[D_C]]></name></author>
<updated>2014-03-16T12:01:20+01:00</updated>
<published>2014-03-16T12:01:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74504#p74504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74504#p74504"/>
<title type="html"><![CDATA[Re: Pierwszy program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74504#p74504"><![CDATA[
jeżeli układ byłby zasilany bateryjnie, to niższa częstotliwość jest jak najbardziej uzasadniona, ale skoro układ jest cały czas zasilany z zasilacza, to po co bawić się, w ślimacze tępa, fakt pobór prądu jest wyższy, ale jest to różnica kilku mA, napisałem że jest ciut za wolna, dlatego że w programie autor wykorzystuje operacje w pamięci eeprom, przerwań, a to raczej powinno wykonywać się szybko (jak się mylę to mnie porawcie), zresztą Mirek często w poradnikach wspomina, żeby korzystać z wyższych częstotliwości taktowania <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1165">D_C</a> — 16 mar 2014, o 12:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[eMCe2]]></name></author>
<updated>2014-03-16T11:52:34+01:00</updated>
<published>2014-03-16T11:52:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74502#p74502</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74502#p74502"/>
<title type="html"><![CDATA[Re: Pierwszy program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74502#p74502"><![CDATA[
Kolego D_C a moze podpowiesz co nam tu da zwiekszenie predkosci taktowania? Bo w sumie skoro program dziala prawidlowo i zgodnie z zalozeniami to chyba poza wiekszym poborem pradu nic nam to nie da?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1363">eMCe2</a> — 16 mar 2014, o 11:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki23]]></name></author>
<updated>2014-03-15T22:09:37+01:00</updated>
<published>2014-03-15T22:09:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74456#p74456</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74456#p74456"/>
<title type="html"><![CDATA[Re: Pierwszy program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74456#p74456"><![CDATA[
Przy większym taktowaniu musiałbym użyć w przerwaniu timer'a szesnastobitowego. A tak, można było użyć ośmiobitowego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2824">miki23</a> — 15 mar 2014, o 22:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[D_C]]></name></author>
<updated>2014-03-15T22:01:12+01:00</updated>
<published>2014-03-15T22:01:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74453#p74453</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74453#p74453"/>
<title type="html"><![CDATA[Re: Pierwszy program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74453#p74453"><![CDATA[
ładnie rozpisałeś sobie program <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> 1MHz to chyba ciut za wolno <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=1165">D_C</a> — 15 mar 2014, o 22:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki23]]></name></author>
<updated>2014-03-15T21:46:57+01:00</updated>
<published>2014-03-15T21:46:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74449#p74449</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74449#p74449"/>
<title type="html"><![CDATA[Re: Pierwszy program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74449#p74449"><![CDATA[
Mam nadzieję że troszkę pożyje. Zapis dokonywany jest tylko przy zmianach parametrów. Gdy program pracuje z zadanym parametrami nic się nie zmienia w pamięci EEPROM. Nie chciałem żeby kolega za każdym włączeniem musiał ustawiać prędkość migania i kombinację.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2824">miki23</a> — 15 mar 2014, o 21:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-03-15T21:21:42+01:00</updated>
<published>2014-03-15T21:21:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74442#p74442</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74442#p74442"/>
<title type="html"><![CDATA[Re: Pierwszy program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74442#p74442"><![CDATA[
Gratuluję fajnego i działającego programu.<br />Mam tylko taką obawę, że w ten sposób szybko &quot;zamęczysz&quot; eeprom.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 15 mar 2014, o 21:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki23]]></name></author>
<updated>2014-03-15T20:34:29+01:00</updated>
<published>2014-03-15T20:34:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74431#p74431</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74431#p74431"/>
<title type="html"><![CDATA[Pierwszy program]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6374&amp;p=74431#p74431"><![CDATA[
Witam:)<br /><br />To mój pierwszy program. Powstał na prośbę kolegi, któremu padł sterownik do światełek choinkowych własnej roboty.<br />Przy pisaniu programu posiłkowałem się przykładami zawartymi w BB <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />:). Program zapamiętuje w pamięci EEPROM ostatnie ustawienia. Oczywiście to ośla łączka, ale program działa i cieszy. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />:).<br />Pozdrawiam wszystkich forumowiczów.<br /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 15-03-2014<br /> *      Author: Michał<br /> *      sterownik oświetlenia choinki <br /> */<br /><br /><br />// Atmega8 1MHz<br /><br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br /><br /><br />// definicje dla prepocesora<br />#define ZAR0 (1&lt;&lt;PD0)// definicje pinów, do którego podłączona jest żarówka<br />#define ZAR1 (1&lt;&lt;PD1)<br />#define ZAR2 (1&lt;&lt;PD2)<br />#define ZAR3 (1&lt;&lt;PD3)<br /><br />#define KEY_PIN0 (1&lt;&lt;PB0)//definicja pinu gdzie podłączony jest klawisz<br />#define KEY_PIN1 (1&lt;&lt;PB1)<br />#define KEY_PIN2 (1&lt;&lt;PB2)<br />#define KEY_DOWN_L !(PINB &amp; KEY_PIN0)// sprawdzenie, czy klawisz wciśnięty<br />#define KEY_DOWN_R !(PINB &amp; KEY_PIN1)<br />#define KEY_DOWN_F !(PINB &amp; KEY_PIN2)<br /><br /><br /><br /><br />uint8_t EEMEM ee_speed;//prędkość EEPROM<br />uint8_t EEMEM ee_komb;//kombinacja EEPROM<br /><br /><br /><br /><br />volatile uint8_t i;//numer elementu tablicy<br /><br /><br /> uint8_t speed;//prędkość<br /> uint8_t step = 5;//krok zmiany predkości<br /> uint8_t komb;//numer kombinacji światełek<br /><br /><br /><br /><br /><br /><br />//*******************DEKLARACJE FUNKCJI**************************************<br /><br /> void copy_eem_to_ram( void );// kopiowanie z EEPROM do RAM<br /> void copy_ram_to_eem( void );// kopiowanie z RAM do EEPROM<br /><br /><br /><br /><br /><br /><br />//********************GŁÓWNA FUNKCJA PROGRAMU********************************<br /><br /><br />int main (void)<br />{<br /><br /><br />DDRD |= ZAR0;// piny portu D – wyjściowy<br />DDRD |= ZAR1;<br />DDRD |= ZAR2;<br />DDRD |= ZAR3;<br /><br /><br /><br />DDRB &amp;= ~KEY_PIN0;// pin portu B jako wejście<br />DDRB &amp;= ~KEY_PIN1;<br />DDRB &amp;= ~KEY_PIN2;<br /><br />PORTB |= KEY_PIN0;// podciągnięcie do VCC<br />PORTB |= KEY_PIN1;<br />PORTB |= KEY_PIN2;<br /><br />//****************tablice kombinacji światełek**********************************<br /><br />uint8_t komb0&#91;&#93; = {//kombinacja 0<br />(ZAR0),<br />(ZAR1),<br />(ZAR2),<br />(ZAR3)<br />};<br /><br />uint8_t komb1&#91;&#93; = {//kombinacja 1<br />(ZAR3),<br />(ZAR2),<br />(ZAR1),<br />(ZAR0)<br />};<br /><br />uint8_t komb2&#91;&#93; = {//kombinacja 2<br />((ZAR1) | (ZAR2) | (ZAR3)),<br />((ZAR0) | (ZAR2) | (ZAR3)),<br />((ZAR0) | (ZAR1) | (ZAR3)),<br />((ZAR0) | (ZAR1) | (ZAR2))<br />};<br /><br />uint8_t komb3&#91;&#93; = {//kombinacja 3<br />((ZAR0) | (ZAR1) | (ZAR2)),<br />((ZAR0) | (ZAR1) | (ZAR3)),<br />((ZAR0) | (ZAR2) | (ZAR3)),<br />((ZAR1) | (ZAR2) | (ZAR3))<br />};<br /><br /><br />copy_eem_to_ram();//odtworzenie ostatniej kombinacji i predkości lampek<br /><br /><br />//*********************INICJALIZACJA PRZERWAŃ TIMER0**********************************<br /><br />TIMSK |= (1&lt;&lt;TOIE0);//zezwolenie na przerwanie<br />TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); //preskaler 1024<br />TCNT0 = speed;<br /><br />sei();//włączenie przerwań<br /><br /><br /><br />//******************************GŁÓWNA PĘTLA PROGRAMU*************************************8<br /><br /><br />while(1)<br />{<br /><br /><br />//************zmniejszamy prędkoć migania***********************************************<br />if( KEY_DOWN_L )<br />_delay_ms(30);<br />if( KEY_DOWN_L )<br />{ speed = speed - step;<br />if( speed &lt; 10) speed = 10;//dolna granica prędkości<br />copy_ram_to_eem();<br />}<br /><br />//************zwiększamy prędkość migania************************************************<br />if( KEY_DOWN_R )<br />_delay_ms(30);<br />if( KEY_DOWN_R )<br />{speed = speed + step;<br />if( speed &gt; 180) speed = 180;//górna granica prędkości<br />copy_ram_to_eem();<br />}<br />//***************************************************************************************<br /><br /><br /><br /><br /><br />//***********sekwencyjna zmiana kombinacji***********************************************<br /><br />if( KEY_DOWN_F)<br /> _delay_ms(30);<br />if( KEY_DOWN_F)<br />{komb++;<br />if( komb&gt;3) komb = 0;<br />copy_ram_to_eem();<br />_delay_ms(100);<br />}<br /><br />//***********zapalamy kombinację lampek*************************************************<br /><br />if(komb == 0) PORTD = komb0&#91;i&#93;;<br />if(komb == 1) PORTD = komb1&#91;i&#93;;<br />if(komb == 2) PORTD = komb2&#91;i&#93;;<br />if(komb == 3) PORTD = komb3&#91;i&#93;;<br /><br /><br /><br />}<br /><br /><br /><br /><br />}<br /><br />//**************************************************************************************<br /><br /><br /><br /><br />//****************PROCEDURA OBSŁUGI PRZERWANIA******************************************<br /><br />ISR(TIMER0_OVF_vect)<br />{<br />TCNT0 = speed;<br />i++;//zmiana elementu tablicy<br />if( i&gt;3 ) i = 0;<br />}<br /><br /><br />//***************DEFINICJE FUNKCJI******************************************************<br /><br /><br />// kopiowanie z EEPROM do RAM<br />void copy_eem_to_ram( void )<br />{<br />eeprom_read_block( &amp;speed, &amp;ee_speed, sizeof( speed));<br />eeprom_read_block( &amp;komb, &amp;ee_komb, sizeof ( komb ));<br />}<br /><br />// kopiowanie z RAM do EEPROM<br />void copy_ram_to_eem( void )<br />{<br />eeprom_write_block( &amp;speed, &amp;ee_speed, sizeof( speed ));<br />eeprom_write_block( &amp;komb, &amp;ee_komb, sizeof( komb ));<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2824">miki23</a> — 15 mar 2014, o 20:34</p><hr />
]]></content>
</entry>
</feed>