http://www.forum.getchip.net/

Термометр с 7-сегментным индикатором
http://www.forum.getchip.net/viewtopic.php?f=16&t=134
Страница 1 из 2

Автор:  SVN [ 20 ноя 2011, 15:47 ]
Заголовок сообщения:  Термометр с 7-сегментным индикатором

Решил изучить работу МК с 7-сегментном индикатором. Сделал термометр на 7-сегментном индикаторе. Проверил в железе. Но качество динамической индикации не понравилось. Видны подмигивания при измерении температуры. Изменения частоты в небольших пределах, полностью не убрало этот эффект. Думаю, что данный алгоритм необходимо править, но где? Что-то не соображу. Перепробовал все решения, что удалось придумать, но без успешно. Подскажите, что изменить в данном алгоритме для стабильной работы динамической индикации в данном устройстве.
7_seg_term_OA.rar [19.2 КБ]
Скачиваний: 814

Прошу прощения не сразу заметил ошибку в заголовке темы. Хотел написать «Термометр с 7-сегментным индикатором». Прошу администратора поправить заголовок. Спасибо.

Автор:  GetChiper [ 20 ноя 2011, 18:15 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

На первый взгляд просто нужно увеличить частоту обновления семисегментного индикатора.
Это делается в прерывании по переполнению Timer0
sshot-1.png
sshot-1.png [ 9.2 КБ | Просмотров: 16994 ]

Просто попробуй поменять пределитель с 64 на 8.

Автор:  SVN [ 20 ноя 2011, 19:23 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

Как уже писал, пробовал именно эти варианты а также корректировал ТСNT0, как Вы уже заметили, но не помогло. Подмаргивание (изменение яркости сегментов) происходит в тот период когда работает прерывание по таймеру 1 (измерение температуры). До прерывания по таймеру 1 и после, индикация работает стабильно. Вероятно это потому что много времени уходит при обращении к датчику.

Автор:  GetChiper [ 21 ноя 2011, 01:52 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

Тут сложно что то подправить. При входе в прерывание по таймеру1 запрещаются все остальные прерывания. Можно, конечно, их разрешить в теле обработчика прерывания от таймера1, но для корректной работы 1Wire необходимы точные отсчеты времени, а это будет невозможно реализовать если будут разрешены прерывания. Единственно что можно посоветовать в этом случае - это разрешить прерывания в обработчике прерывания от таймера1, но запрещать их на участках, где идет обмен данными по интерфейсу.

Автор:  SVN [ 21 ноя 2011, 08:05 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

Спасибо за помощь. Остановился на таком варианте. Опрос датчика раз в 8 сек и убран один таймер. Если не приглядываться то небольшое изменение в яркости вовремя опроса датчика почти незаметно.

Вложения:
7_seg_term_OA_2313.rar [15.19 КБ]
Скачиваний: 812

Автор:  GetChiper [ 21 ноя 2011, 18:30 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

Тоже хороший вариант - зачем его часто опрашивать.

Автор:  anatoliy [ 21 ноя 2011, 20:54 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

Алгоритм простой
Зажгли сигмент ждем паузу (расчёт значение паузы такой что-бы частота регенерации всего индикатора была не мение 50герц). По завершении паузы тушим текущий зажигаем следующий и опять пауза. Если тупо зажигать и тушить сегменты без соблюдения временных интервалов. То будем иметь проблемы. В будет менятся яркость и подсвечиваться соседние сегменты. Не забывайте что зрение штука инерционная.

Автор:  SVN [ 21 ноя 2011, 21:36 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

Спасибо Анатолий за совет. На грабли уже наступил, :-) буду дальше экспериментировать.

Автор:  SVN [ 22 ноя 2011, 19:03 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

Если не обращаться к датчику, то индикация работает идеально. В общем в данном девайсе сделать полностью без подмигивания при опросе датчика не получилось, а жаль. :(

Автор:  anatoliy [ 22 ноя 2011, 19:23 ]
Заголовок сообщения:  Re: Термометр с 7-сегментным индикатором

А в прерывании регенерацию индикатора сделать слабо? :-D

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/