Пн сен 17, 2012 00:00:40
Пн сен 17, 2012 06:57:13
ivanov6 писал(а):Вопрос к автору
Собрал часы, но вопрос по температуре остался. При "потере" датчика "замерзают" показания индикаторов температуры. За сутки реально так случилось. Выключил - включил -Fnd0. Перестыковал датчики - нормально. Кстати в Протеусе, если при работе отключить термометры(установить кнопку), то ситуация аналогичная. Срочно нужен совет по программе - все уже в корпусе.
Пн сен 17, 2012 07:16:50
Aaantonnn15 писал(а):Вопрос автору. Интересно можно ли обойтись без ds1307 в конструкции? На борту у меги ведь есть встроенные таймеры!
Пн сен 17, 2012 10:09:31
Danko писал(а):Aaantonnn15 писал(а):Вопрос автору. Интересно можно ли обойтись без ds1307 в конструкции? На борту у меги ведь есть встроенные таймеры!
Конечно можно.
И в этих часах и во всех других.
А еще вместо DS1820 можно использовать кремневый диод (при измерении положительных температур), только вот вопрос, а зачем? ради чего?
DS1307 + батарейка = два бакса
Пн сен 17, 2012 10:26:13
Пн сен 17, 2012 15:04:53
Ср сен 19, 2012 16:23:54
Чт окт 18, 2012 08:14:48
m169 писал(а):Доброго времени суток. Плата под данный проект. Пользуйтесь на здоровье. (2стр. 7 пост, от 7 октября 2011 г.)
Чт окт 18, 2012 08:38:40
Чт окт 18, 2012 09:28:37
santy писал(а):m169 писал(а):Доброго времени суток. Плата под данный проект. Пользуйтесь на здоровье. (2стр. 7 пост, от 7 октября 2011 г.)
Неужили кто то собирал по этой плате и у него работало!!! или никто по ней за год так и не собирал??? я тут начал было собирать, но что то там нестыковочка какая-то, прикрепляю рисунок со схемой и платой, смотрите как стыкуются две микрухи ULN2803A и 74HC595...
Чт окт 18, 2012 17:09:57
Чт окт 18, 2012 20:30:48
Чт окт 18, 2012 20:43:08
Чт окт 18, 2012 20:55:47
Пт окт 19, 2012 05:32:53
Вт окт 23, 2012 09:27:00
Danko писал(а):Тю, а я то думал ...
Все будет работать, но только в программе нужно несколько строк подправить.
m169, я не не ошибаюсь?
Чт окт 25, 2012 13:06:54
Danko писал(а):Кроме DS1307 есть более дешевые и лучшие микросхемы. Например M41T56.
Чт окт 25, 2012 13:51:01
Сб ноя 17, 2012 00:25:48
TovsCat писал(а):Здравствуйте подскажите как всетаки вычисляется этот день недели...
[spoiler]Danko писал(а):Нет это обычный счетчик от 1 до 7. То что выставишь то и будет считать.
Я в своих часах его вообще не использую, а вычисляю.
Формула есть на Википедии.
Кусок кода из моих часов (Си CVAVR):
- Код:
// в данной версии данные хранятся не в двоичной, а в двоично-десятичной системе
unsigned char
myhour, mymin, mysec, // текушее время
mydate, mymonth, myyear, // текущий календарь
myday; // день недели
// ---------- вычислить день недели по дате ----------
void date2day(void) {
unsigned int y, m;
y = bcd2bin(myyear);
m = bcd2bin(mymonth);
if (m > 2) { m -= 2; }
else { m += 10; y--; }
myday = (unsigned char)((bcd2bin(mydate) + y + (y>>2) + ((31 * m) / 12)) % 7);
if (myday == 0) myday = 7;
}//----------
/*****************************************************
CodeWizardAVR V2.04.4a Advanced
Chip type : ATmega8
AVR Core Clock frequency: 4,000000 MHz
*****************************************************/
#include <mega8.h>
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#asm
.equ __ds1302_port=0x15 ;PORTC
.equ __ds1302_io=5
.equ __ds1302_sclk=4
.equ __ds1302_rst=3
#endasm
#include <ds1302.h>
unsigned char hour,min,sek; //часы, минуты, секунды
unsigned char day,month,year; //часы, минуты, секунды
unsigned char myday; // день недели
// ---------- вычислить день недели по дате ----------
void date2day(void) {
unsigned int y, m;
y = bcd2bin(year);
m = bcd2bin(month);
if (m > 2) { m -= 2; }
else { m += 10; y--; }
myday = (unsigned char)((bcd2bin(day) + y + (y>>2) + ((31 * m) / 12)) % 7);
if (myday == 0) myday = 7;
}//-
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
// DS1302 Real Time Clock initialization
// Trickle charger: Off
rtc_init(0,0,0);
lcd_init(16);
while (1)
{
rtc_get_time(&hour,&min,&sek); //считать время
rtc_get_date(&day,&month,&year); //считать дату
lcd_gotoxy(0,0);
lcd_putchar(hour/10+0x30);
lcd_putchar(hour%10+0x30);
lcd_putchar(':');
lcd_putchar(min/10+0x30);
lcd_putchar(min%10+0x30);
lcd_putchar('.');
lcd_putchar(sek/10+0x30);
lcd_putchar(sek%10+0x30);
lcd_gotoxy(0,1);
lcd_putchar(day/10+0x30);
lcd_putchar(day%10+0x30);
lcd_putchar('.');
lcd_putchar(month/10+0x30);
lcd_putchar(month%10+0x30);
lcd_putchar('.');
lcd_putsf("20");
lcd_putchar((year/10)%10+0x30);
lcd_putchar(year%10+0x30);
lcd_putchar(' ');
lcd_putchar(myday%10+0x30);
};
}
Сб ноя 17, 2012 20:16:51
Без каких?без дополнительных функций,
unsigned char day,month,year; //часы, минуты, секунды
unsigned char myday; // день недели