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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-04-22T23:00:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=6843&amp;mode</id>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-22T23:00:02+01:00</updated>
<published>2014-04-22T23:00:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78904#p78904</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78904#p78904"/>
<title type="html"><![CDATA[Re: Attiny45 i podczerwień]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78904#p78904"><![CDATA[
Fajny kod. Dobrze, że używa przerwania. <br />Ale chyba będę musiał trochę nakombinować jeszcze.<br />1. Zezwolić na przerwanie w przerwaniu.<br />2. Jakoś kreatywnie podejść do problemu rejestru 595. Bo sygnał z odbiornika będzie trafiał w wejście SCK. Więc z stanie bezczynnym będzie na rejestrze stan wysoki uniemożliwiający jego taktowanie ( nie będzie zboczy narastających).<br />Ale chyba zrobię tak, że odbiornik IR będę zasilał z wyjścia procesora PB0. I na czas transmisji do rejestru po prostu zabiorę mu zasilanie.<br />Zobaczymy czy to zadziała.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 22 kwi 2014, o 23:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gufim]]></name></author>
<updated>2014-04-22T06:57:09+01:00</updated>
<published>2014-04-22T06:57:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78827#p78827</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78827#p78827"/>
<title type="html"><![CDATA[Re: Attiny45 i podczerwień]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78827#p78827"><![CDATA[
Witam kiedys zrobilem taki odbiornik na ATtiny13 ponizej kod moze ci pomoze<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *F_CPU 9600000 MHz<br /> *ATtiny 13<br /> *Wejscie INT0<br /> *<br /> *  Created on: 07-05-2013<br /> *      Author: MIREK<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />//<br />#define LED_PIN (1&lt;&lt;PB4)<br />//#define LED1_PIN (1&lt;&lt;PB3)<br />//#define LED2_PIN (1&lt;&lt;PB0)<br />//#define LED3_PIN (1&lt;&lt;PB2)<br />//#define LED_ON PORTB |= LED_PIN     //makrodefinicja wlaczajaca<br />#define LED_OFF PORTB &amp;= ~LED_PIN   //makrodefinicja wylaczajaca<br />//#define LED1_OFF PORTB &amp;= ~LED1_PIN   //makrodefinicja wylaczajaca<br />//#define LED2_OFF PORTB &amp;= ~LED2_PIN   //makrodefinicja wylaczajaca<br />//#define LED3_OFF PORTB &amp;= ~LED3_PIN   //makrodefinicja wylaczajaca<br /><br />volatile uint8_t command;<br />volatile uint8_t toggle_bit;// bit TOGGLE<br />volatile uint8_t last_toggle;<br />volatile uint8_t key_time;<br /><br />//-----------------------------------------------------------------------------<br />ISR(INT0_vect)<br />{<br />   static unsigned char n, pb;<br />   static unsigned int code;<br /><br />   switch(n)<br />   {<br />      case 0:<br /><br />         if(MCUCR &amp; (1&lt;&lt;ISC00))<br />         {<br />            MCUCR &amp;= ~(1&lt;&lt;ISC00);<br />    TCNT0 = 0x00; TIFR0 |= (1&lt;&lt;TOV0);<br />         }<br />         else<br />         {<br />    if((TCNT0&gt;135) || (TIFR0 &amp; (1&lt;&lt;TOV0))) // 135 = 3,6ms<br />    {<br />               pb=0;<br />       code = 0x03;<br />               TCNT0  = 0x00; TIFR0 |= (1&lt;&lt;TOV0);<br />               n = 1;<br />    }<br />            MCUCR |= (1&lt;&lt;ISC00);<br /> }<br />      break;<br /><br />      case 1:<br />      case 2:<br />         if((TCNT0&gt;15) &amp;&amp; (TCNT0&lt;51))  // 15 = 0.4ms, 51 = 1.35ms<br /> {<br />            MCUCR ^= (1&lt;&lt;ISC00);<br />            TCNT0  = 0x00; TIFR0 |= (1&lt;&lt;TOV0);<br />    n++;<br /> }<br /> else n = 0;<br /><br />      break;<br /><br />      default:<br /><br />         if((TCNT0&gt;15) &amp;&amp; (TCNT0&lt;51))<br /> {<br />             if(!pb)<br />             {<br />        pb = 1;<br />                code &lt;&lt;= 1;<br />if(code&amp;0x2) code |= 1;<br />             }<br />     else<br />             {<br />                pb = 0;<br />n++;<br />     }<br /><br />     TCNT0 = 0x00; TIFR0 |= (1&lt;&lt;TOV0);<br /> }<br /> else if((TCNT0&gt;51) &amp;&amp; (TCNT0&lt;84)) // 84=2.25ms<br /> {<br />             code &lt;&lt;= 1;<br />     if(!(code&amp;0x2)) code |= 1;<br /><br />     TCNT0 = 0x00; TIFR0 |= (1&lt;&lt;TOV0);<br />             n++;<br /> }<br />         else  n = 0;<br /><br />         MCUCR ^= (1&lt;&lt;ISC00);<br /><br /> if(n==15)<br /> {<br />    n = 0;<br /><br />    command = code &amp; 0b0000000000111111;<br />    toggle_bit = (code &amp; 0b0000100000000000) &gt;&gt; 11;<br /><br />if (toggle_bit == last_toggle) key_time++;<br />else key_time = 0;<br /><br />last_toggle = toggle_bit;<br /><br />    if(command == 11 &amp;&amp; key_time == 0) PORTB ^= LED_PIN;<br /><br />    //if(command == 11 &amp;&amp; key_time == 10) PORTB ^= LED3_PIN;<br /><br />    //if(command == 12 &amp;&amp; key_time == 0) PORTB ^= LED1_PIN;<br /><br />    //if(command == 13 &amp;&amp; key_time == 0) PORTB ^= LED2_PIN;<br />command = 0xff;<br /><br /> }<br /><br />      break;<br />   }<br />}<br /><br />//-----------------------------------------------------------------------------<br />int main(void)<br />{<br /><br />// ustawienie PINB.4 jako wyjsciowy<br />DDRB |= LED_PIN ; //| LED1_PIN | LED2_PIN | LED3_PIN;<br /><br />LED_OFF;   // wylaczenie<br />//LED1_OFF;   // wylaczenie<br />//LED2_OFF;   // wylaczenie<br />//LED3_OFF;   // wylaczenie<br /><br />    DDRB  &amp;= ~(1&lt;&lt;PB1);<br />    PORTB &amp;= ~(1&lt;&lt;PB1);<br />    //<br />    MCUCR |= (1&lt;&lt;ISC01);    // opadajace zbocze<br />    MCUCR |= (1&lt;&lt;PUD);<br />    GIMSK  |= (1&lt;&lt;INT0);<br />    GIFR |= (1&lt;&lt;INTF0);<br />    //<br />    TCCR0B = (1&lt;&lt;CS02);    // prescaler 256<br />    TIFR0 |= (1&lt;&lt;TOV0);<br /><br />    sei();<br /><br />    while(1)<br />    {<br /><br />    };<br /><br />    return 0;<br />}[/syntax]<br />milej zabawy  <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=126">gufim</a> — 22 kwi 2014, o 06:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-04-22T00:27:01+01:00</updated>
<published>2014-04-22T00:27:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78822#p78822</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78822#p78822"/>
<title type="html"><![CDATA[Attiny45 i podczerwień]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6843&amp;p=78822#p78822"><![CDATA[
Witam<br /><br />Tłuczenia ATtiny ciąg dalszy <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />Zbudowałem układ sterujący dużą lampą LED. Kilka trybów jasności, pamiętanie ustawień, ochrona diody przed przegrzaniem oraz wyświetlacz 7seg (numer trybu).<br />Wszystko bardzo ładnie działa. <br />Chciałbym jednak dodać jeszcze funkcjonalność sterowania pilotem RC5. I tutaj jest pewnien problem wynikający z tego, żę maleńki Attiny nie ma 16-bit timera z wejściem ICP.<br />Oczywiście mogłem zastosować większy proc, ale chciałem koniecznie zrobić coś na takim maleństwie. W końcu takie małe kontrolerki też po coś są <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br /><br />Dodam, że mam w obecnej formie używam Timera1 (8bit) do PWM'a i do generowania przerwań (timery programowe). Timer0 jest wolny. <br />Używany jest jeszcze moduł USI. Ale tylko w chwilach gdy zmieniany jest tryb pracy (wysłanie bajtu do rejestru 595 aby na 7seg wyświetliła się liczba) więc zapewne da się użyć któregoś z tych pinów.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1589/04d8552e407da9d44913a8e569e05b9d.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1589/04d8552e407da9d44913a8e569e05b9d.png" alt="Obrazek" /></a><br /><br />Czy jest jakiś sposób na obługę IR w takim maleństwie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 22 kwi 2014, o 00:27</p><hr />
]]></content>
</entry>
</feed>