Attiny2313+DS1307+DS18B20

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

Уважаемый , Данко . Если Вас не затруднит , взгляните на проект по следующим вопросам :
1)Поясните строки 234--255 , не ясна тавтологическая запись или так надо . Какова частота прерываний и как таймер перезапускается , или как он работает , если иначе чем по переполнению ? ( interrupt [TIM0_OVF] void timer0_ovf_isr(void) )

2) нельзя ли сделать так , чтобы установка времени была без задержек на 0.5 с после отжатия , например так:
for (i=0;i<20;i++){ // 10 сек. показывать время (20 * 0.5 сек.)
// time_view();
if (zpt_ON == 0) zpt_ON=1; else zpt_ON=0; // помигаем точкой -=- занимает 5 слов -=-
read_key(); // -=- занимает 52 слова -=-
time_view();
delay_ms(500); // -=- занимает 3 слова -=-
}
поставить time_view(); после read_key(); а не перед , lда еще через 0.5 с - delay_ms(500);
Руки убрал ,а потом по прошествию 0.5 с время само изменяется - как то непривычно .

3)И если убрать начальные нулевые установки не будет ли места сделать ( получается около 3% свободно ), чтобы во время установки времени индикация температуры не прерывала процесс установки - очень неудобно .

Заранее , благодарю !
Вложения
Clock-Term_tiny2313_DS1307_DS18B20_4LED_OK.zip
Проект
(214.86 КБ) 518 скачиваний
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Attiny2313+DS1307+DS18B20

Сообщение Danko »

Могу сказать, что Вы выбрали не самый лучший проект для изучения.

Когда я его выкладывал, то подумать и не мог, что он будет интересен и в некотором смысле популярен. Проект создавался в далеком 2008 году и это был мой второй рабочий проект. Именно рабочий т.к. в исходнике очень много строк применяемых именно для обкатки.
например // -=- занимает 52 слова -=-

В процессе обкатки я менял содержимое регистров но при этом не менял комментарии, вот и получилась своего рода тавтология.

Вы обратили внимание на тавтологию, но не обратили внимание на эти строки

Код: Выделить всё

        rtc_get_time(&tmphour, &tmpmin, &tmpsec);

        if (tmphour != 0xFF) myhour=tmphour; // -=- занимает 3 слова -=-
        if (tmpmin  != 0xFF) mymin=tmpmin;


что касается инициализации нулями то на данный момент я в новом проекте не удаляю, но закрываю коментами эти строки.

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

Вопрос по кнопкам: как часто Вы ими пользуетесь ?

теоретически один раз при установке времени, ну еще пару раз в году при переводе стрелок. Если с кварцем не повезло, то еще раз в месяц при корректировке часов.

На данный момент я потерял полный интерес к этому проекту.

Хотите вносить исправления в проект, так вносите. На какой бес я исходники выкладывал? Так похвастаться часами?

Все мои проекты это практическое изучение програмирования. Моей первой книгой по програмированию была книга Питера Нортона (наверное есть люди которые помнят кто это такой) в которой он и советовал писать программы с практическим применением.

odesasha, а у Вас есть свой проект которым Вы могли бы поделится с общественность?

Заранее спасибо за ответ.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

Danko писал(а):odesasha, а у Вас есть свой проект которым Вы могли бы поделится с общественность?



Есть : http://radio-hobby.org/modules/newbb/vi ... pe=&mode=0
От haimovich .
Вот видеоинструкция в подтверждение работы :
http://www.youtube.com/watch?v=4grXaTOwH0g

За 3 недели более 2-х тыс просмотров , а о пользе судить не мне , а статистике .
А вот и как промышленное изделие : http://www.youtube.com/watch?v=dtG11Z5_Wzw
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re:

Сообщение vitalik_1984 »

larik писал(а):плату прислал dem-vr за что ему большое спасибо, я немного переделал под себя под SMD какие смог детали а так вобше она такая же как у dem-vr, заштриховал потому что дефицит с хлорным железом
http://radiokot.ru/forum/download/file.php?id=17138


Странно заштриховал как то неужели полигонов не было? :)
В поисках истины человек развивается.
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Attiny2313+DS1307+DS18B20

Сообщение Danko »

Ютубе. Ха.

Да там фак покажи и мильён просмотров будет.


Ваш проект интересный, но лично я ни с кем 3,14сюнами мерятся не собираюсь.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

2200 просмотров форума :
http://radio-hobby.org/modules/newbb/vi ... pe=&mode=0

