<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; Часы Attiny2313]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=280</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=280&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Часы Attiny2313».]]></description>
		<lastBuildDate>Sun, 07 Mar 2021 11:52:24 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Часы Attiny2313]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=3207#p3207</link>
			<description><![CDATA[<p>Я добавил кнопку обнуления секунд на PB4 16 вывод.</p><div class="codebox"><pre><code>// tm1637 PB0 === CLK
// tm1637 PB1 === DIO
 
int i,i1,hh,mm,bb,brig;
 
void setup() {
  DDRB = 0b00000000; 
  PORTB |= (1 &lt;&lt; 2) | (1 &lt;&lt; 3) | (1 &lt;&lt; 4);
   cli();  
  TCCR1A = 0;   
  TCCR1B = 0;   
  OCR1A = 18750; // 0.1 s
  TCCR1B |= (1 &lt;&lt; WGM12); 
  TCCR1B |= (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10);  // 64  
  TIMSK |= (1 &lt;&lt; OCIE1A);  
   sei(); 
}
 
void loop() {
  if(hh * 100 + mm &gt; 2300 || hh * 100 + mm &lt; 600){brig = 1;}else{brig = 7;}
  print_time(hh * 100 + mm, bb, brig);// int число выводимое на индикатор, двоеточие, яркость от 0 до 7
  if(i1 &lt;= 5){bb = 1;}else{bb = 0;}
 
  if(((PINB &gt;&gt; 2) &amp; 1) == 0){mm++; if(mm&gt;59){mm = 0;} delay(200);}
  if(((PINB &gt;&gt; 3) &amp; 1) == 0){hh++; if(hh&gt;23){hh = 0;} delay(200);}
  if(((PINB &gt;&gt; 4) &amp; 1) == 0){i=0; delay(200);}
}
 
void tm_dec(byte dig){
       for(int i = 0; i &lt; 8; i++) {
         DDRB |= (1 &lt;&lt; 0);del();
       if (dig &amp; 0x01)
         DDRB &amp;= ~(1 &lt;&lt; 1);
       else
         DDRB |= (1 &lt;&lt; 1);del();
         DDRB &amp;= ~(1 &lt;&lt; 0);del();
         dig = dig &gt;&gt; 1;
  }
         DDRB |= (1 &lt;&lt; 0);
         DDRB &amp;= ~(1 &lt;&lt; 1);del();
         DDRB &amp;= ~(1 &lt;&lt; 0);del();
 
       if (((PINB &gt;&gt; 1) &amp; 1) == 0)
         DDRB |= (1 &lt;&lt; 1);del();
         DDRB |= (1 &lt;&lt; 0);del();
  }  
 
void tm_stop(){
         DDRB |= (1 &lt;&lt; 1);del();
         DDRB &amp;= ~(1 &lt;&lt; 0);del();
         DDRB &amp;= ~(1 &lt;&lt; 1);del();
  }  
 
void tm_start(){
         DDRB |= (1 &lt;&lt; 1);del();
  }
 
void print_time(int t, bool pd_t, int br){
        tm_start();tm_dec(0b10001000 + br);//tm_stop();tm_start();
        tm_dec(0x40);tm_stop();tm_start();
 
        int data0 = t / 1000;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }
 
      switch(data){  // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        }
 
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      if(pd_t == 1){data1+= 0b10000000;}
      tm_dec(0xC0);tm_dec(data0);tm_dec(data1);tm_dec(data2);tm_dec(data3);tm_stop();
}  
 
void del(){delayMicroseconds(100);}
 
ISR(TIMER1_COMPA_vect){
     i++;i1++;
     if(i1 &gt; 9){i1 = 0;}
     if(i &gt; 599){mm++;i = 0;}
     if(mm &gt; 59){hh++;mm = 0;}
     if(hh &gt; 23){hh = 0;}
     }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 07 Mar 2021 11:52:24 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=3207#p3207</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы Attiny2313]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=3206#p3206</link>
			<description><![CDATA[<p>Эта доработка работает. В 23 часа яркость падает ,в 6 часов включается .<br />Жду кнопку для установки точного времени.</p>]]></description>
			<author><![CDATA[null@example.com (rn3qkp)]]></author>
			<pubDate>Sun, 07 Mar 2021 11:37:00 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=3206#p3206</guid>
		</item>
		<item>
			<title><![CDATA[Часы Attiny2313]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=3205#p3205</link>
			<description><![CDATA[<p>Основная статья - <a href="http://rcl-radio.ru/?p=94090">http://rcl-radio.ru/?p=94090</a></p><p>Затемнение индикатора с 23:00 до 6:00</p><p>Не тестировалось !!!</p><div class="codebox"><pre><code>// tm1637 PB0 === CLK
// tm1637 PB1 === DIO
 
int i,i1,hh,mm,bb,brig;
 
void setup() {
  DDRB = 0b00000000; 
  PORTB |= (1 &lt;&lt; 2) | (1 &lt;&lt; 3);
   cli();  
  TCCR1A = 0;   
  TCCR1B = 0;   
  OCR1A = 18750; // 0.1 s
  TCCR1B |= (1 &lt;&lt; WGM12); 
  TCCR1B |= (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10);  // 64  
  TIMSK |= (1 &lt;&lt; OCIE1A);  
   sei(); 
}
 
void loop() {
  if(hh * 100 + mm &gt; 2300 || hh * 100 + mm &lt; 600){brig = 1;}else{brig = 7;}
  print_time(hh * 100 + mm, bb, brig);// int число выводимое на индикатор, двоеточие, яркость от 0 до 7
  if(i1 &lt;= 5){bb = 1;}else{bb = 0;}
 
  if(((PINB &gt;&gt; 2) &amp; 1) == 0){mm++; if(mm&gt;59){mm = 0;} delay(200);}
  if(((PINB &gt;&gt; 3) &amp; 1) == 0){hh++; if(hh&gt;23){hh = 0;} delay(200);}
}
 
void tm_dec(byte dig){
       for(int i = 0; i &lt; 8; i++) {
         DDRB |= (1 &lt;&lt; 0);del();
       if (dig &amp; 0x01)
         DDRB &amp;= ~(1 &lt;&lt; 1);
       else
         DDRB |= (1 &lt;&lt; 1);del();
         DDRB &amp;= ~(1 &lt;&lt; 0);del();
         dig = dig &gt;&gt; 1;
  }
         DDRB |= (1 &lt;&lt; 0);
         DDRB &amp;= ~(1 &lt;&lt; 1);del();
         DDRB &amp;= ~(1 &lt;&lt; 0);del();
 
       if (((PINB &gt;&gt; 1) &amp; 1) == 0)
         DDRB |= (1 &lt;&lt; 1);del();
         DDRB |= (1 &lt;&lt; 0);del();
  }  
 
void tm_stop(){
         DDRB |= (1 &lt;&lt; 1);del();
         DDRB &amp;= ~(1 &lt;&lt; 0);del();
         DDRB &amp;= ~(1 &lt;&lt; 1);del();
  }  
 
void tm_start(){
         DDRB |= (1 &lt;&lt; 1);del();
  }
 
void print_time(int t, bool pd_t, int br){
        tm_start();tm_dec(0b10001000 + br);//tm_stop();tm_start();
        tm_dec(0x40);tm_stop();tm_start();
 
        int data0 = t / 1000;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }
 
      switch(data){  // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        }
 
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      if(pd_t == 1){data1+= 0b10000000;}
      tm_dec(0xC0);tm_dec(data0);tm_dec(data1);tm_dec(data2);tm_dec(data3);tm_stop();
}  
 
void del(){delayMicroseconds(100);}
 
ISR(TIMER1_COMPA_vect){
     i++;i1++;
     if(i1 &gt; 9){i1 = 0;}
     if(i &gt; 599){mm++;i = 0;}
     if(mm &gt; 59){hh++;mm = 0;}
     if(hh &gt; 23){hh = 0;}
     }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 07 Mar 2021 10:29:20 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=3205#p3205</guid>
		</item>
	</channel>
</rss>
