|
TIC5234+Attiny2313, Алгоритм работы с дисплеем |
|
|
|
Jan 20 2011, 11:06
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-12-05
Пользователь №: 12 204

|
Есть небольшой проэктик под который заложил дисплей TIC5234 и Attiny2313. Начал разбиратся с дисплеем, накатал библиотеку. Всё скомпелировалось и работает но только библиотека работы с дисплеем занимает больше половины флеши Attiny2313, а задач ещё много. Может кто-то с ним работал и есть более компактная библиотека? P.S. У дисплея TIC5234 контроллер является обычным сдвиговым регистром на 49 бит. Загружаются биты последовательно начиная с 49-го. Дело в том что у него есть куча дополнительных сегментов которые мне использовать не нужно. А сегменты знакомест разбросаны как попало. Немогли бы Вы мне подсказать как тогда формировать пакет 49 бит для загрузки в дисплей в таком случае? Вот тут его мучают http://www.xdevs.com/e107_plugins/conte ... content.21 Вот его pdf http://www.trt.ru/products/tic/pdf/segment/TIC5234.PDF Заранее благодарю за помощь. вот пример библиотеки
Сообщение отредактировал sabrat - Jan 20 2011, 11:07
|
|
|
|
|
Jan 20 2011, 12:15
|
Частый гость
 
Группа: Участник
Сообщений: 181
Регистрация: 26-11-10
Пользователь №: 61 198

|
Цитата(sabrat @ Jan 20 2011, 13:06)  ...но только библиотека работы с дисплеем занимает больше половины флеши Attiny2313, а задач ещё много. Не удивительно, если для хранения 50 бит использовать 50 int'ов, а для кодирования используется вагон switch/case и присваиваний. Странно что вообще влезает. Для начала хотя бы сделайте битовый, а не целочисленный массив, правда вряд ли это кардинально поможет, надо искать в корне другой подход. Цитата(sabrat @ Jan 20 2011, 13:06)  Неправильная ссылка.
|
|
|
|
|
Jan 20 2011, 12:46
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 25-03-10
Из: Москва
Пользователь №: 56 197

|
Переписать (перепишу) на ассемблере. И оставшуюся программу - тоже :-).
|
|
|
|
|
Jan 20 2011, 12:50
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-12-05
Пользователь №: 12 204

|
Цитата(SergeyGrig @ Jan 20 2011, 15:46)  Переписать (перепишу) на ассемблере. И оставшуюся программу - тоже :-). На Сях никак?
|
|
|
|
|
Jan 20 2011, 13:01
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 25-03-10
Из: Москва
Пользователь №: 56 197

|
К сожалению (хотя и небольшому), но на Сях - я не пинг-понг. Зато все остальные - легко.
|
|
|
|
|
Jan 20 2011, 13:12
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-12-05
Пользователь №: 12 204

|
Цитата(SergeyGrig @ Jan 20 2011, 16:01)  К сожалению (хотя и небольшому), но на Сях - я не пинг-понг. Зато все остальные - легко. если можно то и на асме будет понятно алгоритм
|
|
|
|
|
Jan 21 2011, 16:46
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(sabrat @ Jan 20 2011, 16:12)  если можно то и на асме будет понятно алгоритм Делаем массив во числу загружаемых сегментов (там надо загрузить 80 битов, но, поскольку остальные нули, то 50 байтов хватит). В каждом элементе адрес бита в некоем "исходном буфере" (обычный битмап, организованный как удобнее, типа по байту на цифру с одинаковой расстановкой сегментов в битах, плюс байт на транспаранты). Адресация как удобнее, 4+4 либо 5+3 бита. При формировании очередного бита на вывод загружаем байт из таблицы, по нему проверяем "исходный" бит, копируем его значение на выходе, стробируем... Тут особо спешить некуда (при работе с этими индикаторами нужны заметные задержки, существенно больше, чем для самого драйвера ML1001). Думаю, идея понятна ?
|
|
|
|
|
Jan 21 2011, 21:45
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103