А ютуб -вместо писанины , как пользоваться .
Вообще я не хвалюсь : Вы спросили - я ответил .

Простота в том , что мне все-таки хочется доработать часы на 2313 , а Вы как раз и могли бы помочь - распыляться на 2 проекта мне не можется .
Надо сделать просто часы , в цех на работе и , имея такие дома ,я попросил Вас всего-лишь доработать недостатки .
Ну нет так нет .Будет время попробуем сами . Просто в ветке по М8+4ЛЭД они опять всплыли как ВАЗ-2106 , а прошивка с вопросами , ну и я решил
проявить инициативу, а она по прежнему наказуема .
Kazemir
Открыл глаза
Сообщения: 60
Зарегистрирован: Вс апр 11, 2010 22:15:11

Re: Attiny2313+DS1307+DS18B20

Сообщение Kazemir »

odesasha!
У меня эти часики реализованы, просты, удобны, без всяких наворотов, работают нормально. Правда я еще добавил пару кнопок, чтоб удобнее было выставлять время (две кнопки на часы +/_ и на минуты аналогично). Но если доработать в плане ваших замечаний, было бы гораздо удобнее. Особенно раздражает торможение установки времени во время индикации температуры. Если у вас что то получится в этом плане, поделитесь пожалуйста результатами.
Ну а автор молодец, сделал в свое время нормальные часики, сейчас занят более интересными проблемами, хочется пожелать ему успехов, ждем от него очередной девайс (на mega168 который).
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

Сейчас в проекте часы - таймер для духовки с энкодером с кнопкой, по кнопке с удержанием > 10c будет и +/- коррекция часов .PCF8563 или DS1307
решается. 74HC595 или CD4015 на сегменты .Термометр не нужен .
Перед сборкой в макете попробуем скорректировать проект Данко ( почистив лишки для места ) , кнопки придется делать на разряды индикатора через
диоды ( нужен запуск по 6-му сигналу ) .
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Attiny2313+DS1307+DS18B20

Сообщение vitalik_1984 »

odesasha писал(а):Руки убрал ,а потом по прошествию 0.5 с время само изменяется - как то непривычно .


Смотрел я код...
М-даа там нужно полностью переписывать процедуры вывода времени на ЛЕД и в соответствии с этим опрос клавиш.

Код: Выделить всё

rtc_get_time(&tmphour, &tmpmin, &tmpsec);//читаем данные с часов!!!

        if (tmphour != 0xFF) myhour=tmphour;
        if (tmpmin  != 0xFF) mymin=tmpmin;
        //if (tmpsec  != 0xFF) mysec=tmpsec;
       
        digit_out[0] = myhour >> 4;
        digit_out[1] = myhour & 0x0F;
       
        digit_out[2] = mymin >> 4;
        digit_out[3] = mymin & 0x0F;
В поисках истины человек развивается.
Аватара пользователя
O-LED
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57
Контактная информация:

Re: Attiny2313+DS1307+DS18B20

Сообщение O-LED »

Kazemir писал(а):Особенно раздражает торможение установки времени во время индикации температуры. Если у вас что то получится в этом плане, поделитесь пожалуйста результатами.


Danko и остальные страдающие от "затыков" кнопок. Вот как я избавился от них (в своей конструкции). Нужно изменить сам принцип работы библиотеки ds18x20. Для этого нужно раздельно посылать команды на конвертацию и на чтение температуры, а паузу между ними отсчитывать самостоятельно, а не с помощью delay. После этого измерение температуры не оказывает сколь нибудь заметного влияния на нажатие кнопок.
Еще я попробовал убрать запрет прерываний в либах на время действия команд w1_write(0x44); и w1_init(); Как ни странно это совсем не добавило количество "некорректных" чтений датчика. как было примерно половина чтений некорректных, так половина и осталась, зато пропало любое "подмигивание" индикатора в любых ситуациях. Общем в таком виде измерение температуры происходит полностью незаметно. я так у себя и оставил.
"Отсеивание" некорректных показаний можно сделать как кому угодно, я сделал так. в основном цикле, сама по себе, не привязанная ни к каким действиям, каждые 2 секунды измеряется температура. удачные измерения записываются в переменную temperature, неудачные - игнорируются. А значение этой температуры уже где надо, там и используется, без всякой привязки к процессу измерения

Код: Выделить всё

//пока только для положительных температур, до отрицательных просто руки не дошли
 if (Interval >=1000)                                                 // каждые две секунды
{
Interval=0;
temperature_temp=(ds18b20_read_temp(0));                             // читаю датчик температуры DS18B20
if (temperature_temp!=(-9999)) {temperature=temperature_temp*10;}    // если температура прочиталась правильно, заносим её в "temperature"
ds18b20_convert_temp(0);                                             // команда на измерение температуры для след чтения
}

Вот эту библиотеку я использую. (прерывания не пронуты)
Вложения
ds18b20_.rar.rar
(1.61 КБ) 303 скачивания
KIT
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

Исправил баги :
1) Убрал незначащий ноль в часах меньше 10
2) Прерывание установки температурой
3) Отставание коррекции от кнопок.
Вложения
Clock-Term_tiny2313_DS1307_DS18B20_4LED_OK.zip
Исправленная и проверенная прошивка
(280.42 КБ) 632 скачивания
Kazemir
Открыл глаза
Сообщения: 60
Зарегистрирован: Вс апр 11, 2010 22:15:11

Re: Attiny2313+DS1307+DS18B20

Сообщение Kazemir »

odesasha!
Спасибо огромное за сообщение в личку и за информацию, выложенную в форуме. В ближайщее время перепрошью проц. и обязательно отпишусь о результатах.
Удачи!
Kazemir
Открыл глаза
Сообщения: 60
Зарегистрирован: Вс апр 11, 2010 22:15:11

Re: Attiny2313+DS1307+DS18B20

Сообщение Kazemir »

odesasha!
Установил вашу прошивку, вери гууд, по всем трем пунктам, перечисленным выше, отрабатывает, буду пользовать. Еще раз спасибо!
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

У меня тоже .
Есть почти 3% флэш , при оказии подумаю как запускать по 6-му сигналу , но гарантии что будет сделано не даю , нельзя сильно менять схему - у людей печатки .
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

Убрал , на мой взгляд , ненужную обработку молчания DS1307.
Кто хочет :
Добавляйте кнопку обнуления секунд на одну из ног (х) сегментов через 4.7к на землю .
Гасите индикатор переводом сегментов на входы с подтяжкой .
По 0 на этой ноге (х) делайте rtc_set_time(myhour, mymin, 0) в ф-ции обслуживания дисплея .
Верните порт на выход .
Вложения
Clock-Term_tiny2313_DS1307_DS18B20_4LED_OK_NEW.zip
Без проверки на ошибку I2C
Свободно 3% на CVv.2.03.
(281.26 КБ) 431 скачивание
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

Кто может , проверьте сброс сек .
Третья кнопка на 12 ногу ТИНИ через резистор 4.7к на массу.
Вложения
Clock-Term_tiny2313__4LED_OK_PBO_Res_sec_Button_to_resgnd.zip
Для теста на сброс секунд 3-й
кнопкой .
(284.15 КБ) 394 скачивания
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Attiny2313+DS1307+DS18B20

Сообщение Danko »

В погоне за уменьшением размера кода кое что подправил.

//Program size: 988 words (1976 bytes), 96,5% of FLASH


И еще немного подправил.
//Program size: 974 words (1948 bytes), 95,1% of FLASH
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

И наверное вместо : if (zpt_ON == 0) zpt_ON=1; else zpt_ON=0;
написать :
zpt_ON =~zpt_ON ; .

Далее надо убрать антидребезг - он не нужен .
В свободный FLash (92.3% занято )может получиться ввести еще и декремент часов и минут .
Вложения
Clock-Term_tiny2313__4LED_OK_PBO_Res_sec_Button_to_resgnd_3.zip
Для тестирования желающими .
(90.87 КБ) 352 скачивания
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

Re: Attiny2313+DS1307+DS18B20

Сообщение odesasha »

При работе над другим проектом с участием RTC , подумал , что в принципе секунды можно сбрасывать при переводе часов .
При этом не менять схему вообще , а лишь прошивку .

Установить часы на 1 меньше , по сигналу точному времени нажать кнопку часов и с инкрементом часов сбросятся и секунды .

Проект в архиве .(10% Flash свободно - кому интересно , есть где поиграться с добавлениями )
Вложения
Clock-Term_tiny2313__4LED_OK_MOD_VERSION.zip
Установить часы на 1 меньше по точному времени нажать кнопку часов и с инкркментом сбросить и секунды .
Ничего не добавлять в схему .
(87.95 КБ) 401 скачивание
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Attiny2313+DS1307+DS18B20

Сообщение Danko »

Антидребезг зря убрал.

Кстати добавить третью кнопку без изменения схемы очень легко. Нужны еще два диода и все.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»