<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; Attiny2313 + ds1307]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=282&amp;type=atom" />
	<updated>2021-03-11T19:47:02Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=282</id>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3250#p3250" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>liman324 пишет:</cite><blockquote><p>DIO = PB1 = D9<br />CLK = PB0 = D8<br />SDA = PB3 = D11<br />SCL&nbsp; = PB2 = D10<br />SQW 4 = PB4 = D12</p><p>Не используйте SDA,SCl-A4,A5</p></blockquote></div><p>подключил ардуино, скорректировал показания, все работает.<br />Я думаю, что тема исчерпана.</p>]]></content>
			<author>
				<name><![CDATA[sanj76a]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=569</uri>
			</author>
			<updated>2021-03-11T19:47:02Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3250#p3250</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3238#p3238" />
			<content type="html"><![CDATA[<p>DIO = PB1 = D9<br />CLK = PB0 = D8<br />SDA = PB3 = D11<br />SCL&nbsp; = PB2 = D10<br />SQW 4 = PB4 = D12</p><p>Не используйте SDA,SCl-A4,A5</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2021-03-11T16:18:51Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3238#p3238</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3237#p3237" />
			<content type="html"><![CDATA[<p>Эта картинка у меня на столе. <br />У ардуинки SDA,SCl-A4,A5. <br /> Тут понятно SQW 4 // PB4 = D12.<br />А TM1637 - DIO,CLK?</p>]]></content>
			<author>
				<name><![CDATA[sanj76a]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=569</uri>
			</author>
			<updated>2021-03-11T16:15:33Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3237#p3237</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3235#p3235" />
			<content type="html"><![CDATA[<p>#define SDA 3 // PB3 = D11<br />#define SCL 2 // PB2 = D10<br />#define SQW 4 // PB4 = D12</p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/03/5eb6095e30ae8e25787ec32ec2dd98fc.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2021/03/5eb6095e30ae8e25787ec32ec2dd98fc.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2021-03-11T16:04:15Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3235#p3235</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3234#p3234" />
			<content type="html"><![CDATA[<p>Скетч написан под входа ATtiny2313 а у Ардуино входа подключения другие</p>]]></content>
			<author>
				<name><![CDATA[sanj76a]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=569</uri>
			</author>
			<updated>2021-03-11T16:01:43Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3234#p3234</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3222#p3222" />
			<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>2021-03-10T03:26:46Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3222#p3222</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3221#p3221" />
			<content type="html"><![CDATA[<p>Вы писали....Для работы с модулем DS1307 под управлением Arduino существуют несколько библиотек,<br />Какую библиотеку лучше использовать в вашим скетчем?</p>]]></content>
			<author>
				<name><![CDATA[sanj76a]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=569</uri>
			</author>
			<updated>2021-03-10T03:23:29Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3221#p3221</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3220#p3220" />
			<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>2021-03-09T15:41:26Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3220#p3220</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3219#p3219" />
			<content type="html"><![CDATA[<p>Есть DS1307, есть TM1637 с двумя разделительными точками, есть ардуинки NANO, PRO-MINI.<br />ATtiny2313 нет, не вижу смысла его заказывать только для для теста модуля времени.<br />Если б вы переписали скетч под ардуино, я бы протестил и выложил.</p>]]></content>
			<author>
				<name><![CDATA[sanj76a]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=569</uri>
			</author>
			<updated>2021-03-09T15:11:58Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3219#p3219</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Attiny2313 + ds1307]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3218#p3218" />
			<content type="html"><![CDATA[<p>Основная статья - <a href="http://rcl-radio.ru/?p=94223">http://rcl-radio.ru/?p=94223</a></p><p>Доработка корректировки времени:</p><p> set_time(21,2,3,9,17,28,0);</p><p>если установить в устанавливаемом значении число 255, оно не будет изменено.</p><p>пример: set_time(21,2,3,9,17,255,0); - минуты не будут изменены</p><div class="codebox"><pre><code>#define SDA 3 // PB3
#define SCL 2 // PB2
#define SQW 4 // PB4

byte bb;
 
void setup(){
  DDRB &amp;= ~(1 &lt;&lt; SQW);PORTB |= (1 &lt;&lt; SQW);
  // set_time(21,2,3,9,17,28,0);// год 00-99, ДН 1-7 (1=ВС), месяц 1-12, дата 1-31, час 0-23, минуты 0-59, секунды 0-59
   ds_write(0x07, 0b00010000); // выход SQW, частота 1 Гц
   delay(500);
}

void loop() {
  byte sec =  (ds_read(0) &amp; 0x0F) + (((ds_read(0) &amp; 0x70) &gt;&gt; 4) * 10);
  byte min =  (ds_read(1) &amp; 0x0F) + (((ds_read(1) &amp; 0x70) &gt;&gt; 4) * 10);
  byte hour = ((ds_read(2) &amp; 0x0F) + ((ds_read(2) &amp; 0x70) &gt;&gt; 4) * 10);
  byte day =  (ds_read(3) &amp; 0x0F);
  byte datat = ((ds_read(4) &amp; 0x0F) + ((ds_read(4) &amp; 0x70) &gt;&gt; 4) * 10);
  byte mont = ((ds_read(5) &amp; 0x0F) + ((ds_read(5) &amp; 0x70) &gt;&gt; 4) * 10);
  byte year = ((ds_read(6) &amp; 0x0F) + ((ds_read(7) &amp; 0x70) &gt;&gt; 4) * 10);

  if(((PINB &gt;&gt; SQW) &amp; 1)==1){bb = 0;}else{bb = 2;}

  if(sec &gt;= 0 &amp;&amp; sec &lt;= 25){print_time(hour *100 + min, bb, 7, 0);}
  if(sec &gt; 25 &amp;&amp; sec &lt;= 30){print_time(datat *100 + mont, 0, 7, 0);}
  if(sec &gt; 30 &amp;&amp; sec &lt;= 50){print_time(hour *100 + min, bb, 7, 0);}
  if(sec &gt; 50 &amp;&amp; sec &lt;= 55){print_time(datat *100 + mont, 0, 7, 0);}
  if(sec &gt; 55){print_time(sec, 0, 7, 1);}
}


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, byte pd_t, int br, bool mn) {
  tm_start(); tm_dec(0b10001000 + br); //tm_stop();tm_start();
  tm_dec(0x40); tm_stop(); tm_start();
 
  int data0,data1;
  if(mn==1){data0 = 10;data1 = 10;}
  else{data0 = t / 1000;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
      case 10: data = 0b00000000; break;    // пусто
    }

    if (n == 0) {data0 = data;}
    if (n == 1) {data1 = data;}
    if (n == 2) {data2 = data;}
    if (n == 3) {data3 = data;}
  }
  switch (pd_t) {
    case 1 : data2 = data2 + 0b10000000; break;
    case 2 : data1 = data1 + 0b10000000; break;
    case 3 : data0 = data0 + 0b10000000; break;
  }
  tm_dec(0xC0); tm_dec(data0); tm_dec(data1); tm_dec(data2); tm_dec(data3); tm_stop();
}

void del() {delayMicroseconds(200);}

bool i2c_read_bit() {
    bool i2c_bit = 1;        
    DDRB &amp;= ~(1 &lt;&lt; SDA);            
    delayMicroseconds(10); 
    DDRB &amp;= ~(1 &lt;&lt; SCL);                
    if((PINB &gt;&gt; SDA) &amp; 1) i2c_bit=0;                            
    delayMicroseconds(10);  
    DDRB |= (1 &lt;&lt; SCL);              
    return i2c_bit;  
}
 
byte i2c_write_byte(byte data){
    for (byte i=0; i&lt;8; i++){i2c_write_bit((data&amp;0x80)==0);data&lt;&lt;=1;}    
    return i2c_read_bit(); 
}
 
byte i2c_read_byte(byte a){
    byte i, data=0;                
    for(i=0; i&lt;8; i++){if (!i2c_read_bit()) data++;if(i!=7) data&lt;&lt;=1;}        
    i2c_write_bit(a);return data;  
}
 
void i2c_write_bit(byte b){
    delayMicroseconds(5);
    if(b){DDRB |= (1 &lt;&lt; SDA);}else{DDRB &amp;= ~(1 &lt;&lt; SDA);}
    delayMicroseconds(5);
    DDRB &amp;= ~(1 &lt;&lt; SCL);       
    delayMicroseconds(10);
    DDRB |= (1 &lt;&lt; SCL);
}
 
void i2c_start(){
     delayMicroseconds(10);  
     DDRB &amp;= ~(1 &lt;&lt; SDA); DDRB &amp;= ~(1 &lt;&lt; SCL); 
     delayMicroseconds(10); 
     DDRB |= (1 &lt;&lt; SDA);  PORTB &amp;= ~(1 &lt;&lt; SDA);
     delayMicroseconds(10); 
     DDRB |= (1 &lt;&lt; SCL);  PORTB &amp;= ~(1 &lt;&lt; SCL);   
     delayMicroseconds(10);
}
 
void i2c_stop()  {
     DDRB |= (1 &lt;&lt; SDA);            
     delayMicroseconds(10);
     DDRB &amp;= ~(1 &lt;&lt; SCL);               
     delayMicroseconds(10); 
     DDRB &amp;= ~(1 &lt;&lt; SDA);             
}

byte ds_read(byte reg){
     byte data = 0;
     i2c_start();
     i2c_write_byte(0b11010000);
     i2c_write_byte(reg);
     i2c_start(); 
     i2c_write_byte(0b11010001); 
     data = i2c_read_byte(0);
     i2c_stop();
     return data;
  }

void ds_write(byte reg, byte data){
     i2c_start();
     i2c_write_byte(0b11010000);
     i2c_write_byte(reg);
     i2c_write_byte(data);
     i2c_stop();
  }  

void set_time(byte years, byte days, byte monts, byte datas, byte hours ,byte minute, byte second){
    if(second &lt; 255){ds_write(0x00,(second/10&lt;&lt;4)+second%10);}
    if(minute &lt; 255){ds_write(0x01,(minute/10&lt;&lt;4)+minute%10);}
    if(hours &lt; 255){ds_write(0x02,(hours/10&lt;&lt;4)+hours%10);}
    if(days &lt; 255){ds_write(0x03,days);}
    if(datas &lt; 255){ds_write(0x04,(datas/10&lt;&lt;4)+datas%10);}
    if(monts &lt; 255){ds_write(0x05,(monts/10&lt;&lt;4)+monts%10);}
    if(years &lt; 255)ds_write(0x06,(years/10&lt;&lt;4)+years%10);
  }  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2021-03-09T11:40:57Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3218#p3218</id>
		</entry>
</feed>
