<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; Часы на ИВЛ1-7/5 на Atmega8]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=547&amp;type=atom" />
	<updated>2023-03-31T15:32:22Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=547</id>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7684#p7684" />
			<content type="html"><![CDATA[<p>Перед реализацией будильника необходимо внести изменения в схему и протестировать их.</p><p>На сетку (вывод 9 ИВЛ) подать 27 В через резистор 100 кОм</p><p>Создать 2 транзисторных ключа как для анодов ИВЛ для точки и колокольчика (выводы 10 и 2 ИВЛ)<br />Ключи &gt; 10 кОм на коллекторе, 6,8 кОм на базе.</p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/03/9a88540d07485c1612ad72da9d3d4942.png" alt="http://forum.rcl-radio.ru/uploads/images/2023/03/9a88540d07485c1612ad72da9d3d4942.png" /></span> </p><br /><p>Транзисторные ключи (на базы транзисторов через резисторы 6,8 кОм) подключить к пинам PD3 PD4</p><p>У Вас остануться свободными 2 пина PC0 и PC1, один из них будет использован для звука будильника, второй будет кнопкой вызова коррекции времени будильника или Ваш вариант применить, тогда пин будет просто запасным.</p><p>Посмотрите статью <a href="http://rcl-radio.ru/?p=129553,">http://rcl-radio.ru/?p=129553,</a> как устроено управление будильником, возможно это вариант Вам подойдет.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-03-31T15:32:22Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7684#p7684</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7683#p7683" />
			<content type="html"><![CDATA[<p>я понял что надо. а можно ли при длительном нажатии кнопки установки времени переходить в режим установки будильника. а на кнопках установки настраивать время будильника? а если в обычном режиме часов нажимать кнопку плюс то включать будильник с зажиганием колокольчика, а минус выключать будильник.</p>]]></content>
			<author>
				<name><![CDATA[klerik77]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2044</uri>
			</author>
			<updated>2023-03-31T15:18:46Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7683#p7683</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7682#p7682" />
			<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>2023-03-31T14:49:43Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7682#p7682</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7681#p7681" />
			<content type="html"><![CDATA[<p>Есть только программное решение проблемы, засечь отставание часов за неделю, и например в воскресенье в 1:30 автоматически прибавить или вычесть несколько секунд.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-03-31T14:48:43Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7681#p7681</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7680#p7680" />
			<content type="html"><![CDATA[<p>К сожалению в DS1307 в отличии от DS3231 нет регистра который позволяет корректировать отставание или опережение.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-03-31T14:43:49Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7680#p7680</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7679#p7679" />
			<content type="html"><![CDATA[<p>Если коррекция времени имеется ввиду его установка то работает. Если коррекция времени как корректировка отставания или опережения в миллисекундах в сутки, то не знаю как запускается</p>]]></content>
			<author>
				<name><![CDATA[klerik77]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2044</uri>
			</author>
			<updated>2023-03-31T14:40:51Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7679#p7679</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7678#p7678" />
			<content type="html"><![CDATA[<p>Коррекция времени, эти пины замыкать на GND, если кнопки еще не подключены.</p><p> SET&nbsp; &nbsp; &nbsp; &nbsp; PD0<br /> UP&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PD1<br /> DOWN&nbsp; &nbsp; &nbsp;PD2</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-03-31T14:39:20Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7678#p7678</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7677#p7677" />
			<content type="html"><![CDATA[<p>У меня все работает температура и время выводит. Коррекцию не знаю как проверить. а напряжение на часовой батарейке реально просело с 3В до 1.8В.</p>]]></content>
			<author>
				<name><![CDATA[klerik77]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2044</uri>
			</author>
			<updated>2023-03-31T14:37:13Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7677#p7677</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7676#p7676" />
			<content type="html"><![CDATA[<p>Вы этот скетч проверяли <a href="http://forum.rcl-radio.ru/viewtopic.php?pid=7669#p7669?">http://forum.rcl-radio.ru/viewtopic.php?pid=7669#p7669?</a></p><p>В нем должна выводиться время, температура, так же должна работать коррекция времени.</p><p>Померьте напряжение на батарейке часов реального времени.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-03-31T11:16:00Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7676#p7676</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7674#p7674" />
			<content type="html"><![CDATA[<p>часы получились достаточно точные несмотря на китайские кварцы и микросхему ds1307. отставание где то 1 секунда в сутки при проверке по сайту точного времени.</p>]]></content>
			<author>
				<name><![CDATA[klerik77]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2044</uri>
			</author>
			<updated>2023-03-30T18:40:00Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7674#p7674</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7673#p7673" />
			<content type="html"><![CDATA[<p>где то читал, что нужно уменьшить скорость общения по шине и2с между часовой микросхемой ds1307 и микроконтроллером и тогда меньше будет глюков и подвисаний в выводе времени.</p>]]></content>
			<author>
				<name><![CDATA[klerik77]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2044</uri>
			</author>
			<updated>2023-03-30T18:37:48Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7673#p7673</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7672#p7672" />
			<content type="html"><![CDATA[<p>загрузил самый первый скетч. в нем тоже не шли секунды. пожмыкал по настройке секунд они пошли. потом загрузил ваш последний скетч со сменой часы термометр и все запустилось. 6 сек время по миганию точки и 3 сек температуру показывает.</p>]]></content>
			<author>
				<name><![CDATA[klerik77]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2044</uri>
			</author>
			<updated>2023-03-30T18:30:38Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7672#p7672</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7671#p7671" />
			<content type="html"><![CDATA[<p>первый скетч не пошел. загрузил второй там вместо градус цельсия стоя 00 как я понимаю это секунды и они не меняются.</p>]]></content>
			<author>
				<name><![CDATA[klerik77]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2044</uri>
			</author>
			<updated>2023-03-30T18:21:06Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7671#p7671</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7670#p7670" />
			<content type="html"><![CDATA[<p>Если не получится, то загрузите этот скетч, я вывел секунды вместе с показом температуры, посмотрите идут ли секунды</p><div class="codebox"><pre><code>// ATMEGA8 12MHz
#define G0_D       PD6
#define G1_B       PB1
#define G2_B       PB2
#define G3_B       PB5
#define DP_C       PC1 //PD SETKA 

#define E_B        PB3
#define G_B        PB4
#define B_B        PB0
#define F_D        PD7
#define A_D        PD5
#define D_C        PC2
#define C_C        PC3

#define SET        PD0
#define UP         PD1
#define DOWN       PD2

#define DS18B20    PC0

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

#define ADDR_DS1307    0b1101000
#define CPU_F          12000000 // Clock Speed
#define SCL_F          100000 // // I2C Speed

byte a[4],an,segm,i;
int msec,sec,minute,hour,set;
int set_sec,set_minute,set_hour;
int temp;


int main() {
  TWBR = (((CPU_F)/(SCL_F)-16 )/2) ;
  TWSR = 0;
// set_time(22,7,2,26,13,10,0);// год 00-99, ДН 1-7 (1=ВС), месяц 1-12, дата 1-31, час 0-23, минуты 0-59, секунды 0-59
  cli();
// (12000000/((18749+1)x64))=10 Hz
  OCR1A = 18749;
  TCCR1B |= (1 &lt;&lt; WGM12);
// Prescaler 64
  TCCR1B |= (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10);
  TIMSK |= (1 &lt;&lt; OCIE1A);
// (12000000/((155+1)x256))=300.48076923077 Hz
  OCR2 = 155;
  TCCR2 |= (1 &lt;&lt; WGM21);
// Prescaler 256
  TCCR2 |= (1 &lt;&lt; CS22) | (1 &lt;&lt; CS21);
  TIMSK |= (1 &lt;&lt; OCIE2);
  sei();
  DDRB|=(1&lt;&lt;G1_B)|(1&lt;&lt;G2_B)|(1&lt;&lt;G3_B)|(1&lt;&lt;E_B)|(1&lt;&lt;G_B)|(1&lt;&lt;B_B);
  DDRC|=(1&lt;&lt;D_C)|(1&lt;&lt;C_C)|(1&lt;&lt;DP_C);
  DDRD|=(1&lt;&lt;G0_D)|(1&lt;&lt;F_D)|(1&lt;&lt;A_D);
  PORTD|=(1&lt;&lt;SET)|(1&lt;&lt;UP)|(1&lt;&lt;DOWN);


while(1) {
   sec =  (i2c_read_1bit(ADDR_DS1307,0) &amp; 0x0F) + (((i2c_read_1bit(ADDR_DS1307,0) &amp; 0x70) &gt;&gt; 4) * 10);
   minute =  (i2c_read_1bit(ADDR_DS1307,1) &amp; 0x0F) + (((i2c_read_1bit(ADDR_DS1307,1) &amp; 0x70) &gt;&gt; 4) * 10);
   hour = ((i2c_read_1bit(ADDR_DS1307,2) &amp; 0x0F) + ((i2c_read_1bit(ADDR_DS1307,2) &amp; 0x70) &gt;&gt; 4) * 10);   

   if(((PIND &gt;&gt; SET) &amp; 1) == 0){set++;if(set&gt;3){set=0;}_delay_ms(300);}

   set_sec=sec;
   set_minute=minute;
   set_hour=hour;

   if(((PIND &gt;&gt; UP) &amp; 1) == 0 &amp;&amp; set==1){set_hour++;if(set_hour&gt;23){set_hour=23;}_delay_ms(300);set_time(255,255,255,255,set_hour,255,255);}
   if(((PIND &gt;&gt; DOWN) &amp; 1) == 0 &amp;&amp; set==1){set_hour--;if(set_hour&lt;0){set_hour=0;}_delay_ms(300);set_time(255,255,255,255,set_hour,255,255);}

   if(((PIND &gt;&gt; UP) &amp; 1) == 0 &amp;&amp; set==2){set_minute++;if(set_minute&gt;59){set_minute=59;}_delay_ms(300);set_time(255,255,255,255,255,set_minute,255);}
   if(((PIND &gt;&gt; DOWN) &amp; 1) == 0 &amp;&amp; set==2){set_minute--;if(set_minute&lt;0){set_minute=0;}_delay_ms(300);set_time(255,255,255,255,255,set_minute,255);}

   if(((PIND &gt;&gt; UP) &amp; 1) == 0 &amp;&amp; set==3){set_sec=0;_delay_ms(300);set_time(255,255,255,255,255,255,set_sec);}
   if(((PIND &gt;&gt; DOWN) &amp; 1) == 0 &amp;&amp; set==3){set_sec=0;_delay_ms(300);set_time(255,255,255,255,255,255,set_sec);}

if(set==0){
   if(sec%10&gt;=0&amp;&amp;sec%10&lt;=3){
    temp=read_temp();
     a[3]=temp/1000%10;
     a[2]=temp/100%10;
     a[1]=sec/10%10;
     a[0]=sec%10;
   PORTC |=(1&lt;&lt;DP_C);
    }
    else{
     a[3]=hour/10;
     a[2]=hour%10;
     a[1]=minute/10;
     a[0]=minute%10;
   if(msec&lt;5){PORTC |=(1&lt;&lt;DP_C);}
   if(msec&gt;=5){PORTC &amp;=~(1&lt;&lt;DP_C);}
   }}

if(set&gt;0){PORTC |=(1&lt;&lt;DP_C);}   

//if(set==1){if(msec==0||msec==5){a[3]=10;a[2]=10;}else{a[3]=hour/10;a[2]=hour%10;}}
//if(set==2){if(msec==0||msec==5){a[1]=10;a[0]=10;}else{a[1]=minute/10;a[0]=minute%10;}}
//if(set==3){if(msec==0||msec==5){a[0]=10;a[1]=10;a[3]=10;a[2]=10;}else{a[3]=10;a[2]=10;a[1]=sec/10;a[0]=sec%10;}}   
     
  

_delay_ms(100);
}}

ISR(TIMER2_COMP_vect){
    switch(i){
    case 0:  segm=a[0];  an=0;  anod();segment(); break;
    case 1:  segm=a[1];  an=1;  anod();segment(); break;
    case 2:  segm=a[2];  an=2;  anod();segment(); break;
    case 3:  segm=a[3];  an=3;  anod();segment(); break;
    }i++;if(i&gt;3){i=0;}}

void segment(){                                                               
   switch(segm){                                                                 
    case 0: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;
    case 1: PORTD |=(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;
    case 2: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC |=(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 3: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 4: PORTD |=(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;   
    case 5: PORTD &amp;=~(1&lt;&lt;A_D);PORTB |=(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 6: PORTD &amp;=~(1&lt;&lt;A_D);PORTB |=(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 7: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;
    case 8: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 9: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 10: PORTD |=(1&lt;&lt;A_D);PORTB |=(1&lt;&lt;B_B);PORTC |=(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;// Пусто
    case 11: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC |=(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;// Градус
    case 12: PORTD &amp;=~(1&lt;&lt;A_D);PORTB |=(1&lt;&lt;B_B);PORTC |=(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;// С
    
    
    }}

void anod(){
switch(an){                                                             
    case 0: PORTB |=(1&lt;&lt;G3_B);PORTD &amp;=~(1&lt;&lt;G0_D);break;
    case 1: PORTD |=(1&lt;&lt;G0_D);PORTB &amp;=~(1&lt;&lt;G1_B);break;
    case 2: PORTB |=(1&lt;&lt;G1_B);PORTB &amp;=~(1&lt;&lt;G2_B);break;
    case 3: PORTB |=(1&lt;&lt;G2_B);PORTB &amp;=~(1&lt;&lt;G3_B);break;                                                     
    }}   

ISR(TIMER1_COMPA_vect){msec++;if(msec&gt;9){msec=0;}}

void set_time(byte years, byte days, byte monts, byte datas, byte hours ,byte minuteute, byte second){
    if(second &lt; 255){i2c_write(ADDR_DS1307,0x00,(second/10&lt;&lt;4)+second%10);}
    if(minuteute &lt; 255){i2c_write(ADDR_DS1307,0x01,(minuteute/10&lt;&lt;4)+minuteute%10);}
    if(hours &lt; 255){i2c_write(ADDR_DS1307,0x02,(hours/10&lt;&lt;4)+hours%10);}
    if(days &lt; 255){i2c_write(ADDR_DS1307,0x03,days);}
    if(datas &lt; 255){i2c_write(ADDR_DS1307,0x04,(datas/10&lt;&lt;4)+datas%10);}
    if(monts &lt; 255){i2c_write(ADDR_DS1307,0x05,(monts/10&lt;&lt;4)+monts%10);}
    if(years &lt; 255){i2c_write(ADDR_DS1307,0x06,(years/10&lt;&lt;4)+years%10);}
    }   

void i2c_write(byte i2c_addr, byte i2c_reg, byte i2c_dat){
   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWSTA)|(1&lt;&lt;TWEN);  // START
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_addr &lt;&lt; 1;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_reg;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_dat;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO); // СТОП
  }

int i2c_read_1bit(byte i2c_addr, byte i2c_reg){
   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWSTA)|(1&lt;&lt;TWEN);  // START
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_addr &lt;&lt; 1;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_reg;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));

   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWSTA)|(1&lt;&lt;TWEN);  // START
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = (i2c_addr &lt;&lt; 1) | 1;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));

   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWEA);
  while(~TWCR&amp;(1&lt;&lt;TWINT));
    byte i2c_data = TWDR;
  TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));

   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO); // СТОП
  return i2c_data;
  }

// reset
uint8_t therm_reset(){
    uint8_t i;
    PORTC &amp;= ~(1 &lt;&lt; DS18B20);
    DDRC |= (1 &lt;&lt; DS18B20);
    _delay_us(480);  
    DDRC &amp;= ~(1 &lt;&lt; DS18B20);
    _delay_us(60);
    i=((PINC &gt;&gt; DS18B20) &amp; 1);
    _delay_us(420);
    return i;
}
// write bit
void therm_write_bit(uint8_t bit){
    PORTC &amp;= ~(1 &lt;&lt; DS18B20);
    DDRC |= (1 &lt;&lt; DS18B20);
    _delay_us(1);
    if(bit) DDRC &amp;= ~(1 &lt;&lt; DS18B20);
    _delay_us(60);
    DDRC &amp;= ~(1 &lt;&lt; DS18B20);
}
// read bit
uint8_t therm_read_bit(void){
    uint8_t bit=0;
    PORTC &amp;= ~(1 &lt;&lt; DS18B20);
    DDRC |= (1 &lt;&lt; DS18B20);
    _delay_us(1);
    DDRC &amp;= ~(1 &lt;&lt; DS18B20);
    _delay_us(14);
    if(PINC &amp; (1 &lt;&lt; DS18B20)) bit=1;
    _delay_us(45);
    return bit;
}
 
// read byte
uint8_t therm_read_byte(void){
    uint8_t i=8, n=0;
    while(i--){n&gt;&gt;=1;n|=(therm_read_bit()&lt;&lt;7);}
    return n;
}
 
// write byte
void therm_write_byte(uint8_t byte){
    uint8_t i=8;
    while(i--){therm_write_bit(byte&amp;1);byte &gt;&gt;= 1;
    }
}
// read temp
int read_temp(){
    uint8_t temperature[2];
    float temper;
    therm_reset();
    therm_write_byte(0xCC);
    therm_write_byte(0x44);
    while(!therm_read_bit());
    therm_reset();
    therm_write_byte(0xCC);
    therm_write_byte(0xBE);
    temperature[0]=therm_read_byte();
    temperature[1]=therm_read_byte();
    therm_reset();
    temper = (temperature[1] &lt;&lt; 8 | temperature[0])/0.16;
    return (int)temper;
}  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-03-30T17:57:10Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7670#p7670</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Часы на ИВЛ1-7/5 на Atmega8]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7669#p7669" />
			<content type="html"><![CDATA[<p>Это может быть только если у Вас не идут секунды</p><p>Попробуйте это скетч, в нем должна работать коррекция времени</p><br /><div class="codebox"><pre><code>// ATMEGA8 12MHz
#define G0_D       PD6
#define G1_B       PB1
#define G2_B       PB2
#define G3_B       PB5
#define DP_C       PC1 //PD SETKA 

#define E_B        PB3
#define G_B        PB4
#define B_B        PB0
#define F_D        PD7
#define A_D        PD5
#define D_C        PC2
#define C_C        PC3

#define SET        PD0
#define UP         PD1
#define DOWN       PD2

#define DS18B20    PC0

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

#define ADDR_DS1307    0b1101000
#define CPU_F          12000000 // Clock Speed
#define SCL_F          100000 // // I2C Speed

byte a[4],an,segm,i;
int msec,sec,minute,hour,set;
int set_sec,set_minute,set_hour;
int temp;


int main() {
  TWBR = (((CPU_F)/(SCL_F)-16 )/2) ;
  TWSR = 0;
// set_time(22,7,2,26,13,10,0);// год 00-99, ДН 1-7 (1=ВС), месяц 1-12, дата 1-31, час 0-23, минуты 0-59, секунды 0-59
  cli();
// (12000000/((18749+1)x64))=10 Hz
  OCR1A = 18749;
  TCCR1B |= (1 &lt;&lt; WGM12);
// Prescaler 64
  TCCR1B |= (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10);
  TIMSK |= (1 &lt;&lt; OCIE1A);
// (12000000/((155+1)x256))=300.48076923077 Hz
  OCR2 = 155;
  TCCR2 |= (1 &lt;&lt; WGM21);
// Prescaler 256
  TCCR2 |= (1 &lt;&lt; CS22) | (1 &lt;&lt; CS21);
  TIMSK |= (1 &lt;&lt; OCIE2);
  sei();
  DDRB|=(1&lt;&lt;G1_B)|(1&lt;&lt;G2_B)|(1&lt;&lt;G3_B)|(1&lt;&lt;E_B)|(1&lt;&lt;G_B)|(1&lt;&lt;B_B);
  DDRC|=(1&lt;&lt;D_C)|(1&lt;&lt;C_C)|(1&lt;&lt;DP_C);
  DDRD|=(1&lt;&lt;G0_D)|(1&lt;&lt;F_D)|(1&lt;&lt;A_D);
  PORTD|=(1&lt;&lt;SET)|(1&lt;&lt;UP)|(1&lt;&lt;DOWN);


while(1) {
   sec =  (i2c_read_1bit(ADDR_DS1307,0) &amp; 0x0F) + (((i2c_read_1bit(ADDR_DS1307,0) &amp; 0x70) &gt;&gt; 4) * 10);
   minute =  (i2c_read_1bit(ADDR_DS1307,1) &amp; 0x0F) + (((i2c_read_1bit(ADDR_DS1307,1) &amp; 0x70) &gt;&gt; 4) * 10);
   hour = ((i2c_read_1bit(ADDR_DS1307,2) &amp; 0x0F) + ((i2c_read_1bit(ADDR_DS1307,2) &amp; 0x70) &gt;&gt; 4) * 10);   

   if(((PIND &gt;&gt; SET) &amp; 1) == 0){set++;if(set&gt;3){set=0;}_delay_ms(300);}

   set_sec=sec;
   set_minute=minute;
   set_hour=hour;

   if(((PIND &gt;&gt; UP) &amp; 1) == 0 &amp;&amp; set==1){set_hour++;if(set_hour&gt;23){set_hour=23;}_delay_ms(300);set_time(255,255,255,255,set_hour,255,255);}
   if(((PIND &gt;&gt; DOWN) &amp; 1) == 0 &amp;&amp; set==1){set_hour--;if(set_hour&lt;0){set_hour=0;}_delay_ms(300);set_time(255,255,255,255,set_hour,255,255);}

   if(((PIND &gt;&gt; UP) &amp; 1) == 0 &amp;&amp; set==2){set_minute++;if(set_minute&gt;59){set_minute=59;}_delay_ms(300);set_time(255,255,255,255,255,set_minute,255);}
   if(((PIND &gt;&gt; DOWN) &amp; 1) == 0 &amp;&amp; set==2){set_minute--;if(set_minute&lt;0){set_minute=0;}_delay_ms(300);set_time(255,255,255,255,255,set_minute,255);}

   if(((PIND &gt;&gt; UP) &amp; 1) == 0 &amp;&amp; set==3){set_sec=0;_delay_ms(300);set_time(255,255,255,255,255,255,set_sec);}
   if(((PIND &gt;&gt; DOWN) &amp; 1) == 0 &amp;&amp; set==3){set_sec=0;_delay_ms(300);set_time(255,255,255,255,255,255,set_sec);}

if(set==0){
   if(sec%10&gt;=0&amp;&amp;sec%10&lt;=3){
    temp=read_temp();
     a[3]=temp/1000%10;
     a[2]=temp/100%10;
     a[1]=11;
     a[0]=12;
   PORTC |=(1&lt;&lt;DP_C);
    }
    else{
     a[3]=hour/10;
     a[2]=hour%10;
     a[1]=minute/10;
     a[0]=minute%10;
   if(msec&lt;5){PORTC |=(1&lt;&lt;DP_C);}
   if(msec&gt;=5){PORTC &amp;=~(1&lt;&lt;DP_C);}
   }}

if(set&gt;0){PORTC |=(1&lt;&lt;DP_C);}   

if(set==1){if(msec==0||msec==5){a[3]=10;a[2]=10;}else{a[3]=hour/10;a[2]=hour%10;}}
if(set==2){if(msec==0||msec==5){a[1]=10;a[0]=10;}else{a[1]=minute/10;a[0]=minute%10;}}
if(set==3){if(msec==0||msec==5){a[0]=10;a[1]=10;a[3]=10;a[2]=10;}else{a[3]=10;a[2]=10;a[1]=sec/10;a[0]=sec%10;}}   
     
  

_delay_ms(100);
}}

ISR(TIMER2_COMP_vect){
    switch(i){
    case 0:  segm=a[0];  an=0;  anod();segment(); break;
    case 1:  segm=a[1];  an=1;  anod();segment(); break;
    case 2:  segm=a[2];  an=2;  anod();segment(); break;
    case 3:  segm=a[3];  an=3;  anod();segment(); break;
    }i++;if(i&gt;3){i=0;}}

void segment(){                                                               
   switch(segm){                                                                 
    case 0: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;
    case 1: PORTD |=(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;
    case 2: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC |=(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 3: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 4: PORTD |=(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;   
    case 5: PORTD &amp;=~(1&lt;&lt;A_D);PORTB |=(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 6: PORTD &amp;=~(1&lt;&lt;A_D);PORTB |=(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 7: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;
    case 8: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 9: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC &amp;=~(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;
    case 10: PORTD |=(1&lt;&lt;A_D);PORTB |=(1&lt;&lt;B_B);PORTC |=(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD |=(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;// Пусто
    case 11: PORTD &amp;=~(1&lt;&lt;A_D);PORTB &amp;=~(1&lt;&lt;B_B);PORTC |=(1&lt;&lt;C_C);PORTC |=(1&lt;&lt;D_C);PORTB |=(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB &amp;=~(1&lt;&lt;G_B);break;// Градус
    case 12: PORTD &amp;=~(1&lt;&lt;A_D);PORTB |=(1&lt;&lt;B_B);PORTC |=(1&lt;&lt;C_C);PORTC &amp;=~(1&lt;&lt;D_C);PORTB &amp;=~(1&lt;&lt;E_B);PORTD &amp;=~(1&lt;&lt;F_D);PORTB |=(1&lt;&lt;G_B);break;// С
    
    
    }}

void anod(){
switch(an){                                                             
    case 0: PORTB |=(1&lt;&lt;G3_B);PORTD &amp;=~(1&lt;&lt;G0_D);break;
    case 1: PORTD |=(1&lt;&lt;G0_D);PORTB &amp;=~(1&lt;&lt;G1_B);break;
    case 2: PORTB |=(1&lt;&lt;G1_B);PORTB &amp;=~(1&lt;&lt;G2_B);break;
    case 3: PORTB |=(1&lt;&lt;G2_B);PORTB &amp;=~(1&lt;&lt;G3_B);break;                                                     
    }}   

ISR(TIMER1_COMPA_vect){msec++;if(msec&gt;9){msec=0;}}

void set_time(byte years, byte days, byte monts, byte datas, byte hours ,byte minuteute, byte second){
    if(second &lt; 255){i2c_write(ADDR_DS1307,0x00,(second/10&lt;&lt;4)+second%10);}
    if(minuteute &lt; 255){i2c_write(ADDR_DS1307,0x01,(minuteute/10&lt;&lt;4)+minuteute%10);}
    if(hours &lt; 255){i2c_write(ADDR_DS1307,0x02,(hours/10&lt;&lt;4)+hours%10);}
    if(days &lt; 255){i2c_write(ADDR_DS1307,0x03,days);}
    if(datas &lt; 255){i2c_write(ADDR_DS1307,0x04,(datas/10&lt;&lt;4)+datas%10);}
    if(monts &lt; 255){i2c_write(ADDR_DS1307,0x05,(monts/10&lt;&lt;4)+monts%10);}
    if(years &lt; 255){i2c_write(ADDR_DS1307,0x06,(years/10&lt;&lt;4)+years%10);}
    }   

void i2c_write(byte i2c_addr, byte i2c_reg, byte i2c_dat){
   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWSTA)|(1&lt;&lt;TWEN);  // START
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_addr &lt;&lt; 1;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_reg;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_dat;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO); // СТОП
  }

int i2c_read_1bit(byte i2c_addr, byte i2c_reg){
   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWSTA)|(1&lt;&lt;TWEN);  // START
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_addr &lt;&lt; 1;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = i2c_reg;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));

   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWSTA)|(1&lt;&lt;TWEN);  // START
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));
   TWDR = (i2c_addr &lt;&lt; 1) | 1;
   TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));

   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWEA);
  while(~TWCR&amp;(1&lt;&lt;TWINT));
    byte i2c_data = TWDR;
  TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);
  while (!(TWCR &amp; (1&lt;&lt;TWINT)));

   TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO); // СТОП
  return i2c_data;
  }

// reset
uint8_t therm_reset(){
    uint8_t i;
    PORTC &amp;= ~(1 &lt;&lt; DS18B20);
    DDRC |= (1 &lt;&lt; DS18B20);
    _delay_us(480);  
    DDRC &amp;= ~(1 &lt;&lt; DS18B20);
    _delay_us(60);
    i=((PINC &gt;&gt; DS18B20) &amp; 1);
    _delay_us(420);
    return i;
}
// write bit
void therm_write_bit(uint8_t bit){
    PORTC &amp;= ~(1 &lt;&lt; DS18B20);
    DDRC |= (1 &lt;&lt; DS18B20);
    _delay_us(1);
    if(bit) DDRC &amp;= ~(1 &lt;&lt; DS18B20);
    _delay_us(60);
    DDRC &amp;= ~(1 &lt;&lt; DS18B20);
}
// read bit
uint8_t therm_read_bit(void){
    uint8_t bit=0;
    PORTC &amp;= ~(1 &lt;&lt; DS18B20);
    DDRC |= (1 &lt;&lt; DS18B20);
    _delay_us(1);
    DDRC &amp;= ~(1 &lt;&lt; DS18B20);
    _delay_us(14);
    if(PINC &amp; (1 &lt;&lt; DS18B20)) bit=1;
    _delay_us(45);
    return bit;
}
 
// read byte
uint8_t therm_read_byte(void){
    uint8_t i=8, n=0;
    while(i--){n&gt;&gt;=1;n|=(therm_read_bit()&lt;&lt;7);}
    return n;
}
 
// write byte
void therm_write_byte(uint8_t byte){
    uint8_t i=8;
    while(i--){therm_write_bit(byte&amp;1);byte &gt;&gt;= 1;
    }
}
// read temp
int read_temp(){
    uint8_t temperature[2];
    float temper;
    therm_reset();
    therm_write_byte(0xCC);
    therm_write_byte(0x44);
    while(!therm_read_bit());
    therm_reset();
    therm_write_byte(0xCC);
    therm_write_byte(0xBE);
    temperature[0]=therm_read_byte();
    temperature[1]=therm_read_byte();
    therm_reset();
    temper = (temperature[1] &lt;&lt; 8 | temperature[0])/0.16;
    return (int)temper;
}  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-03-30T17:54:25Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7669#p7669</id>
		</entry>
</feed>
