SECU-64 - порт SECU-3 на mega-64(128) (SECU-3 --> ATmega128)
Moderator: STC
-
- LQFP144 - On Top Of The Game
- Posts: 330
- Joined: Thu Dec 09, 2010 12:55 pm
- Location: Kyiv, Ukraine
Re: SECU-64 - порт secu-3 на mega-64(128)
Судя по маркировке индикатора кирилица там должна быть - я скачал на него доку. Загружаемыми шрифтами я не занимался, но знаю, что такая возможность в индикаторах есть. Они по-моему размещаются в другой области памяти и соответственно к ним идёт доступ по другим адресам. Нужно ещё обеспечить запись в индикатор, чего я не предусматривал в схеме. Нужно будт её дорабатывать. Как - пока не знаю. Для начала можно заменить в тексте кирилицу на латиницу и получить нормальный вывод в принципе, а потом разбираться дальше.
-
- LQFP144 - On Top Of The Game
- Posts: 330
- Joined: Thu Dec 09, 2010 12:55 pm
- Location: Kyiv, Ukraine
Re: SECU-64 - порт secu-3 на mega-64(128)
Решил проблему с менеджером - теперь всё работает. Исходники в репозитории обновил.
-
- QFP80 - Contributor
- Posts: 46
- Joined: Fri Mar 11, 2011 2:40 pm
Re: SECU-64 - порт secu-3 на mega-64(128)
Serj_K какой у тебя дисплей стоит. У меня с моим дисплеем ничего не получается. Я перепроверил весь монтаж, там сто процентов все нормально. По даташиту посмотрел, в моем дисплее есть кириллица, но почему когда я его подключаю к LPT эта кириллица не отображается, хотя на другом дисплее отображается корректно. Экспериментировал с разными вариантами прошивки. Если выбрать 20x4, то при включении появляются квадраты в первой и третей строке, потом зажигаются квадраты во всех четырех строках и дальше тишина, регулировка контраста ничего не дает (или ничего нет, или ярко светятся во всех разрядах квадраты). Если выбрать 16x4, то при включении появляются квадраты в первой и третей строке, а потом (когда как) или все четыре строки с цифрами и буквами или первая и третья, причем буквы и цифры пляшут. В случаи четырех строк некоторые цифры изменяются в соответствии с показаниями ДАД, УЗО и напряжения. Еще один интересный момент, случайно наткнулся, если пальцем тронут выводы дисплея в районе 4, 5, 6 то в случаи 20x4 снова появляются две строки с непонятными символами, которые постоянно прыгают, а в случаи с 16x4 четыре строки переключаются в две с непонятными символами.
-
- LQFP144 - On Top Of The Game
- Posts: 330
- Joined: Thu Dec 09, 2010 12:55 pm
- Location: Kyiv, Ukraine
Re: SECU-64 - порт secu-3 на mega-64(128)
У меня Winstar WH1604A-YGH-CTV. Я подключал и SC1604ASEB и какой-то 20х2. С ними проблем не было. Какой преобразователь интерфейса I2C? Попробуй найти любой другой индикатор для проверки. Если монтаж правильный, то может индикатор битый.
-
- QFP80 - Contributor
- Posts: 46
- Joined: Fri Mar 11, 2011 2:40 pm
Re: SECU-64 - порт secu-3 на mega-64(128)
Интерфейс PCF8574 SMD, он воде бы работает нормально, так как светодиоды отрабатывают ошибки коректно. Я сразу, и подумал что с индикатором что то не так, но при подключении к LPT порту компьютера он работает нормально, за исключением кириллицы. Один раз сегодня вечером он у меня включился на долю секунды нормально, я успел заметить надпись УЗО и название рабочей характеристики.
-
- LQFP144 - On Top Of The Game
- Posts: 330
- Joined: Thu Dec 09, 2010 12:55 pm
- Location: Kyiv, Ukraine
Re: SECU-64 - порт secu-3 на mega-64(128)
К LPT как подключаеш - по 4-битной или по 8-битной схеме и чем проверяешь? Может он не переходит на 4-битный обмен? Завтра посмотрю на работе детальное описание алгоритма инициализации 4-битного обмена с временнЫми параметрами, может нужно задержку вставить дополнительную?
Попробуй на LPT подключить по 8-битной схеме и проверить кирилицу.
Попробуй на LPT подключить по 8-битной схеме и проверить кирилицу.
-
- QFP80 - Contributor
- Posts: 46
- Joined: Fri Mar 11, 2011 2:40 pm
Re: SECU-64 - порт secu-3 на mega-64(128)
К LPT я подключаю по 8-битной схеме, с 4-битной схемой я не нашел программ для управления, все для 8-биного подключения. У меня есть еще Wintek WM-C1602Q-1YLYb, при подключении к LPT все работает, в том числе и кириллица, а при подключении к блоку индикации светятся одни квадраты.
-
- LQFP144 - On Top Of The Game
- Posts: 330
- Joined: Thu Dec 09, 2010 12:55 pm
- Location: Kyiv, Ukraine
Re: SECU-64 - порт secu-3 на mega-64(128)
Для поиска причины можно сделать 2 вещи:
1) просто уменьшить скорость интерфейса, так как для некоторых индикаторов при инициализации должны быть задержки не менее 100мкс, которые я получаю скоростью обмена. В файле i2c.c заменить значение I2C_SPEED на I2C_50kbs.
2) добавить дополнительную команду инициализации 8-битного режима в lcd.c/LCD_init()
i2c_buffer[i2c_io_size++] = LCD_BUS8 | LCD_E;
i2c_buffer[i2c_io_size++] = LCD_BUS8 | I2C_FREE3;
3) добавить дополнительную команду инициализации 4-битного режима между строками
LCD_command4(LCD_BUS4);
или, может быть, две строки:
i2c_buffer[i2c_io_size++] = LCD_BUS4 | LCD_E;
i2c_buffer[i2c_io_size++] = LCD_BUS4 | I2C_FREE3;
Желательно проводить эксперименты по очереди, чтобы определить причину.
Если подключить индикатор 20х2 паралельно 20х4, то на нём просто не будут отображаться 2 строки, но можно будет сравнить их поведение.
Вообще алгоритм, который я вычитал следующий:
Включение - пауза более 15мс - команда 8-бит - пауза более 4,1мс - команда 8-бит - пауза более 100мкс - команда 8-бит - команда 4-бит в 8-битном режиме - команда 4-бит в 4-битном режиме.
Далее остальная инициализация и работа.
Я для большей надёжности реализую его в полном объёме, но скорость менять не буду.
1) просто уменьшить скорость интерфейса, так как для некоторых индикаторов при инициализации должны быть задержки не менее 100мкс, которые я получаю скоростью обмена. В файле i2c.c заменить значение I2C_SPEED на I2C_50kbs.
2) добавить дополнительную команду инициализации 8-битного режима в lcd.c/LCD_init()
i2c_buffer[i2c_io_size++] = LCD_BUS8 | LCD_E;
i2c_buffer[i2c_io_size++] = LCD_BUS8 | I2C_FREE3;
3) добавить дополнительную команду инициализации 4-битного режима между строками
вставить строкуi2c_buffer[i2c_io_size++] = LCD_BUS4 | I2C_FREE3; // LCD_E = -\_, E= _/-\_
LCD_command4(LCD_FUN4);
LCD_command4(LCD_BUS4);
или, может быть, две строки:
i2c_buffer[i2c_io_size++] = LCD_BUS4 | LCD_E;
i2c_buffer[i2c_io_size++] = LCD_BUS4 | I2C_FREE3;
Желательно проводить эксперименты по очереди, чтобы определить причину.
Если подключить индикатор 20х2 паралельно 20х4, то на нём просто не будут отображаться 2 строки, но можно будет сравнить их поведение.
Вообще алгоритм, который я вычитал следующий:
Включение - пауза более 15мс - команда 8-бит - пауза более 4,1мс - команда 8-бит - пауза более 100мкс - команда 8-бит - команда 4-бит в 8-битном режиме - команда 4-бит в 4-битном режиме.
Далее остальная инициализация и работа.
Я для большей надёжности реализую его в полном объёме, но скорость менять не буду.
-
- LQFP144 - On Top Of The Game
- Posts: 330
- Joined: Thu Dec 09, 2010 12:55 pm
- Location: Kyiv, Ukraine
Re: SECU-64 - порт secu-3 на mega-64(128)
Внимательно проанализировал то, что есть и то, что должно быть - добавил одну строчку инициализации 4-битного режима. Пока в репозиторий не записывал. Для проверки прилагаю файл прошивки с уменьшенной скоростью обмена - 75кбит/с и вышеуказанной модификацией под кварц на 16МГц.
- Attachments
-
- s-64_lcd-75kbps.rar
- (45.95 KiB) Downloaded 404 times
-
- QFP80 - Contributor
- Posts: 46
- Joined: Fri Mar 11, 2011 2:40 pm
Re: SECU-64 - порт secu-3 на mega-64(128)
Завтра с утра проверю твою прошивку. Пробовал сделать то что ты рекомендовал.
1) Изменение скорости, разници никакой.
2) Не пробовал.
3) Пробовал оба варианта. При выборе 20X4 сначала две строки квадратов, а потом все четыре. Вроде бы как инициализация проходит нормально, а дальше тишина. При выборе 16X4 все те же непонятные символы.
P.S. Квадраты видно если играться с регулировкой контраста.
Пробовал сегодня три разных дисплея,правда все они 16X2 (по даташиту совместимые с HD44780), результат тот же, отображаются черти что. К стати пробовал подключать свой дисплей к другому компьютеру, там кириллица отображалась нормально, так что проблема была не в дисплее а в программе на компьютере.
Вот видео того что получается, там показаны разные варианты, извиняюсь за качество, видео с телефона.
1) Изменение скорости, разници никакой.
2) Не пробовал.
3) Пробовал оба варианта. При выборе 20X4 сначала две строки квадратов, а потом все четыре. Вроде бы как инициализация проходит нормально, а дальше тишина. При выборе 16X4 все те же непонятные символы.
P.S. Квадраты видно если играться с регулировкой контраста.
Пробовал сегодня три разных дисплея,правда все они 16X2 (по даташиту совместимые с HD44780), результат тот же, отображаются черти что. К стати пробовал подключать свой дисплей к другому компьютеру, там кириллица отображалась нормально, так что проблема была не в дисплее а в программе на компьютере.
Вот видео того что получается, там показаны разные варианты, извиняюсь за качество, видео с телефона.