_sR_ 0 27 февраля, 2007 Опубликовано 27 февраля, 2007 · Жалоба удалось запустить свой код програмного SPI отличие состояло в функции вывода слова по SPI зацените код из исходника satellite-plus void sendCMD( unsigned short word ) { rs=1; cs=0; sclk=0;if (word & 32768) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 16384) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 8192) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 4096) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 2048) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 1024) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 512) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 256) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 128) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 64) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 32) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 16) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 8) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 4) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 2) sdata=1;else sdata=0;sclk=1; sclk=0;if (word & 1) sdata=1;else sdata=0;sclk=1; cs=1; } а теперь мой вариант void s65_driver_send_word( unsigned short word ) { rs=1; cs=0; unsigned short mask = 0x8000; for( unsigned char bit_counter=0; bit_counter<16; bit_counter++ ) { sclk = 0; // __no_operation(); if( word & mask ) { sdata = 1; } else { sdata = 0; } sclk = 1; mask >>= 1; // __no_operation(); } cs=1; } т.е. в первом варианте этот цикл просто развернут обнаружился такой прикол если раскоментировать одну из строчек (__no_operation()), то все перестанет работать если раскоментировать обе - работает такое ощущение, что эта зараза контролирует скважность CLK но вот зачем - загадка... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nanobyte 0 27 февраля, 2007 Опубликовано 27 февраля, 2007 · Жалоба ... ЗАРАБОТАЛО! Мои поздравления !!! Таки вы его победили. ...То есть при частоте SCLK 10 Мгц? Или даже 5 Мгц? У меня частота SCLK 12 Мгц, и при перегибе шлейфа (длиной 10 см) дисплей перестаёт реагировать на сигналы, так как искажения формы сигнала CLK (да и других сигналов) становятся велики. ... Частота SCK была 10 МГц, шлейф я не перегибал. На осциллографе все сигналы нормальные, без завалов. Пробовал я и низкие частоты SPI, всё работает. По поводу задержек. Переписал я инициализацию на ASM, задержки варьировал в широких пределах, ничего не изменилось, норма. Может, L2F50xx более толерантный, нежели LS020? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 27 февраля, 2007 Опубликовано 27 февраля, 2007 · Жалоба если раскоментировать одну из строчек (__no_operation()), то все перестанет работать если раскоментировать обе - работает такое ощущение, что эта зараза контролирует скважность CLK но вот зачем - загадка... Вот и прекрасно. Я же говорил, что всё должно быть "красиво" и ровно, а не бог весть как :) Успехов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
011119xx 0 27 февраля, 2007 Опубликовано 27 февраля, 2007 · Жалоба 2 sonycman И компрессию не использовал - двухцветным шрифтам это не надо. Вот это мне не понятно. 2 цвета это цвет букв и фон? Или 2 цвета букв и фон? И что такое padding кто знает? А кто знает как заставить Хагеновский конвертер шрифтов делать шрифт с компрессией? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 27 февраля, 2007 Опубликовано 27 февраля, 2007 · Жалоба 2 sonycman И компрессию не использовал - двухцветным шрифтам это не надо. Вот это мне не понятно. 2 цвета это цвет букв и фон? Или 2 цвета букв и фон? И что такое padding кто знает? А кто знает как заставить Хагеновский конвертер шрифтов делать шрифт с компрессией? Да, двухцветным - я имел ввиду монохромные шрифты - 1 bit per pixel. Просто выразился не правильно :) Теперь насчёт Padding (как это понял я): Структура сжатого шрифта у Хагена: struct _FONT_ { uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; uint8_t font_Width_in_Pixel_for_fixed_drawing; uint8_t font_Height_in_Pixel_for_all_Characters; uint8_t font_Bits_per_Pixels; uint8_t font_First_Char; uint8_t font_Last_Char; uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; uint8_t font_Byte_Padding; uint8_t font_RLE_Table[3]; uint8_t font_Char_Size_in_Bytes[font_Last_Char - font_First_Char +1]; uint8_t font_data[]; } Как видно, font_Char_Size_in_Bytes[] имеет размер 8 бит, то есть размер (в байтах) каждого символа не может превышать 256 байт. Это может привести к проблеме, если используется шрифт большого размера, у которого символ (даже сжатый) "весит" больше 256 байт. Это решается с помощью Padding. Вычисление размера символа сводится к: font_Char_Size_in_Bytes[x] * Padding. То есть, если padding=2, то символ может иметь размер до 512 байт и т. д. Честно говоря, я не использовал пока сжатые шрифты, так как для монохромных шрифтов небольшого размера компрессия RLE у Хагена неэффективна и приводит к увеличению исходного размера, а не к уменьшению. Видел два варианта редактора шрифтов Хагена: старый - автоматически принимает решение, производить компрессию, или нет; и новый (http://www.mikrocontroller.net/attachment/20837/FontEditor_BitmapConverter.zip) - там добавлен чекбокс для принудительной активации компрессора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 27 февраля, 2007 Опубликовано 27 февраля, 2007 · Жалоба По поводу задержек. Переписал я инициализацию на ASM, задержки варьировал в широких пределах, ничего не изменилось, норма. Может, L2F50xx более толерантный, нежели LS020? Наверное, дисплеи, всё-же, разные. Стартовая последовательность для L2F50: 6.4 RECOMMENDED SEQUENCE -1) * turn on system power (VDDI,VDDL)) -2) * system reset - XRES="L") -3) (execute following commands) * DISCTL * GCP64 * GCP16 * CASET * PASET * ASCSET (P1=0d, P2=175d, P3=175d, P4=3d) * SCSTART (P1=0d) * DATCTL and other commands to be changed -4) * execute SLPOUT command after more than 100us (TBD) from system reset -5) * wait around 1ms (TBD) -6) * transfer display data to the display data RAM RAMWR (command + required parameters) -7) * execute DISON command after over 80ms (TBD) from SLPOUT Интересно, Display On выполняется в последнюю очередь, после полной инициализации контроллера и GRAM. Значит ли это, что есть возможность избежать появления на экране "цветного мусора" сразу после включения? ЗЫ: Блин, по-моему, надо изменить название темы на AVR и Siemens S65, так как про M55 давно уже никто слова не сказал :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
011119xx 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба В каких-то немецких исходниках видел команду на выключение LS020 типа 0x8000. Но у меня ни какого эффекта не имела. Кто что знает про это? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба В каких-то немецких исходниках видел команду на выключение LS020 типа 0x8000. Но у меня ни какого эффекта не имела. Кто что знает про это? Меня, честно говоря, меньше всего заботит выключение дисплея. Обрубил ему питание, да и всё Ничего с ним не случится. А сдохнет - туда ему и дорога. Больше не буду связываться с девайсами без даташитов :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viael 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба В каких-то немецких исходниках видел команду на выключение LS020 типа 0x8000. Но у меня ни какого эффекта не имела. Кто что знает про это? Меня, честно говоря, меньше всего заботит выключение дисплея. Обрубил ему питание, да и всё Ничего с ним не случится. А сдохнет - туда ему и дорога. Больше не буду связываться с девайсами без даташитов :( А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет? Сколько FPS на нем можно получить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет? Сколько FPS на нем можно получить? Это всё зависит от частоты SPI, по которому вы будете передавать данные. На частоте, близкой к максимальной - 12 Мгц - никакого "мельтешения" нет, есть только что-то типа "фликера", так как отсутствует вертикальная синхронизация. При такой частоте получается около 31 полного (176 на 132) кадра в секунду, но это чистая передача, без учёта времени на формирование картинки. ЗЫ: ИМХО, для осциллографа можно найти дисплеи "полегче" - с меньшим кол-вом цветов, чтобы не тратить кучу времени на передачу 16-битных слов... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viael 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет? Сколько FPS на нем можно получить? Это всё зависит от частоты SPI, по которому вы будете передавать данные. На частоте, близкой к максимальной - 12 Мгц - никакого "мельтешения" нет, есть только что-то типа "фликера", так как отсутствует вертикальная синхронизация. При такой частоте получается около 31 полного (176 на 132) кадра в секунду, но это чистая передача, без учёта времени на формирование картинки. ЗЫ: ИМХО, для осциллографа можно найти дисплеи "полегче" - с меньшим кол-вом цветов, чтобы не тратить кучу времени на передачу 16-битных слов... Полегче в плане цены наврядли, а у меня это пунктик №1. Еще вопрсы: Какая максимальная частота SPI(у дисплея)? Почему вы не использовали модуль SPI+DMA(имеется в виду SAM7)? Дисплей оригинальный или лиценция( говорят что те что по лицензии погано показуют -"мутные")? Конкретно у вас какой контроллер(LS020.....)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nanobyte 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба ... А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет? ... Прорисовка как таковая не видна совсем, только когда сильно меняется фон всего изображения. При выводе осциллограмм (сгенерированных линий) изображение нормальное. В момент вывода по SPI я не заметил никакого срыва развёртки. Если линии выводятся в разные места, то это смотрится как мельтешение на обычном осциллографе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viael 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба ... А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет? ... Прорисовка как таковая не видна совсем, только когда сильно меняется фон всего изображения. При выводе осциллограмм (сгенерированных линий) изображение нормальное. В момент вывода по SPI я не заметил никакого срыва развёртки. Если линии выводятся в разные места, то это смотрится как мельтешение на обычном осциллографе. Надежда имеется Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба Полегче в плане цены наврядли, а у меня это пунктик №1. Еще вопрсы: 1. Какая максимальная частота SPI(у дисплея)? 2. Почему вы не использовали модуль SPI+DMA(имеется в виду SAM7)? 3. Дисплей оригинальный или лиценция( говорят что те что по лицензии погано показуют -"мутные")? Конкретно у вас какой контроллер(LS020.....)? 1. По даташиту - 13 Mbit/s, то есть 13 Мгц. Где-то писали, что работает до 16, но не проверено. 2. А почему вы так решили? :) Действительно, пока не использовал. За ненадобностью. Макс. скорости можно достичь и без DMA. 3. А чёрт его знает. У меня LS020 (конкретно - LS0208UD06). Не нравятся пока только две вещи - невозможность кадровой синхронизации и слегка светловатые цвета. Всё это, возможно, решается, но только при наличии полной документации. А чёткость картинки превосходная, если вы это имели ввиду под словом "мутные". :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viael 0 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба Полегче в плане цены наврядли, а у меня это пунктик №1. Еще вопрсы: 1. Какая максимальная частота SPI(у дисплея)? 2. Почему вы не использовали модуль SPI+DMA(имеется в виду SAM7)? 3. Дисплей оригинальный или лиценция( говорят что те что по лицензии погано показуют -"мутные")? Конкретно у вас какой контроллер(LS020.....)? 1. По даташиту - 13 Mbit/s, то есть 13 Мгц. Где-то писали, что работает до 16, но не проверено. 2. А почему вы так решили? :) Действительно, пока не использовал. За ненадобностью. Макс. скорости можно достичь и без DMA. 3. А чёрт его знает. У меня LS020 (конкретно - LS0208UD06). Не нравятся пока только две вещи - невозможность кадровой синхронизации и слегка светловатые цвета. Всё это, возможно, решается, но только при наличии полной документации. А чёткость картинки превосходная, если вы это имели ввиду под словом "мутные". :) :cheers: thank Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться