Обсуждаем контроллеры компании Atmel.
Ответить

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 06, 2017 20:18:41

точно забыл щааааааа..........

Добавлено after 14 minutes 50 seconds:
ну... ну... ваще ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!
5 минут глядел ни одного косяка
месяц моих мучений закончился, огромное спасибо
маленькая просьба, так чтобы понять, что ВЫ написали пркоментируйте
Код:
 while((temperature = ds18x20_temperature(&rom_code[i][0])) == -9999)

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 06, 2017 22:11:36

Цикл, который крутится, пока значение в скобках истинно(или наоборот, если !=).
Я этот цикл в своих программах не использую без счетчика таймаута, но здесь собака сработает, если оно вдруг зависнет. А вообще вчерашний вариант программы не работал только из-за того вашего косяка в ds18x20_v3.lib, и он лучше, на вашем месте я бы использовал именно его.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пн окт 16, 2017 22:30:14

Всем привет!
забыл в пятницу выключить будильник, а в субботу он всех разбудил рано.....

решил исправить ситуацию
воял-воял правил-правил программу, все тупик, прошу помощи в следующем:
если открыть протеус нажать кнопку "уст" год вроде правильно, но месяцы 1.2.3.4.5.6.7.8.9.0A.0b.0C дни вроде правильно
на часа в протеусе трехзначное число в днях или годе
получается кнопки неправильно
myday=day_from_data();
rtc_set_date(myday, mydate, mymonth, myyear); записывают ячейки или что куда копать???

Добавлено after 44 minutes 56 seconds:
получается я не правильно считаю дни недели

//---------- вычисление дня недели по дате ----------

unsigned int day_from_data () {
unsigned int a,y,m,day;
mymonth=bcd2bin(mymonth);
a=(14-bcd2bin(mymonth))/12;
y=(bcd2bin(myyear)+2000)-a;
m=bcd2bin(mymonth)+12*a-2;
day=(7000+(bcd2bin(mydate)+y+y/4-y/100+y/400+(31*m)/12))%7;
day=bin2bcd(day+1);
return day;



если поставить в код myday=day_from_data(); просто myday=2; (сегодня понедельник) то все работает четко



другой вопрос как высчитать по другому день недели????????

Добавлено after 1 hour 9 minutes 35 seconds:
Извиняюсь за беспокойство, решено
// ---------- вычислить день недели по дате ----------
void day_from_data(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;
}//----------



пока больше глюков в прошивке не нашел если кто желает пробуйте
изменено:


последовательность индикации: время/число+ день недели/температура,

Будильники:
два светодиода - индикация активности будильника(ов)
будильник "Б1" время срабатывания PORT_ALARM_BIPER
будильник "Б2" время отключения PORT_ALARM_BIPER (если "Б2"-- 24 часа в сутки будет петь :)) )


установки будильников кнопкой будильник "Б1"
кнопка "Б2" большая красная на верху будильника ОТКЛЮЧЕНИЕ СИГНАЛА (мне показалось не совсем удобно
с просони искать кнопки "+ и -" хотя они также работают как и у автора)


номера ячеек EEPROM и их значение (на индикаторе номер ячейка Е2 - Е9 и ее значение):
2 - индикация незначащего нуля в десятках часов
3 - отбрасывание десятых долей при индикации температуры и добавление символа "С"
4 - включение плавной смены показаний
5 - включение ночного режима с 22-00 до 6-00
6 - работа с двумя видами точек
7 - "пятый" разряд (знак температуры)
8 - режим индикации состояния ADC (0 - кнопки, 1 - фоторезистор, F - откл.)
9 - автоперевод стрелок лето/зима (0 - отключено, 1 - включено т.е. по умолчанию включено)
а - минимальный уровень яркости (от 10 до 200) индикация в десятках т.е. на индикаторе от 1 до 20
b - работа будильника по выходным
Вложения
часы динамика день_ночь дни недели.7z
(248.84 KiB) Скачиваний: 307

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт окт 19, 2017 19:12:49

прошу сильно не ругать, я забыл в библиотечке датчика отключить все cli() и sei() во вложении от 16.10.17

или скачать исправленное вложение

Добавлено after 1 hour 12 minutes 47 seconds:
часы за месяц убежали на полторы минуты в перед, коррекция дело хорошее, но хотелось бы
более точный девайс. выписал у китайцв DS3231 AT24C32 IIC модуль пока жду его изучаю литературу.

возникли несколько вопросов, прокомментируйте
где лучше хранить данные в энергонезависимой памяти атмеги 8 или AT24C32

ds1307
допустим мне надо сохранить в ОЗУ в ячейке 12 число 23
смотрим код в наших часах

// ячейки памяти DS1307 в которых сохраняются переменные

#define MEM_T_IND_DATE = 12
пишем
rtc_write(MEM_T_IND_DATE,23);
и наша библиотека ds1307_twi.h переводит число в 8 битное двоичное исчисление 00010111 и закидывает в 12 ячейку

так???

ds 33231 структура ячеек похожа за исключением будильников однако памяти своей нет воспользуемся AT24C32
в инструкции к ней написано первая ячейка с номером 0x57 (в каком исчислении я не понял Десятичная или Шестнадцатиричная)
в этой микросхеме можно писать 8 битную информацию 8 одна ячейка , 16 одна и переползет на следующую , 32 одна и переползет
на 3 следующих нам такие не нужны пишем только 8 битные числа ( тут я не понял, сколько в ней ячеек по восемь бит )

допустим мне надо сохранить в AT24C32 в ячейке 63 число 23
// ячейки памяти AT24C32 в которых сохраняются переменные

