7 Segment Display и 18B20
|
|
ivan_fd |
Дата: Вт, 18.08.2009, 19:05 | Сообщение # 1 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Привет народ. Кто может что подсказать, для теста собрал термометр на 18b20. Прогу слепил с кусков кода с этого форума. В протеусе все работает как надо, а в реальном железе, через интервал за который происходит прерывание, дисплей подмигивает. Мигает как раз в тот момент когда идет запрос на измерение температуры. Как бы это обойти? Я в принципе увеличил интервал до ~7 сек. но...
|
|
|
|
MasterPic |
Дата: Вт, 18.08.2009, 19:28 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
186
Замечания:
±
На сайте с 22.11.2008
Статус:
Offline
|
Что-то и в протеусе у меня неправильно работает. WinXP, Proteus 7.5 SP3. Ощущение, что все цифры одновременно моргают.
|
|
|
|
ivan_fd |
Дата: Вт, 18.08.2009, 19:34 | Сообщение # 3 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
У меня протеус 7.5 SP3. В протеусе у меня не мигает, а в железе, да как будто все 3 сразу.
|
|
|
|
DAlexV |
Дата: Ср, 19.08.2009, 16:59 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
ivan_fd, не силен я протоне, но мне кажется что у тебя прерыванием косяк. Code On Interrupt Goto myint ; переход к подпрогамме обработки прерывания
myint: Disable ;запрет всех прерываний IF INTCON.2 = 1 THEN ;если сработал таймер то / п.п вывода на индикатор INTCON.1 = 0 ; сброс флага прерывания ENDIF Resume ; восстановление системных переменных Enable ; включение прерываний
В других местах команды Enable и Disable модно выкинуть. В подпрограмме вывода на индикатор перекодировка в BCD, переключение разрядов, и вывод на индикатор. Посмотри мои часы. Нарисаны на Рыбе, но принцип думаю понятен будет. Там же и схема а Шпротеусе.
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
ivan_fd |
Дата: Ср, 19.08.2009, 18:04 | Сообщение # 5 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Спсибо, вечером дома посмотрю. Но я думаю, что прерывания тут не при чем. Как только я из кода выкидываю команди чтения из микросхемы термометра, то и подмигивание пропадает. Посмотрю, о результатах отпишу.
|
|
|
|
DAlexV |
Дата: Ср, 19.08.2009, 18:08 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (DAlexV) Enable и Disable можно выкинуть Они скорее всего тебе и дают мигания. Так как то останавливают, то запускают прерывания, а чтение(запись) термодатчика имеют разные временные интервалы
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Ср, 19.08.2009, 18:25
|
|
|
|
ivan_fd |
Дата: Пт, 21.08.2009, 23:15 | Сообщение # 7 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Значит так докладываю о результатах. Перепробовал кучу вариантов, все равно есть подмигивания. Моя мысль почему они есть, по даташиту 18b20, максимальное время считывания составляет 750 мс, и как раз в это время и не идет обработка вывода на дисплей. По этому дисплей в этот момент мигает.
|
|
|
|
wws63 |
Дата: Сб, 22.08.2009, 17:05 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
1
Замечания:
±
На сайте с 22.08.2009
Статус:
Offline
|
Quote (ivan_fd) все равно есть подмигивания Подмигивания будут по любому. Таков протокол 1-wire
|
|
|
|
terrarus |
Дата: Вс, 23.08.2009, 09:54 | Сообщение # 9 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Советую использовать для отображение информации знакосинтезирующие ЖКИ, Например LCD WH-1601... 16 знаков в одной строке, или WH-1602.... 16 знаков в двух строках Проблем с миганием совершенно не будет да и вывести массу дополнительной информации можно. Лично я стараюсь использовать в своих разработках 4-строчные с 24 знаками в каждой строке. А в одной даже собираюсь использовать 4-х строчный с 40 знаками каждой строке, и стоят они не так уж дорого. Причем и в ВasicPic Pro и в Proton+IDE есть хорошие операторы для работы с ними. Для справки - они гораздо дешевле на platan.ru чем на chipdip.ru Если заинтересуетесь посмотрите примеры применения их http://www.terrarus.ucoz.ru/proton_plus_ide/index.html
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Вс, 23.08.2009, 09:58
|
|
|
|
ivan_fd |
Дата: Вс, 23.08.2009, 20:03 | Сообщение # 10 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (terrarus) Советую использовать для отображение информации знакосинтезирующие ЖКИ, Например LCD WH-1601... 16 знаков в одной строке, или WH-1602.... 16 знаков в двух строках Проблем с миганием совершенно не будет да и вывести массу дополнительной информации можно. Лично я стараюсь использовать в своих разработках 4-строчные с 24 знаками в каждой строке. А в одной даже собираюсь использовать 4-х строчный с 40 знаками каждой строке, и стоят они не так уж дорого. Причем и в ВasicPic Pro и в Proton+IDE есть хорошие операторы для работы с ними. Для справки - они гораздо дешевле на platan.ru чем на chipdip.ru Если заинтересуетесь посмотрите примеры применения их http://www.terrarus.ucoz.ru/proton_plus_ide/index.htm Спасибо, про LCD я в курсе, но мне нужно именно 7Seg. И дело вовсе не в цене дисплея.
|
|
|
|
demanik |
Дата: Пн, 24.08.2009, 18:49 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (ivan_fd) но мне нужно именно 7Seg. И дело вовсе не в цене дисплея Тогда поставте на каждую цыфру декодер защелку например TC4511 и проблема исчезнет да и другие проблемы с индикацией не возникнут. А если денег не жалко то лучше использовать драйвера LED работающие по шине нипример MC14499 или SAA1064. Сам их частенько использую, никаких заморочек с мерцанием подмигиванием. P.S. Хотя собирал вашу схемку подмигивание там почти незаметное.
Попробуй всё и вся... может быть пол...
|
|
|
|
ivan_fd |
Дата: Пн, 24.08.2009, 20:18 | Сообщение # 12 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Спасибо. Да подмигивание почти не заметно, но... Добавлено (24.08.2009, 20.18.54) ---------------------------------------------
Quote лучше использовать драйвера LED работающие по шине нипример MC14499 или SAA1064 Где бы посмотреть пример работы с этими микросхемами?
|
|
|
|
demanik |
Дата: Пн, 24.08.2009, 20:28 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (ivan_fd) Где бы посмотреть пример работы с этими микросхемами? SAA1064 использует шину I2C: BUSOUT $70, [0, control]' Управляющий регистр BUSOUT $70, [1,dig3,dig2,dig1,dig0]' Сами цыферки Если нужно могу выложить даташит.
Попробуй всё и вся... может быть пол...
|
|
|
|
ivan_fd |
Дата: Пн, 24.08.2009, 20:34 | Сообщение # 14 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Даташит есть, спасибо. А MC14499?
|
|
|
|
demanik |
Дата: Пн, 24.08.2009, 21:13 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (ivan_fd) А MC14499? Там управление трехпроводное (ENABLE, DATA и CLOCK). Вся посылка передается последовательно 4цыфры по 4бита и 4бита запятые. Минус можно выводить только запрограмированные цыфры и символы, а в SAA1064 в передаваемых данных мы индивидуально указываем какие сегменты в какой цыфре засвечивать (тоесть можно произвольно рисовать любые символы) и есть возможность управлять яркостью.
Попробуй всё и вся... может быть пол...
|
|
|
|