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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-02-20T20:57:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5917&amp;mode</id>
<entry>
<author><name><![CDATA[polarczn]]></name></author>
<updated>2014-02-20T20:57:10+01:00</updated>
<published>2014-02-20T20:57:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=71276#p71276</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=71276#p71276"/>
<title type="html"><![CDATA[Re: Problem z Timerem1 - Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=71276#p71276"><![CDATA[
[syntax=c]#include &lt;stdlib.h&gt; <br />#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /># include &lt;math.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;HD44780.h&quot;<br /># define a 50<br /># define keypin PIND<br /># define keyddr DDRD<br /># define keyport PORTD<br /># define keypd5 _BV(PD5)<br /># define keypd6 _BV(PD6)<br /><br />volatile _Bool keypin_pressed = 0; // flaga wciśniętego przycisku<br />volatile uint8_t przechowuje=0;<br />volatile uint8_t ostatnia=0;<br />uint16_t ADC_wynik;<br />char buffer&#91;16&#93;;<br />void Timer1_Init ()<br />{<br />TCCR1A |= (1&lt;&lt;COM1A1)|(1&lt;&lt;WGM11)|(1&lt;&lt;WGM10);// PWM Phase Correct 10 bit, <br />TCCR1B |=(1&lt;&lt;CS12);// preskaler 64<br />TCNT1=0;//początkowa wartość timera<br />OCR1A=600; // wartość wypełnienia 600/1024<br />}<br />void hd44780()<br />{<br />LCD_Initalize();<br /><br />LCD_Home();<br />LCD_GoTo(1,1);<br />LCD_WriteText(&quot;HD44780&quot;);<br /><br />}<br /><br />    ISR(TIMER2_COMP_vect)<br />    {<br />            if ((keypin &amp; keypd6) == 0)<br />            {<br />                    ostatnia = 1;<br />            }<br />            else<br />            {<br />                    ostatnia = 0;<br />            }<br />     <br />            if ((przechowuje = (((przechowuje &lt;&lt; 1) &amp; 0x0F) | (!(keypin &amp; keypd6))) == 1))<br />            {<br />                    keypin_pressed = 1;<br />            }<br />           <br />            if ((keypin &amp; keypd5) == 0)<br />            {<br />                    ostatnia = 1;<br />            }<br />            else<br />            {<br />                    ostatnia = 0;<br />            }<br />     <br />            if ((przechowuje = (((przechowuje &lt;&lt; 1) &amp; 0x0F) | (!(keypin &amp; keypd5))) == 1))<br />            {<br />                    keypin_pressed = 1;<br />            }<br />    }<br /><br /><br />int main(void)<br />{<br />sei();<br />Timer1_Init();<br />hd44780();<br /><br />ADMUX |= (1&lt;&lt;REFS0);<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1);<br />while(1)<br />{<br />ADMUX |= ((1&lt;&lt;MUX0)|(1&lt;&lt;MUX2));<br />ADCSRA |= (1&lt;&lt;ADSC);<br />while (ADCSRA &amp; (1&lt;&lt;ADSC));<br /> uint8_t ADC_LO = ADCL;<br />ADC_wynik = (ADCH&lt;&lt;8)| ADC_LO;<br />                        sprintf(buffer, &quot;%u&quot;, ADC_wynik);<br />LCD_GoTo(7,2);<br /><br />LCD_WriteText(buffer);<br />                        _delay_ms(200);<br /><br /><br />}<br />TCCR2 |= (1&lt;&lt;WGM21)|(1&lt;&lt;COM21)|(1&lt;&lt;COM20)|(1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);<br />OCR2 |= 38;<br />TIMSK |= (1&lt;&lt;OCIE2); // przepełnienie timera<br />DDRB|=(1&lt;&lt;PB1); // dioda PB1 jako wyjście<br />keyddr|=(0&lt;&lt;PD5)|(0&lt;&lt;PD6);// przyciski podłączone do PD5 i PD6 jako wejście<br />keyport|=(1&lt;&lt;PD5)|(1&lt;&lt;PD6);// podciągnięcie ich do VCC<br /><br />PORTB|=(1&lt;&lt;PB1); // podciągnięcie do VCC<br /><br /><br /><br />while(1){<br />if(!(keypin &amp;(1&lt;&lt;PD5))){ // jeżeli wcisnę PD5 wartość a maleje, a jeżeli PD6 rośnie<br />OCR1A=OCR1A-a;<br />}<br /><br />if(!(keypin &amp;(1&lt;&lt;PD6)))<br />{<br />OCR1A=OCR1A+a;<br />}<br /> if(OCR1A&lt;0)<br /> {<br /> OCR1A=0;<br /> }<br /> if (OCR1A&gt;1024)<br /> {<br /> OCR1A=1024;<br /> }<br /> OCR1A=OCR1A-a;<br /> }<br />}[/syntax]<br />Stałem się szczęśliwym posiadaczem niebieskiej książeczki Pana Mirka. Niestety nadal nie poczyniłem za dużo postępów (czytam książkę, mam codzienne zajęcia). Dodałem kod odpowiedzialny za pomiar temperatury z ADC (PC5) za pomocą LM335. Nóżkę V- podłączyłem do GND, V+ do VCC poprzez rezystor 10k i na tej nodze mierzę temperaturę. Wynik przy obecnym kodzie 528, a powinno być około w granicach 80-120. Dodatkowo wcześniejszy kod nie działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1714">polarczn</a> — 20 lut 2014, o 20:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[karolek]]></name></author>
<updated>2014-02-10T14:46:04+01:00</updated>
<published>2014-02-10T14:46:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69667#p69667</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69667#p69667"/>
<title type="html"><![CDATA[Re: Problem z Timerem1 - Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69667#p69667"><![CDATA[
fajny plugin jest do eclipsa Bracketeer z nim napewno sie nie pogubisz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2535">karolek</a> — 10 lut 2014, o 14:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-02-09T23:13:33+01:00</updated>
<published>2014-02-09T23:13:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69583#p69583</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69583#p69583"/>
<title type="html"><![CDATA[Re: Problem z Timerem1 - Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69583#p69583"><![CDATA[
Albo pisać kod w dedykowanym środowisku np.<br /><br />eclipse <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />tam wszystkie nawiasy Ci koloruje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 9 lut 2014, o 23:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-02-09T22:15:09+01:00</updated>
<published>2014-02-09T22:15:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69560#p69560</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69560#p69560"/>
<title type="html"><![CDATA[Re: Problem z Timerem1 - Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69560#p69560"><![CDATA[
<div class="quotetitle">polarczn napisał(a):</div><div class="quotecontent"><br />Super. Wszystko działa. Powiedzcie mi jak łapiecie się w tych nawiasach, że tu brakuje, czy że jest źle zrobione jak z tymi nawiasami na końcu?<br /></div><br />Rób sobie wcięcia dla poszczególnych pętli czy sprawdzeń warunkowych z hierarchią jak w podpunktach <br />[syntax=c]1{<br />    1.1{<br />          ............<br />          ............<br />       }<br />    1.2{<br />           ...........<br />           ............<br />        }<br />}[/syntax]<br />zawsze możesz sobie robić też komentarze gdzie się zaczyna jakiś blok a gdzie kończy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 9 lut 2014, o 22:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[polarczn]]></name></author>
<updated>2014-02-09T22:04:42+01:00</updated>
<published>2014-02-09T22:04:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69553#p69553</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69553#p69553"/>
<title type="html"><![CDATA[Re: Problem z Timerem1 - Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69553#p69553"><![CDATA[
Super. Wszystko działa. Powiedzcie mi jak łapiecie się w tych nawiasach, że tu brakuje, czy że jest źle zrobione jak z tymi nawiasami na końcu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1714">polarczn</a> — 9 lut 2014, o 22:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-02-09T21:49:11+01:00</updated>
<published>2014-02-09T21:49:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69547#p69547</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69547#p69547"/>
<title type="html"><![CDATA[Re: Problem z Timerem1 - Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69547#p69547"><![CDATA[
Przerwanie ISR(TIMER2_COMP_vect)  nie masz domkniętego &quot;}&quot;<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br />[syntax=c]OCR1A=1024;<br /> }}<br /> OCR1A=OCR1A-a;<br /> }[/syntax]<br /><br />tu też coś nie gra <br />chyba miało być tak<br />[syntax=c]OCR1A=1024;<br /> }<br /> OCR1A=OCR1A-a;<br />}<br />}[/syntax]<br /><br />a tak w ogóle sprzydało by się stosować wcięcia dla przejżystośc <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=930">kurnachatka</a> — 9 lut 2014, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-02-09T21:44:20+01:00</updated>
<published>2014-02-09T21:44:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69545#p69545</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69545#p69545"/>
<title type="html"><![CDATA[Re: Problem z Timerem1 - Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69545#p69545"><![CDATA[
To były ostrzeżenia, bo operatory mają priorytety. Jak nie dasz nawiasów to może wyjść nie to co chcesz:<br />[syntax=c]ISR(TIMER2_COMP_vect) <br />{<br />if ((keypin &amp; keypd6) == 0)<br />{<br />ostatnia = 1;<br />} <br />else <br />{<br />ostatnia = 0;<br />}<br /><br />if ((przechowuje = (((przechowuje &lt;&lt; 1) &amp; 0x0F) | (!(keypin &amp; keypd6))) == 1))<br />{<br />keypin_pressed = 1;<br />}<br /><br />if ((keypin &amp; keypd5) == 0) <br />{<br />ostatnia = 1;<br />} <br />else <br />{<br />ostatnia = 0;<br />}<br /><br />if ((przechowuje = (((przechowuje &lt;&lt; 1) &amp; 0x0F) | (!(keypin &amp; keypd5))) == 1)) <br />{<br />keypin_pressed = 1;<br />}<br />}[/syntax]<br /><br />PS.<br />[syntax=c]int a=50;<br />//możesz zastąpić<br />#define a 50<br /><br />//linia<br />TIMSK |= (1&lt;&lt;TOIE1); // przepełnienie timera<br />//jest tu błędem, bo nie masz funkcji obsługi tego przerwania a do sterowania PWM nie jest potrzebna[/syntax]<br /><br />Zmiennych globalnych nie trzeba zerować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 9 lut 2014, o 21:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[polarczn]]></name></author>
<updated>2014-02-09T20:33:22+01:00</updated>
<published>2014-02-09T20:33:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69526#p69526</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69526#p69526"/>
<title type="html"><![CDATA[Problem z Timerem1 - Atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5917&amp;p=69526#p69526"><![CDATA[
Mam problem z kodem. Atmega8, taktowanie 8 Mhz. Dioda Led podłączona do PB1, 2 przyciski do PD5 i PD6. Do tego wyświetlacz. Timer2 sprawdza w porównaniu Timer2 Compare co 10 us, jaki przycisk jest wciśnięty, aby wyeliminować drgania styków. Część kodu otrzymałem na innym forum, jednak nie bardzo mi to wyjaśniono. Kod kompiluje się, jednak w części programu dotyczącej drgania styków są błędy. Proszę o pomoc.<br />[syntax=c]#include &lt;stdlib.h&gt; <br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /># include &lt;math.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;HD44780.h&quot;<br />int a=50;<br /># define keypin PIND<br /># define keyddr DDRD<br /># define keyport PORTD<br /># define keypd5 _BV(PD5)<br /># define keypd6 _BV(PD6)<br />volatile _Bool keypin_pressed = 0; // flaga wciśniętego przycisku<br />volatile uint8_t przechowuje=0; // zmienna przechowuje 4 ostatnie zmiany wciśnięć przycisku<br />volatile uint8_t ostatnia=0; // zmienna przechowuje ostatnią zmianę<br /><br />void Timer1_Init ()<br />{<br />TCCR1A |= (1&lt;&lt;COM1A1)|(1&lt;&lt;WGM11)|(1&lt;&lt;WGM10);// PWM Phase Correct 10 bit, <br />TCCR1B |=(1&lt;&lt;CS12);// preskaler 64<br />TCNT1=0;//początkowa wartość timera<br />TIMSK |= (1&lt;&lt;TOIE1); // przepełnienie timera<br />OCR1A=600; // wartość wypełnienia 600/1024<br />}<br />void hd44780()<br />{<br />LCD_Initalize();<br />LCD_Clear();<br />LCD_Home();<br />LCD_WriteText(&quot;HD44780&quot;);<br />LCD_GoTo(2,2);<br />}<br /><br />ISR(TIMER2_COMP_vect)   <br />{<br />if((keypin &amp; keypd6==0))<br />{ <br />ostatnia = 1;<br />}<br />else <br />{<br />ostatnia =0;<br />}<br /> <br />if (przechowuje = ((przechowuje &lt;&lt; 1) &amp; 0x0F | (!(keypin &amp; keypd6))) == 1)<br />{<br />keypin_pressed = 1;<br />}<br />if((keypin &amp; keypd5==0))<br />{ <br />ostatnia = 1;<br />}<br /> else <br /> {<br /> ostatnia =0;<br /> }<br /> <br />if (przechowuje = ((przechowuje&lt;&lt; 1) &amp; 0x0F | (!(keypin &amp; keypd5))) == 1)<br />{<br />keypin_pressed = 1;<br />}<br />}<br /><br />int main(void)<br />{<br />sei();<br />Timer1_Init();<br /><br /><br /><br />TCCR2 |= (1&lt;&lt;WGM21)|(1&lt;&lt;COM21)|(1&lt;&lt;COM20)|(1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20); // Timer 2 tryb CTC, preskaler 1024<br />OCR2 |= 38; // wartość tak dobrana, aby porównanie było co 10 us<br />TIMSK |= (1&lt;&lt;OCIE2); // przepełnienie timera<br />DDRB|=(1&lt;&lt;PB1); // dioda PB1 jako wyjście<br />keyddr|=(0&lt;&lt;PD5)|(0&lt;&lt;PD6);// przyciski podłączone do PD5 i PD6 jako wejście<br />keyport|=(1&lt;&lt;PD5)|(1&lt;&lt;PD6);// podciągnięcie ich do VCC<br /><br />PORTB|=(1&lt;&lt;PB1); // podciągnięcie do VCC<br />hd44780();<br /><br />while(1){<br />if(!(keypin &amp;(1&lt;&lt;PD5))){ // jeżeli wcisnę PD5 wartość a maleje, a jeżeli PD6 rośnie<br />OCR1A=OCR1A-a;<br />}<br /><br />if(!(keypin &amp;(1&lt;&lt;PD6)))<br />{<br />OCR1A=OCR1A+a;<br />}<br /> if(OCR1A&lt;0)<br /> {<br /> OCR1A=0;<br /> }<br /> if (OCR1A&lt;1024)<br /> {<br /> OCR1A=1024;<br /> }}<br /> OCR1A=OCR1A-a;<br /> }[/syntax]<br /><br /><span style="color: #FF0000">Kod wklejamy przy pomocy syntax=c - Różowy J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1714">polarczn</a> — 9 lut 2014, o 20:33</p><hr />
]]></content>
</entry>
</feed>