roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 11:25

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Опять проблема с часами
СообщениеДобавлено: 11 авг 2008, 13:46 
Не в сети
Аватара пользователя

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


Вложения:
123.rar [113.69 КиБ]
Скачиваний: 27
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 18 авг 2008, 19:39 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 18 авг 2008, 21:27 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 18 авг 2008, 22:18 
Не в сети
Аватара пользователя

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

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

но визуально получается задержка во времени дето 1сек, конечно можно сделать после этого seconds++, но мне кажется эта задержка незначительна


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 18 авг 2008, 22:44 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 18 авг 2008, 22:52 
Не в сети
Аватара пользователя

Зарегистрирован: 14 авг 2007, 15:16
Сообщения: 168
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван
Вот кусок кода,отвечающий за показ температуры
Код:
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 секунды:
Т.е. у меня показ температуры не все время, а только при нажатии клавиши


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 18 авг 2008, 23:18 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
я так делал с 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
2.JPG [ 133.42 КиБ | Просмотров: 1779 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 19 авг 2008, 11:07 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 19 авг 2008, 11:57 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 19 авг 2008, 12:43 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 19 авг 2008, 14:04 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 19 авг 2008, 14:50 
Не в сети
Аватара пользователя

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

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

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

Добавлено спустя 35 минут 15 секунд:
Порыл в нете насчет спец микрух, думаю ds1307 будет подходящим вариантом, в cvavr есть библиотека на него)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 19 авг 2008, 16:19 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 19 авг 2008, 16:36 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Опять проблема с часами
СообщениеДобавлено: 19 авг 2008, 16:45 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

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

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO