07.10.2018, 15:37
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Оказывается проект ATmega48P + SSD1306 (3).zip работает на реальном железе:
Видимо после увеличения таймингов заработал.
Кто будет использовать код, задержки там избыточны, лучше написать свою функцию задержки на основе количества
пропуска циклов и подобрать ориентируясь на осциллограф в Протеусе, а лучше аппаратный, если есть.
Видимо, глюк Протеуса, такое уже было с другим экраном https://kazus.ru/forums/showthread.php?p ... ost1218538
|
|
|
|
07.10.2018, 18:50
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Donker, Signalshik2 - таки код лучше просто как обычный .txt через управление вложениями вставить, на некоторые элементы даже обрамление в теги noparse не избавляет от искореженного отображения
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
11.10.2018, 12:19
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Начал писать вариант проекта с использованием уже аппаратной шины I2C (TWI), и столкнулся с проблемой:
https://radiokot.ru/forum/download/file.php?id=316085
монитор вдруг утерял способность нормально прижимать линию SDA к земле!
Почему так происходит, ногодрыгом ведь работало нормально?
Выкладываю весь проект:
https://radiokot.ru/forum/download/file.php?id=316086
Последний раз редактировалось Donker; 11.10.2018 в 12:21.
|
|
|
|
12.10.2018, 00:13
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Новая версия проекта c аппаратным I2C:
https://radiokot.ru/forum/download/file.php?id=316127
В Протеусе глючит так же как и версия с ногодрыгом.
В железе работает, но вывод цифр зависает в среднем после 10 циклов, скорее всего не получает сигнал ACK.
У кого какие идеи?
Кстати, дисплей заметно мерцает, на фото выше видно тёмную полосу, она движется заметно глазу с циклом около 30 гц.
|
|
|
|
12.10.2018, 11:02
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Ну я считаю, что если в железе работает, а в Протеусе - нет, то это уже хорошо, лишнее доказательство тому, что Протеус и модуляция вообще глючная вещь.
А зачем к проводу SDA подключены 2 проводка D1 и D2 в Протеусе? Может быть в этом косяк и сигналы замыкают друг друга?
|
|
|
|
12.10.2018, 12:32
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Это подтягивающие резисторы, подтягивают линии I2Cк плюсу питания, все остальные устройства на шине могут только замыкать линии на землю, либо отпускать и слушать какой там уровень, без них высокого уровня на шине не будет, в моём случае, резисторы впаяны продавцом на плате экрана и питаются от +3,3v.
|
|
|
|
13.10.2018, 13:48
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Ну Вы посмотрите, может быть на +3,3 (В) другие резисторы нужны. R1 = R2 = 4,7 (кОм) - это для питания +5 (В), по-моему.
Вот еще про выбор резистора:
https://kazus.ru/forums/showthread.php?t=11998
Там нужно такие резисторы ставить, чтобы нарастающий фронт не был сильно затянут. Я на каком-то сайте видел много осциллограмм, там на 1,5 (кОм) еще круче передний край становится. Так что экспериментируйте. Помните о безопасности, чтобы ничего не спалить.
Также может быть ошибка в софте - смотрите все внимательно.
Последний раз редактировалось Signalshik2; 13.10.2018 в 14:22.
Причина: Добавил фразу.
|
|
|
|
13.10.2018, 14:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,672
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Цитата:
|
Я на каком-то сайте видел много осциллограмм, там на 1,5 (кОм) еще круче передний край становится.
|
Для высоких скоростей сопротивление конечно нужно меньше. Но нужно и на максимальный ток транзисторов с ОК смотреть. Обычно на сотни килогерц вполне хватает 4.7 кОм. Но если до мегагерц гнать - резисторы нужно уменьшать.Но с учетом нагрузочных параметров чипов на линии.
Я не очень давно на экранчик с I2C интерфейсом 2 мегагерца гнал. Подтяжка была 1 кОм. И работало. Грелось правда сильно. А потому убрал до "даташитовских" значений. Проверял для эксперимента ...
|
|
|
|
13.10.2018, 18:44
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Больше 10 лет работаю с AVR-ками и никаких "костылей" при работе с портами не наблюдаю, у Вас причина скорее в глючности софта который командует этими портами для работы с дисплеем, это в случае ногодрыга, в случае аппаратного TWI к ним могут добавиться не совсем верное конфигурирование этого блока , ну и третье , что кстати может слагаться с вышеперечисленными двумя одновременно - это не совсем кондиционный контроллер самого индикатора , так что надо бы выяснять для четкости обнаружения причин - отдельно сам индикатор попробовать устойчивость вывода инфы на экран от какого-то заведомо исправного железа, если всё норм с индикатором то потом подключать его к AVR-ке и вылавливать оставшиеся глюки софта .. . А в самую первую очередь проконтролировать сами тайминги I2C от AVR-ки в индикатор, и правильную по датачету очерёдность сигналов в индикатор, а иначе сразу за один присест устранить все глюки обясняя их все одной только какой-то причиной -- так не получится ...
P.S. И кстати сказанное относится также и к любому другому дисплею а не только к SSD1306
__________________
Короче асма кода нет !
Последний раз редактировалось pinco; 13.10.2018 в 18:58.
|
|
|
|
13.10.2018, 19:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,672
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Это верно.
Во первых бывает "по факту" не тот контроллер. Продавец написал одно, но по факту - другое.
Во вторых - чехарда с инициализацией. Бывает найдешь в инете 4-5 вариантов. И заработает хорошо если одна.
Во третьих - простенький логический анализатор - это очень важно. Стоит копейки, решает кучу проблем.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:16.
|
|