#define MEM_T_IND_DATE = 63
пишем
rtc_write(MEM_T_IND_DATE,23);

и наша библиотека ds1307_twi.h переводит число в 8 битное двоичное исчисление 00010111 и закидывает в 63 ячейку
так???

прокомментируйте мои мысли вслух что так что нет
киньте ссылку что еще почитать только на русском по английски для меня трудно
Вложения
часы динамика день_ночь дни недели ds1307.7z
(248.81 KiB) Скачиваний: 238

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт окт 19, 2017 22:09:53

Лучше юзать флешку, чем еепром меги, ессно, у флешки ресурс выше на порядок. Обращение через функцию rtc_write() работать не будет, у флешки другой адрес.
Выкладывал на прошлых страницах несколько лет назад код с i2c либой, подправленной специально под связку 3231+24C32.
А еще писал как-то свою либу для одного проекта, там сразу и побайтово, и блоками по 16 байт можно флеш писать/читать, заодно и все функции 3231, включая считывание температуры с встроенного датчика. Если интересно, поищу ее.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб окт 21, 2017 09:01:49

Выкладывал на прошлых страницах несколько лет назад код с i2c либой, подправленной специально под связку 3231+24C32

да я видел на 103 стр. но там нет исходника если сохранился покажите код.

Если интересно, поищу ее.

очень интересно

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб окт 21, 2017 11:38:23

philosoraptor писал(а):Лучше юзать флешку, чем еепром меги,
24С - нисколько не флешь память, а ЕЕПРОМ. У МК Атмел вполне долговечная ЕЕПРОМ, не хуже , чем в 24С по ресурсу, задолбаетесь его исчерпывать.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб окт 21, 2017 12:53:29

Serzh2000
Хорошо, сегодня-завтра попробую порыться в старых флешках.

Martin76 писал(а):У МК Атмел вполне долговечная ЕЕПРОМ, не хуже , чем в 24С по ресурсу


Дайте угадаю: в дэташиты

Изображение

мы не заглядываем, ибо не барское это дело.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пн ноя 06, 2017 15:06:06

все привет!

пока жду из китая ds3231 решил сделать по красивше корпус для часов
и вот подумал очень много у нас кнопок аж 7 штук
надо переделать на 4 согласны?

вопрос : одно нажатие на кнопку попадаем в настройку часов
if (key == KEY_SET) {
indicate = IND_SET_H;

}

одно долгое нажатие (больше 3 сек) попадаем в настройку будильника
if (???????? == KEY_SET) {
indicate = IND_SET_AL1_H;

}

как это написать ?

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пн ноя 06, 2017 15:08:54

Конечные автоматы, MicroMenu.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт ноя 07, 2017 18:35:43

точно нужно сделать меню
примерно так

set CLOC:
sec – часы;
– минуты;
– секунды
– коррекция ( хотя коррекция наверно вообще не нужна на ds3231)

set ALAr:
sec – А1 будильник
– часы
– минуты
– А0 будильник
– часы
– минуты

set diSP:
sec – время индикации текущего времени.
– время индикации даты.
– время индикации температуры.
set LiGH:
sec – минимальный порог яркости
– максимальный порог яркости


кажется ничего не забыл

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Ср ноя 08, 2017 19:50:04

Всем привет. В программировании АВР я новичок, и мои попытки переделать код по д себя не увенчались успехом( Хотел бы поинтересоваться: может быть кто-то правил код под индикатор такого плана(фото прилагаю): +/- температуры отображается в первом разряде, дата отображается с точкой между числом и месяцем.
Изображение

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Ср ноя 08, 2017 20:56:01

индикатор такого плана(фото прилагаю)

на таком индикаторе не будет высвечиваться десятки температуры, только целые числа

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Ср ноя 08, 2017 21:30:13

индикатор такого плана(фото прилагаю)

на таком индикаторе не будет высвечиваться десятки температуры, только целые числа

Десятки и не требуются. Главное уменьшить размер и сохранить "+".

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт ноя 09, 2017 15:06:53

Десятки и не требуются.

ежели так ща попробую

Добавлено after 18 minutes 2 seconds:
на попробуй, в протеусе работает в железе не знаю
вертикальная палочка у плюса подключается вместо точки на четвертом разряде
и еще сделал отрицательную температуру показывает с нолем (-05 градусов) ,
а положительную без ноля (+ 5 градусов )
прикинь как лучше с нолем или без я поправлю потом
Вложения
с плюсом и минусом.7z
(241.56 KiB) Скачиваний: 216

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт ноя 09, 2017 22:03:16

Serzh2000, спасибо!!! Ваши правки помогли мне сориентироваться в коде.
Я все же решил что дробная часть нужна, вернул ее, добавил точку в индикации даты. Может кому пригодится, прикрепляю архив.
Вложения
с_плюсом_и_минусом+дробь_темп+точка_в_дате.rar
(270.1 KiB) Скачиваний: 259

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт ноя 10, 2017 17:35:52

я рад, что смог помочь

если не секрет где брали такой большой индикатор и сколько стоит?

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб ноя 11, 2017 10:21:56

Индикатор буду изготавливать самостоятельно: корпус из композитного материала отдам на фрезеровку, повставляю, распаяю диоды. Потом покажу что получится.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт ноя 28, 2017 12:19:20

изготавливать самостоятельно: корпус из композитного материала отдам на фрезеровку,

похвалитесь результатом, очень интересно посмотреть

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пн дек 04, 2017 09:32:03

Всем привет собрал уже трое чесов работают отлично.
Но есть один вопрос по поводу датчиков температуры как сделать
чтоб было видно какой датчик в данный момент показывает хотябы один.
Ответить