Pjatruha 10 9 октября, 2023 Опубликовано 9 октября, 2023 (изменено) · Жалоба 1 час назад, jcxz сказал: заменить осциллограф на простейший логический анализатор. Да, вещь нужная. Да и стоит вроде недорого... Лишним он не будет, но в данном случае, думаю, он не подойдет. Тут лучше осциллограф. Еще лучше двухканальный. Схему я запитывал от ноутбука. Помех по питанию схемы нет(ранее я показывал осциллограммы по питанию). Максимум что может быть это наводка на провода. Но я в этом не уверен. Кстати, при статических показаниях на ЖКИ, засветки не активных сегментов почти невидно. И неактивные сегменты не мерцают. Наверное ошибка у меня программная. Т.к еле засвечиваются все неактивные сегменты, то наверное идет смещение сигнала на доли секунды на сегментных линиях относительно сигнала на общих линиях. А может быть проблема вызвана нестабильностью внутреннего частотозадающего источника. Можно попробовать увеличить частоту работы МК(сейчас МК работает на частоте 2 МГц). Или попробовать увеличить крутизну фронтов на выводах МК подключенных к ЖКИ(сейчас максимальная скорость переключения выводов установлена также на 2 МГц). Изменено 9 октября, 2023 пользователем Pjatruha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 214 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба 8 минут назад, Pjatruha сказал: Кстати, при статических показаниях на ЖКИ, засветки не активных сегментов почти невидно. И неактивные сегменты не мерцают. Наверное ошибка у меня программная. Т.к еле засвечиваются все неактивные сегменты, то наверное идет смещение сигнала на доли секунды на сегментных линиях относительно сигнала на общих линиях. Ну вот именно об этом я писал. Именно в таком случае поможет лог.анализатор. А осциллограф тут почти бесполезен. Так как им вы не сможете захватить (чтобы позже внимательно проанализировать) сигнал за более-менее длительное время. Например: Где-то (предположим) у вас идёт неверная времянка одних сигналов относительно других (фазовая ошибка одних сигналов относительно других). Которая очень редкая. Вот она как раз может давать и мерцание и небольшую паразитную засветку. Если этот процесс непериодический (что часто и бывает), то осциллографом Вы ничего не увидите. Зато лог.анализатором - запросто. 8 минут назад, Pjatruha сказал: А может быть проблема вызвана нестабильностью внутреннего частотозадающего источника. Каким образом? Ведь всё тактируется от него. А значит: какой бы ни была нестабильность - она будет во всех сигналах. Соответственно - не создаст ошибки одних сигналов относительно других. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 70 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба Видимо, я не достаточно доходчиво задал вопрос "спицыалисту" jczx - КАК лог.анализатор отображает промежуточный уровень напряжения для ЖКИ? Ну а осциллограф с большой памятью может захватить хоть 10 секунд непрерывно. Что касается засветки неактивных сегментов, то тут ситуация как и со светодиодными индикаторами в динамической индикации - нужен так называемый dead-time при смене сигналов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 214 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба 21 минуту назад, EdgeAligned сказал: Видимо, я не достаточно доходчиво задал вопрос "спицыалисту" jczx - КАК лог.анализатор отображает промежуточный уровень напряжения для ЖКИ? Если вы не поняли с первого раза смысл написанного выше, то попробуйте перечитать ещё и ещё. Может с какого-то раза и дойдёт о чём там написано. 21 минуту назад, EdgeAligned сказал: Ну а осциллограф с большой памятью может захватить хоть 10 секунд непрерывно. Покажите нам - как именно задействовать эту "большую память" в том осциллографе, что у ТС? Просим! Всем интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба 1 час назад, EdgeAligned сказал: нужен так называемый dead-time при смене сигналов. Возможно я вас не понимаю, но dead-time'а быть не может, как мне кажется. Сегмент как раз-таки отключается если значение его сегментной линии совпадает со значением общей линии. Иначе будет засветка. На 9 странице этого форума dimka76 выкладывал документацию на ЖКИ. Там ничего подобного нет. Да и в других источниках я такого не встречал. Может вы что-то другое имели ввиду, а я вас не понял? Опять-таки, форма и частота сигналов в моей прошивке совпадает с формой и частотой сигналов в прошивке паяльника. Поэтому я склоняюсь к тому, что сигналы на сегментных линиях отстают от сигналов на общих линиях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 70 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба Мда, видимо, вы, jcxz не очень то имеете опыт работы с лог.анализатором и ЖКИ с многоуровневыми напряжениями. 🙂 Там бывает и по 5 уровней напряжений, и даже больше. Обновите для себя эти познания, полистав эту тему и гуглопоиск. Pjatruha, я имел ввиду, что возможно, выходы у вас переключаются не одновременно, а поочередно с некоторым, пусть и маленьким интервалом времени, и возможно, этого уже хватает для слабой подсветки неактивных сегментов. Такой эффект встречается при динамич.индикации в светодиодных индикаторах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба Конечно не одновременно, поскольку программа по битам двигает сигналы, а не записью в порт целиком. А еще отдельной командов вход/выход бита. upd поглядел схему общие выводы на одном порту, а сегменты раскиданы, разом обновлять не получится. Я думаю при переключении надо первым делом переводить на вход включенный общий вывод записью в регистр направления, таким образом будет пол напряжения на вхех общих, и все погаснет, потом записать все нужные выходы, и потом одной командой в порт переключить нужный общий на выход. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба 1 минуту назад, mitya1698 сказал: Конечно не одновременно Я вот тоже об этом думал. Пробовал найти информацию,как можно рассчитать время выполнения команды, но так и не нашел. Хочу попробовать увеличить скорость работы процессора. Если догадка верная, то засветка должна стать меньше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба скорость не очень поможет, а вот порядок дерганья выводов поменять можно попробовать. Как сейчас происходит смена? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 70 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба Вот именно про этот dead-time я и говорил. Сделать можно аналогично тому, как для светодиодных издикаторов делается - сначала выключаются все общие выводы, затем на выводах сегментов набирается нужная комбинация и затем включается нужная комбинация на общих сегментах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба В 09.10.2023 в 19:25, Pjatruha сказал: Пробовал найти информацию,как можно рассчитать время выполнения команды, но так и не нашел. Я чаще всего измеряю с помощью вывода отдельного в начале процедуры взвожу вывод в конце роняю, и анализотором (осциллографом) измеряю длительность импульса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 214 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба 1 минуту назад, mitya1698 сказал: и анализотором (осциллографом) измеряю длительность импульса. Похоже и Вы тоже: 45 минут назад, EdgeAligned сказал: не очень то имеете опыт работы с лог.анализатором и ЖКИ с многоуровневыми напряжениями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба 20 минут назад, mitya1698 сказал: Как сейчас происходит смена? Код программы я выкладывал на 12 странице этого форума. 15 минут назад, mitya1698 сказал: Я чаще всего измеряю с помощью вывода отдельного Хорошая идея. Можно попробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 9 октября, 2023 Опубликовано 9 октября, 2023 · Жалоба Причем тут ЖКИ , я привел пример измерения длительности произвольной процедуры не прибегая к подсчетам. Часто для оценок использую такой метод. Например таймер взвел, для проверки, что не ошибся с настройками проверяю длительность анализатором. 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 11 октября, 2023 Опубликовано 11 октября, 2023 · Жалоба В 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; // Подтягивающий резистор отключен Написал программу для работы ЖКИ с кнопками. Реализация кода немного отличается. Засветка неиспользуемых сегментов стала меньше. На камеру почти невидно, но глазом заметить еще можно. Посмотреть можно тут Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться