<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; Двухканальный диммер Attiny13]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=664&amp;type=atom" />
	<updated>2024-09-09T12:28:22Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=664</id>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10741#p10741" />
			<content type="html"><![CDATA[<p>Спасибо Александр! <br />Всё как надо у Вас получилось <img src="http://forum.rcl-radio.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-09-09T12:28:22Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10741#p10741</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10740#p10740" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// PB3 PB4 === +-
// PB2 === led

#include &lt;avr/io.h&gt;
#include &lt;util/delay.h&gt;

int a=0,set=0;
unsigned long milliss,times;
bool w;

int main(void) {
  cli();
  DDRB |= (1&lt;&lt;PB0)|(1&lt;&lt;PB1)|(1&lt;&lt;PB2);
  PORTB |= (1&lt;&lt;PB3)|(1&lt;&lt;PB4);
   
  TCCR0A = 0;
  TCCR0B = 0;
  TCNT0 = 0;
  TCCR0A |= (1&lt;&lt;COM0B1)|(1&lt;&lt;COM0A1);
  TCCR0A |= (1&lt;&lt;WGM01) | (1&lt;&lt;WGM00);
  TCCR0B |= (1 &lt;&lt; CS01) | (1 &lt;&lt; CS00); 
  a=EEPROM_read(0);
  set=EEPROM_read(1);
  OCR0B = a; 
  OCR0A = a;
  sei();  
  
while(1) { 
  if(((PINB &gt;&gt; PB3) &amp; 1)==LOW &amp;&amp; ((PINB &gt;&gt; PB4) &amp; 1)==HIGH){a++;if(a&gt;255){a=255;}OCR0A=a;OCR0B=a;times=milliss;w=1;PORTB &amp;=~ (1&lt;&lt;PB2);}
  if(((PINB &gt;&gt; PB4) &amp; 1)==LOW &amp;&amp; ((PINB &gt;&gt; PB3) &amp; 1)==HIGH){a--;if(a&lt;0){a=0;}OCR0A=a;OCR0B=a;times=milliss;w=1;PORTB &amp;=~ (1&lt;&lt;PB2);}
  
  if(((PINB &gt;&gt; PB4) &amp; 1)==LOW &amp;&amp; ((PINB &gt;&gt; PB3) &amp; 1)==LOW){set++;if(set&gt;3){set=0;}PORTB &amp;=~ (1&lt;&lt;PB2);_delay_ms(300);EEPROM_write(1,set);
  }
  switch(set){
    case 0: TCCR0A &amp;=~ (1&lt;&lt;COM0B1);TCCR0A |=(1&lt;&lt;COM0A1);break;
    case 1: TCCR0A &amp;=~ (1&lt;&lt;COM0A1);TCCR0A |=(1&lt;&lt;COM0B1);break;
    case 2: TCCR0A |= (1&lt;&lt;COM0B1);TCCR0A |=(1&lt;&lt;COM0A1);break;
    case 3: TCCR0A &amp;=~ (1&lt;&lt;COM0B1);TCCR0A &amp;=~(1&lt;&lt;COM0A1);break;
    }
  milliss++;
  _delay_ms(20);
 if(set&lt;3){PORTB |= (1&lt;&lt;PB2);} else{PORTB &amp;=~ (1&lt;&lt;PB2);}
  if(milliss-times&gt;20&amp;&amp;w==1){w=0;EEPROM_write(0,a);}
}}

unsigned char EEPROM_read(unsigned int uiAddress){
  while(EECR &amp; (1&lt;&lt;EEPE));  // проверка готовности EEPROM 
    EEAR = uiAddress; // регистр адреса
    EECR |= (1&lt;&lt;EERE);// чтение EEPROM
    return EEDR; // вывод значения
}
 
void EEPROM_write(unsigned int uiAddress, unsigned char ucData){
  while(EECR &amp; (1&lt;&lt;EEPE)); // проверка готовности EEPROM 
      EEAR = uiAddress; // регистр адреса
      EEDR = ucData; // регистр данных 
      EECR |= (1&lt;&lt;EEMPE);// Разрешение записи в EEPROM
      EECR |= (1&lt;&lt;EEPE); // Запись в EEPROM
} 
 </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-09T03:08:52Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10740#p10740</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10738#p10738" />
			<content type="html"><![CDATA[<p>Да, всё верно.<br />Режим 0,1,2 - светодиод светит, при нажатии(во время нажатия) гаснет.<br />Режим 3 - не светит.</p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-09-08T12:47:10Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10738#p10738</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10737#p10737" />
			<content type="html"><![CDATA[<p>Вам нужно инвертировать работу светодиода, что бы он всегда горел, а при нажатии кнопок происходило гашение. Но при переходе в режим OFF светодиод гас? <br />Я верно все понял?</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-08T04:15:57Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10737#p10737</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10736#p10736" />
			<content type="html"><![CDATA[<p>Подключил chat GPT&nbsp; для комментариев к коду.<br />Пока нифига не понятно: как сделать работу светодиода индикации <img src="http://forum.rcl-radio.ru/img/smilies/hmm.png" width="15" height="15" alt="hmm" /></p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-09-08T01:19:14Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10736#p10736</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10727#p10727" />
			<content type="html"><![CDATA[<p>Вау!<br />Класс!<br />Всё работает как надо!<br />Данке, Александр!<br />А можно, что б светодиод в режиме &quot;выкл&quot; не светился, а во всех остальных - светился и при нажатии кнопок не загорался как сейчас, а наоборот происходило б гашение(нажал=погас) ?</p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-09-04T11:47:16Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10727#p10727</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10726#p10726" />
			<content type="html"><![CDATA[<p>10 - нажата первая +++<br />01 - нажата вторая ---<br />11 - нажаты обе === как нажатие кнопки SET</p><p>индикатор на pb2</p><div class="codebox"><pre><code>// PB3 PB4 === +-|set
// PB2 === led

#include &lt;avr/io.h&gt;
#include &lt;util/delay.h&gt;

int a=0,set=0;
unsigned long milliss,times;
bool w;

int main(void) {
  cli();
  DDRB |= (1&lt;&lt;PB0)|(1&lt;&lt;PB1)|(1&lt;&lt;PB2);
  PORTB |= (1&lt;&lt;PB3)|(1&lt;&lt;PB4);
  TCCR0A = 0;
  TCCR0B = 0;
  TCNT0 = 0;
  TCCR0A |= (1&lt;&lt;COM0B1)|(1&lt;&lt;COM0A1);
  TCCR0A |= (1&lt;&lt;WGM01) | (1&lt;&lt;WGM00);
  TCCR0B |= (1 &lt;&lt; CS01) | (1 &lt;&lt; CS00); 
  a=EEPROM_read(0);
  set=EEPROM_read(1);
  OCR0B = a; 
  OCR0A = a;
  sei();  
  
while(1) { 
  if(((PINB &gt;&gt; PB3) &amp; 1)==LOW &amp;&amp; ((PINB &gt;&gt; PB4) &amp; 1)==HIGH){a++;if(a&gt;255){a=255;}OCR0A=a;OCR0B=a;times=milliss;w=1;PORTB |= (1&lt;&lt;PB2);}
  if(((PINB &gt;&gt; PB4) &amp; 1)==LOW &amp;&amp; ((PINB &gt;&gt; PB3) &amp; 1)==HIGH){a--;if(a&lt;0){a=0;}OCR0A=a;OCR0B=a;times=milliss;w=1;PORTB |= (1&lt;&lt;PB2);}
  
  if(((PINB &gt;&gt; PB4) &amp; 1)==LOW &amp;&amp; ((PINB &gt;&gt; PB3) &amp; 1)==LOW){set++;if(set&gt;3){set=0;}PORTB |= (1&lt;&lt;PB2);_delay_ms(300);EEPROM_write(1,set);
  }
  switch(set){
    case 0: TCCR0A &amp;=~ (1&lt;&lt;COM0B1);TCCR0A |=(1&lt;&lt;COM0A1);break;
    case 1: TCCR0A &amp;=~ (1&lt;&lt;COM0A1);TCCR0A |=(1&lt;&lt;COM0B1);break;
    case 2: TCCR0A |= (1&lt;&lt;COM0B1);TCCR0A |=(1&lt;&lt;COM0A1);break;
    case 3: TCCR0A &amp;=~ (1&lt;&lt;COM0B1);TCCR0A &amp;=~(1&lt;&lt;COM0A1);break;
    }
  milliss++;
  _delay_ms(20);
  PORTB &amp;=~ (1&lt;&lt;PB2);
  if(milliss-times&gt;20&amp;&amp;w==1){w=0;EEPROM_write(0,a);}
}}

unsigned char EEPROM_read(unsigned int uiAddress){
  while(EECR &amp; (1&lt;&lt;EEPE));  // проверка готовности EEPROM 
    EEAR = uiAddress; // регистр адреса
    EECR |= (1&lt;&lt;EERE);// чтение EEPROM
    return EEDR; // вывод значения
}
 
void EEPROM_write(unsigned int uiAddress, unsigned char ucData){
  while(EECR &amp; (1&lt;&lt;EEPE)); // проверка готовности EEPROM 
      EEAR = uiAddress; // регистр адреса
      EEDR = ucData; // регистр данных 
      EECR |= (1&lt;&lt;EEMPE);// Разрешение записи в EEPROM
      EECR |= (1&lt;&lt;EEPE); // Запись в EEPROM
} 
 </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-04T03:40:09Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10726#p10726</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10725#p10725" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>liman324 пишет:</cite><blockquote><p>Есть вариант использовать только 2 кнопки</p><p>10 - нажата первая +++<br />01 - нажата вторая ---<br />11 - нажаты обе === как нажатие кнопки SET</p></blockquote></div><p>Вполне себе годный вариант.<br />Про reset&nbsp; знаю, собрал себе доктора на такой случай.</p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-09-03T23:01:50Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10725#p10725</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10724#p10724" />
			<content type="html"><![CDATA[<p>Есть вариант использовать только 2 кнопки</p><p>10 - нажата первая +++<br />01 - нажата вторая ---<br />11 - нажаты обе === как нажатие кнопки SET</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-03T15:36:50Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10724#p10724</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10723#p10723" />
			<content type="html"><![CDATA[<p>Нашел информацию:</p><div class="quotebox"><blockquote><p>Первый состоит в том, что у МК есть специальный флаг (fuse) RSTDISBL, который, будучи запрограммированным (установленным в «0») превращает вывод RESET в обычный порт ввода-вывода, который можно использовать наряду с другими. Этот способ прост, но имеет один существенный недостаток: после такого переключения МК невозможно будет запрограммировать с помощью низковольтного программатора, обычно самого распространенного типа устройств. Если вы вдруг захотите зашить в МК новую программу, потребуется программатор, использующий напряжение 12Вольт на выводе RESET.</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-03T15:30:28Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10723#p10723</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10722#p10722" />
			<content type="html"><![CDATA[<p>Завтра попробую поработать с пином reset, пока не знаю как его переназначить, при подачи на него GND всегда происходит перезагрузка контроллера. Буду думать.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-03T15:23:59Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10722#p10722</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10721#p10721" />
			<content type="html"><![CDATA[<p>Всё работает как надо, спасибо Александр!<br />Проблема была в светодиодах - зеленый и красный.<br />Зеленый отказывался работать без красного, хотя вместе зажигались. <br />Когда поставил оба красных, всё заработало!<br />Ещё раз - спасибо!<br />Бутылка рома с меня. </p><p>P. S. Про индикацию режима вкл и мигание светодиодом при нажатии кнопок - есть же вывод reset&nbsp; или можно было б на аналоговый вывод кнопки &quot;+/-&quot; подцепить? <br />Но то такое, и так всё отлично работает.</p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-09-03T14:13:17Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10721#p10721</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10720#p10720" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/09/e11fd2dd42c125a97d78c3727ba505ac.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2024/09/e11fd2dd42c125a97d78c3727ba505ac.jpg" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/09/da5b918c46bf9b9504c818189940741b.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2024/09/da5b918c46bf9b9504c818189940741b.jpg" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/09/934e31c9db74188c1920c354beb09b3e.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2024/09/934e31c9db74188c1920c354beb09b3e.jpg" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/09/c0bd47d113d52324f13b5e4fd7c8ecf5.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2024/09/c0bd47d113d52324f13b5e4fd7c8ecf5.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-03T01:42:44Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10720#p10720</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10719#p10719" />
			<content type="html"><![CDATA[<p>Все еще раз проверил, все работает как надо, шим регуируется, каналы переключаются. К выходам шим подключал светодиоды.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-03T01:38:24Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10719#p10719</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Двухканальный диммер Attiny13]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10718#p10718" />
			<content type="html"><![CDATA[<p>Спасибо! <br />Ага, про назначение этого куска кода я догадался, даже попробовал менять... Но бестолку.</p><p>Правда Ваши комментарии к коду немного запутали - после загрузки, как я понимаю, case 0, но включены оба канала.</p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-09-02T23:15:07Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10718#p10718</id>
		</entry>
</feed>