|
Цитата(PCBExp @ Jan 22 2011, 01:21)  [...] Первое что пришло на ум - сделать что-то типа "прозрачного" контроллера. Например, "наливаем" по RS232 16*32=512 восьмибитных символов в память какого нибудь AVR (если бит в 1 то соответствующий ему пиксел светится, если в 0 - не светится) . А потом с помощью этого AVR разворачиваем эту "точечную" картинку. От картинок динамичности не требуется. А если что и выдумают то при скорости порта 115200 и 16МГц у AVR вроде как все должно быть гладко и плавно. Но создается ощущение что изобретаю велосипед. Наверняка есть более красивое решение. Может даже и дисплеи есть готовые - подскажите что-нибудь люди добрые.... Большинство графических дисплеев с контроллером тормозные, порой очень сильно... Пример TIC32 и TIC218. Но тут больше I2C виноват несмотря на 400 кГц. Проявляется как прорисовка полного экрана за 1-2 секунды. С параллельной шиной чуть побыстрее, но тоже контроллер может сам по себе томозить(смотри время выполнения команд в даташите). Лучше если дисплей виден как память в адресном пространстве, тогда все зависит только от процесора.
|
|
|
|
|
Jan 21 2011, 22:34
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(rezident @ Jan 22 2011, 01:03)  Не передать, а отрисовать (отобразить). Laptop прав (хотя про 1-2 с немного преувеличил, я бы оценил отрисовку экрана 128*64 в 0,5-0,7с), TICи с интерфейсом I2C довольно тормозные дисплеи. Даже при комнатной температуре, не говоря уже о минусе. Да, но сказано было "виноват I2C". А интерфейс-то чем провинился, если стекляшка тормозная ? Буфер загружается за десятки mS, а уж сколько времени займет собственно переориентация кристаллов - вопрос только к химии. При изменении 4 раза в секунду качество более-менее приемлемое (хотя некие цветовые артефакты на бело-синих индикаторах наблюдаются). На сайте "Гаммы" есть ролик с анимированной графикой на таком модуле - там десятки Hz. Тоже вполне пристойно. При комнатной температуре, по крайней мере.
|
|
|
|
|
Jan 22 2011, 00:26
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103

|
Цитата(rx3apf @ Jan 22 2011, 01:56)  Сколько-сколько ? Это что, передать 640 байтов на i2c 400 kHz занимает 1-2 секунды ? Это на чем писано, на интерпретируемом васике, что ли ? Потому как чисто передача из буфера займет меньше 15 mS...Сама стекляшка на порядок тормознее, так что и такой скорости не требуется. Там несколько больше пересылается... TIC218 133*64, т.е. у него строка посылается как 2, итого 9+128+9+5 = 151 байт на строку, 151*8 = 1208 байт на заполнение экрана. Это не считая старт-стопов и рестартов I2C. Если заниматься только выводом, то больше 50 миллисекунд не должно получаться. Так что может зря я на I2C погнал  Но между передачей байтов контроллер еще и другие задачи успевает сделать. Понятное дело что тут еще немного набегает. Но жаба давит 360 тактов простаивать ожидая отправки следующего байта и 54360 тактов на всю строку. С SPI быстрее бы вышло. На плате стоит Мега16 и конечно строки уходят раздельно, так как буфер маленький. Надо будет светодиодом моргнуть при записи и посмотреть сколько идет запись и через сколько дорисует. Завтра проверю. Визуально стирание экрана после включения проявляется как исчезновение точек на экране сверху-вниз, т.е. горизонтального заполнения строки не видно. Длится это около секунды. Шрифты рисуются конечно медленнее. Если честно, не подозревал что сама стекляшка так может тормозить. Вроде уже везде даже мигающие курсоры рисуют, а тут на тебе.
|
|
|
|
|
Jan 22 2011, 12:24
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(PCBExp @ Jan 22 2011, 14:40)  Собственно весь мой вопров в протоколе. <кусь> опрашивать кнопки и выводить на экран текстовое меню и графики. То что это мини TERMINAL понятно, но как графику рисовать? Она должна отображать физические величины вроде температуры и давления, которые псевдографикой отобразить не получится. Думается так. Берете модбас. Кнопки лучше опрашивать не прозрачно, чтением очереди низкоуровневых событий, а с помощью некоторой регистровой модели, туда впихнуть и удержание кнопки, и нажато/отпущено, и код клавиши, и задавать typematic rate для автоповтора - в общем, эдакий сферический конь "клавиатура". Авр создает при нажатии/отпускании параллельно все мыслимые события, хост пользуется только тем, что нужно. Далее, в пространстве регистров чтения записи создаете область для ввода/вывода текста. Для графики - лучше покурить, как устроены VCL компоненты типа рисователей диаграмм, некоторую систематизацию входных данных сделать - то ли это пары точек, то ли коэффициенты аппроксимирующих полиномов - все фичи тоже распределить по регистровой модели.
|
|
|
|
|
Jan 24 2011, 15:48
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-12-05
Пользователь №: 12 204

|
Неужели ни у кого нет наработок с дисплеем TIC5234?
|
|
|
|
|
Jan 24 2011, 16:23
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-12-05
Пользователь №: 12 204

|
Цитата(rx3apf @ Jan 24 2011, 18:55)  Ну ведь рассказал же, как компактно сделать перестановку битов, чего ж еще ? Индикатор из малопопулярных (у основной массы остальных гаммовских индикаторов сегменты расположены более "системно"). Спасибо, что то я не узрел. Сейчас попробую.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|