Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » 7 Segment Display и 18B20 (Подмигивает)
7 Segment Display и 18B20
ivan_fd Дата: Вт, 18.08.2009, 19:05  |                                                                                                                Сообщение # 1
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Привет народ. Кто может что подсказать, для теста собрал термометр на 18b20.
Прогу слепил с кусков кода с этого форума. В протеусе все работает как надо, а в реальном железе,
через интервал за который происходит прерывание, дисплей подмигивает. Мигает как раз в тот момент
когда идет запрос на измерение температуры. Как бы это обойти?
Я в принципе увеличил интервал до ~7 сек. но...
Прикрепления: Temp.zip (20.4 Kb)
ЯНДЕКС Дата: 18.08.2009
MasterPic Дата: Вт, 18.08.2009, 19:28  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 186
Репутация: 2   ±
Замечания:   ±
На сайте с 22.11.2008

Статус: Offline

Что-то и в протеусе у меня неправильно работает. WinXP, Proteus 7.5 SP3. Ощущение, что все цифры одновременно моргают.
ivan_fd Дата: Вт, 18.08.2009, 19:34  |                                                                                                                Сообщение # 3
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

У меня протеус 7.5 SP3. В протеусе у меня не мигает, а в железе, да как будто все 3 сразу.
DAlexV Дата: Ср, 19.08.2009, 16:59  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 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, переключение разрядов, и вывод на индикатор.
Посмотри мои часы. Нарисаны на Рыбе, но принцип думаю понятен будет. Там же и схема а Шпротеусе.

Прикрепления: BigClock.rar (177.6 Kb)


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
ivan_fd Дата: Ср, 19.08.2009, 18:04  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Спсибо, вечером дома посмотрю. Но я думаю, что прерывания тут не при чем. Как только я из кода выкидываю
команди чтения из микросхемы термометра, то и подмигивание пропадает.
Посмотрю, о результатах отпишу. biggrin
DAlexV Дата: Ср, 19.08.2009, 18:08  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 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
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Значит так докладываю о результатах. Перепробовал кучу вариантов, все равно есть подмигивания.
Моя мысль почему они есть, по даташиту 18b20, максимальное время считывания составляет 750 мс, и как раз
в это время и не идет обработка вывода на дисплей. По этому дисплей в этот момент мигает.
wws63 Дата: Сб, 22.08.2009, 17:05  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Новенький
Сообщений: 1
Репутация: 0   ±
Замечания:   ±
На сайте с 22.08.2009

Статус: Offline

Quote (ivan_fd)
все равно есть подмигивания

Подмигивания будут по любому. Таков протокол 1-wire
terrarus Дата: Вс, 23.08.2009, 09:54  |                                                                                                                Сообщение # 9
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 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
Репутация: 124   ±
Замечания:   ±
На сайте с 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
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (ivan_fd)
но мне нужно именно 7Seg. И дело вовсе не в цене дисплея

Тогда поставте на каждую цыфру декодер защелку например TC4511 и проблема исчезнет да и другие проблемы с индикацией не возникнут. А если денег не жалко то лучше использовать драйвера LED работающие по шине нипример MC14499 или SAA1064. Сам их частенько использую, никаких заморочек с мерцанием подмигиванием. cool

P.S. Хотя собирал вашу схемку подмигивание там почти незаметное.


Попробуй всё и вся... может быть пол...

ЯНДЕКС Дата: 24.08.2009
ivan_fd Дата: Пн, 24.08.2009, 20:18  |                                                                                                                Сообщение # 12
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Спасибо. Да подмигивание почти не заметно, но...

Добавлено (24.08.2009, 20.18.54)
---------------------------------------------

Quote
лучше использовать драйвера LED работающие по шине нипример MC14499 или SAA1064

Где бы посмотреть пример работы с этими микросхемами?

demanik Дата: Пн, 24.08.2009, 20:28  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 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
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Даташит есть, спасибо. А MC14499?
demanik Дата: Пн, 24.08.2009, 21:13  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (ivan_fd)
А MC14499?

Там управление трехпроводное (ENABLE, DATA и CLOCK). Вся посылка передается последовательно 4цыфры по 4бита и 4бита запятые. Минус можно выводить только запрограмированные цыфры и символы, а в SAA1064 в передаваемых данных мы индивидуально указываем какие сегменты в какой цыфре засвечивать (тоесть можно произвольно рисовать любые символы) и есть возможность управлять яркостью.


Попробуй всё и вся... может быть пол...

Форум Picbasic.ru » Программирование МК » Proton PicBasic » 7 Segment Display и 18B20 (Подмигивает)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: