Перейти к содержанию
    

1 час назад, jcxz сказал:

заменить осциллограф на простейший логический анализатор.

Да, вещь нужная. Да и стоит вроде недорого... Лишним он не будет, но в данном случае, думаю, он не подойдет. Тут лучше осциллограф. Еще лучше двухканальный.

Схему я запитывал от ноутбука. Помех по питанию схемы нет(ранее я показывал осциллограммы по питанию). Максимум что может быть это наводка на провода. Но я в этом не уверен.

Кстати, при статических показаниях на ЖКИ, засветки не активных сегментов почти невидно. И неактивные сегменты не мерцают. Наверное ошибка у меня программная. Т.к еле засвечиваются все неактивные сегменты, то наверное идет смещение сигнала на доли секунды на сегментных линиях относительно сигнала на общих линиях.

А может быть проблема вызвана нестабильностью внутреннего частотозадающего источника. Можно попробовать увеличить частоту работы МК(сейчас МК работает на частоте 2 МГц). Или попробовать увеличить крутизну фронтов на выводах МК подключенных к ЖКИ(сейчас максимальная скорость переключения выводов установлена также на 2 МГц).

Изменено пользователем Pjatruha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, Pjatruha сказал:

Кстати, при статических показаниях на ЖКИ, засветки не активных сегментов почти невидно. И неактивные сегменты не мерцают. Наверное ошибка у меня программная. Т.к еле засвечиваются все неактивные сегменты, то наверное идет смещение сигнала на доли секунды на сегментных линиях относительно сигнала на общих линиях.

Ну вот именно об этом я писал. :smile:  Именно в таком случае поможет лог.анализатор. А осциллограф тут почти бесполезен. Так как им вы не сможете захватить (чтобы позже внимательно проанализировать) сигнал за более-менее длительное время.

Например: Где-то (предположим) у вас идёт неверная времянка одних сигналов относительно других (фазовая ошибка одних сигналов относительно других). Которая очень редкая. Вот она как раз может давать и мерцание и небольшую паразитную засветку. Если этот процесс непериодический (что часто и бывает), то осциллографом Вы ничего не увидите. Зато лог.анализатором - запросто.

8 минут назад, Pjatruha сказал:

А может быть проблема вызвана нестабильностью внутреннего частотозадающего источника.

Каким образом? Ведь всё тактируется от него. А значит: какой бы ни была нестабильность - она будет во всех сигналах. Соответственно - не создаст ошибки одних сигналов относительно других.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо, я не достаточно доходчиво задал вопрос "спицыалисту" jczx - КАК лог.анализатор отображает промежуточный уровень напряжения для ЖКИ? 
Ну а осциллограф с большой памятью может захватить хоть 10 секунд непрерывно.

Что касается засветки неактивных сегментов, то тут ситуация как и со светодиодными индикаторами в динамической индикации - нужен так называемый dead-time при смене сигналов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 минуту назад, EdgeAligned сказал:

Видимо, я не достаточно доходчиво задал вопрос "спицыалисту" jczx - КАК лог.анализатор отображает промежуточный уровень напряжения для ЖКИ? 

Если вы не поняли с первого раза смысл написанного выше, то попробуйте перечитать ещё и ещё. Может с какого-то раза и дойдёт о чём там написано.

21 минуту назад, EdgeAligned сказал:

Ну а осциллограф с большой памятью может захватить хоть 10 секунд непрерывно.

Покажите нам - как именно задействовать эту "большую память" в том осциллографе, что у ТС? Просим! Всем интересно.  :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, EdgeAligned сказал:

нужен так называемый dead-time при смене сигналов.

Возможно я вас не понимаю, но dead-time'а быть не может, как мне кажется. Сегмент как раз-таки отключается если значение его сегментной линии совпадает со значением общей линии.  Иначе будет засветка. На 9 странице этого форума dimka76 выкладывал документацию на ЖКИ. Там ничего подобного нет. Да и в других источниках я такого не встречал. Может вы что-то другое имели ввиду, а я вас не понял?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мда, видимо, вы,  jcxz не очень то имеете опыт работы с лог.анализатором и ЖКИ с многоуровневыми напряжениями. 🙂 Там бывает и по 5 уровней напряжений, и даже больше. Обновите для себя эти познания, полистав эту тему и гуглопоиск.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно не одновременно, поскольку программа по битам двигает сигналы, а не записью в порт целиком.

А еще отдельной командов вход/выход бита.

upd  поглядел схему общие выводы на одном порту, а сегменты раскиданы, разом обновлять не получится.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, mitya1698 сказал:

Конечно не одновременно

Я вот тоже об этом думал. Пробовал найти информацию,как можно рассчитать время выполнения команды, но так и не нашел. Хочу попробовать увеличить скорость работы процессора. Если догадка верная, то засветка должна стать меньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скорость не очень поможет, а вот порядок дерганья выводов поменять можно попробовать.

Как сейчас происходит смена?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот именно про этот dead-time я и говорил. Сделать можно аналогично тому, как для светодиодных издикаторов делается - сначала выключаются все общие выводы, затем на выводах сегментов набирается нужная комбинация и затем включается нужная комбинация на общих сегментах. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.10.2023 в 19:25, Pjatruha сказал:

Пробовал найти информацию,как можно рассчитать время выполнения команды, но так и не нашел.

Я чаще всего измеряю с помощью вывода отдельного в начале процедуры взвожу вывод в конце роняю, и анализотором (осциллографом) измеряю длительность импульса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, mitya1698 сказал:

и анализотором (осциллографом) измеряю длительность импульса.

Похоже и Вы тоже:

45 минут назад, EdgeAligned сказал:

не очень то имеете опыт работы с лог.анализатором и ЖКИ с многоуровневыми напряжениями.

:biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, mitya1698 сказал:

Как сейчас происходит смена?

Код программы я выкладывал на 12 странице этого форума.

15 минут назад, mitya1698 сказал:

Я чаще всего измеряю с помощью вывода отдельного

Хорошая идея. Можно попробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Причем тут ЖКИ , я привел пример измерения длительности произвольной процедуры не прибегая к подсчетам. 

Часто для оценок использую такой метод. Например таймер взвел, для проверки, что не ошибся с настройками проверяю длительность анализатором.

    case 1:
   
   if (PC_DDR_bit.DDR3 == 1)    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< А в каком случае этот IF не выполнится?
     {
        PC_DDR_bit.DDR3 = 0; // Вход com D9
        PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен
     }
      
   PC_DDR_bit.DDR6 = 1; // Выход com D12   <<<<<<<<<<<<<<<<<<<   Перенести эту строчку в самый конец перед break
   PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе
   PC_CR1_bit.C16 = 1; // push-pull
      
     PA_ODR_bit.ODR1 = 1; // seg D6
     PA_ODR_bit.ODR2 = 1; // seg D7
     PA_ODR_bit.ODR3 = 1; // seg D8
     PC_ODR_bit.ODR7 = 1; // seg D13
     PD_ODR_bit.ODR2 = 1; // seg D14
     PD_ODR_bit.ODR6 = 1; // seg D5
     break;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.10.2023 в 20:14, mitya1698 сказал:
if (PC_DDR_bit.DDR3 == 1)    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< А в каком случае этот IF не выполнится?

В самом начале основной программы я объявляю все выводы МК, которые идут на выводы COM ЖКИ, как входы. Соответственно только в самый первый раз после старта МК программа зайдет в тело оператора.

int main (void) 
{    
   PC_DDR_bit.DDR3 = 0; // Вход com D9
   PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен
   PC_CR2_bit.C23 = 0; // Прерывая запрещены   
      
   PC_DDR_bit.DDR4 = 0; // Вход com D10
   PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен
   PC_CR2_bit.C24 = 0; // Прерывая запрещены 

В принципе, от этого условия можно отказаться и написать по аналогии с другими.

        PC_DDR_bit.DDR3 = 0; // Вход com D9
        PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен

Написал программу для работы ЖКИ с кнопками. Реализация кода немного отличается. Засветка неиспользуемых сегментов стала меньше. На камеру почти невидно, но глазом заметить еще можно. Посмотреть можно тут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...