roboforum.ru

Технический форум по робототехнике.

Опять проблема с часами

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Опять проблема с часами

Сообщение Montoya » 11 авг 2008, 13:46

Вобщем подключил к часам ds18b20.И столкнулся с проблемой, когда включен таймер TIMSK=0x10;, то вывод температуры на экран начинает глючить или температура не выводится,а часы работают нормально. Когда делаю TIMSK=0x00;, то часы вырубаются,но зато работает ds18b20. Что может быть не так?
Вложения
123.rar
(113.69 КиБ) Скачиваний: 27
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Опять проблема с часами

Сообщение Montoya » 18 авг 2008, 19:39

Ааааааа,у меня паника!!!! Не могу понять, почему работа таймера сказывается на работе 1-wire порта ( в частности ds18b20) ????? Уже все перепробывал, ниче не помогает....
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Опять проблема с часами

Сообщение rig » 18 авг 2008, 21:27

тайминги не выдерживаются вот и получаешь нечто, запрещай прерывания на время обмена с 1820
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Опять проблема с часами

Сообщение Montoya » 18 авг 2008, 22:18

Делал я так, но время же будет останавливаться, часы будут отставать...Или на это можно не обращать внимание? Я щя просто либу на 1820 поковырял и вырубил сообщения об ошибке :) единственное теперь температура с более длительными задержками меняет свое значение,а так все нормуль)

Добавлено спустя 23 минуты 1 секунду:
Попробовал сделать вот так:
Код: Выделить всёРазвернуть
TIMSK=0x00;
temp = ds18b20_temperature(0);
TIMSK=0x10;

но визуально получается задержка во времени дето 1сек, конечно можно сделать после этого seconds++, но мне кажется эта задержка незначительна
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Опять проблема с часами

Сообщение rig » 18 авг 2008, 22:44

смотря какое разрешение, все зависит от него. на самом высоком 12 бит температура считается почти секунду.
в это время можно спокойно считать время , зачем ждать окончания преобразования?
шлешь команду на преобразование, периодически проверяешь закончилось или нет, или тупо через 5 сек считываешь, или принципиально каждую секунду мерить?
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Опять проблема с часами

Сообщение Montoya » 18 авг 2008, 22:52

Вот кусок кода,отвечающий за показ температуры
Код: Выделить всёРазвернуть
if ((PIND & 1<<0) == 0 && ds18b20_init(0,-55,125,DS18B20_12BIT_RES))                     
        {
        TIMSK=0x00;
        temp = ds18b20_temperature(0);
        TIMSK=0x10;
        milliseconds = milliseconds + 90;
        lcd_clear();
        while (!(PIND & 1<<0))
        {
        sprintf(lcd_buffer,"%+.1fxdfC",temp);
        lcd_gotoxy(2,0);
        lcd_putsf(tmp);
        lcd_gotoxy(4,1);
        lcd_puts(lcd_buffer);
        };
        lcd_clear(); 
        };


Добавлено спустя 4 минуты 42 секунды:
Т.е. у меня показ температуры не все время, а только при нажатии клавиши
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Опять проблема с часами

Сообщение rig » 18 авг 2008, 23:18

я так делал с 1821, но принцип тотже
Код: Выделить всёРазвернуть
void wait(void)
{char x;
w1_init();                           // инициализация 1821
w1_write(0xEE);                      // WRITE COMMAND START CONVERT EEh(для 1820 44h вроде такая команда)

// а вот ждать тут не обязательно окончания преобразования, можно периодически опрашивать, выставив флажок что производится замер температуры.
do
{
w1_init();                           // инициализация
w1_write(0xAC);                      // WRITE COMMAND READ STATUS ACh
x=w1_read();
}
while(!(0b10000000&x));      // READ STATUS
}


ПРЕОБРАЗОВАНИЕ T [44h]
Эта команда вводит единственное температурное преобразование. Следуя За преобразованием, результирующие термические данные загружается в 2-байтовом температурном регистре в сверхоперативной памяти и возврат DS18S20 своему низкому-силовому состоянию ожидания. Если устройство используется в паразитном силовом режиме, в пределах 10 мs (max) после того, как эта команда выпущена мастера должно приспособить прочный pullup в 1-проводной шине в течение преобразования (tconv) как указано в POWERING секция DS18S20. Если DS18S20 усиливается внешней поставкой, мастер может выпустить слоты читающего времени после того, как Преобразование команды T и DS18S20 ответит передавая 0 тогда как температурное преобразование осуществится и 1 когда преобразование сделать. В паразитном силовом режиме, эта техника уведомления не может использоваться с тех пор как шина потянута высокий прочным pullup в течение преобразования.


вот пример из даташита, конечно если охчется разбираться
2.JPG
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Опять проблема с часами

Сообщение Montoya » 19 авг 2008, 11:07

Спасибо! Буду эксперементировать... а в даташите на 1820 я видел эти команды, просто не врубался как их заюзать :oops:
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Опять проблема с часами

Сообщение rig » 19 авг 2008, 11:57

если библиотеку разобрал то должно уже доходить по маленьку, в ней теже команды испльзуются чтои в ДШ
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Опять проблема с часами

Сообщение Montoya » 19 авг 2008, 12:43

Ну да) Лан, с 1820 я разобрался, поставил временно разрешение на 9 бит, задержка теперь незначительная. Меня сейчас больше волнует точность хода моих часов, щя проверю, какая погрешность за сутки.
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Опять проблема с часами

Сообщение rig » 19 авг 2008, 14:04

для часов надо спец микруху ставить, она тебе и дни недели и годы посчитает. только считывай с памяти данные и выводи как хошь. плюс батареейка на несколько лет
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Опять проблема с часами

Сообщение Montoya » 19 авг 2008, 14:50

Видел в нете примеры часов на таких микрухах, но мне хотелось попробывать сделать на обычном кварце :) Зато пока делал, разобрался с таймерами и получил больше опыта в программировании )
плюс батареейка на несколько лет

Т.е. время не сбиваеца при выключении общего питания схемы, а продолжает считать за счет ресурсов этой батарейки?

ЗЫ Потом и на спец микрухе сделаю часы)

Добавлено спустя 35 минут 15 секунд:
Порыл в нете насчет спец микрух, думаю ds1307 будет подходящим вариантом, в cvavr есть библиотека на него)
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Опять проблема с часами

Сообщение rig » 19 авг 2008, 16:19

под рукой нет, какая то дс. я пару уже купил для одной готовой поделки. позже озвучу и ДШ могу выложить
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Опять проблема с часами

Сообщение Montoya » 19 авг 2008, 16:36

ОК, а ДШ впринципе не проблема, если че, в нете найду :)
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Опять проблема с часами

Сообщение Myp » 19 авг 2008, 16:45

микросхемы часов кажется TI бесплатно шлёт как сэмплы в дип корпусе
у меня друг заказывал
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12