Перейти к содержанию
    

удалось запустить свой код програмного 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

но вот зачем - загадка...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... ЗАРАБОТАЛО!

Мои поздравления !!! Таки вы его победили. :biggrin:

 

...То есть при частоте SCLK 10 Мгц? Или даже 5 Мгц?

У меня частота SCLK 12 Мгц, и при перегибе шлейфа (длиной 10 см) дисплей перестаёт реагировать на сигналы, так как искажения формы сигнала CLK (да и других сигналов) становятся велики. ...

Частота SCK была 10 МГц, шлейф я не перегибал. На осциллографе все сигналы нормальные, без завалов. Пробовал я и низкие частоты SPI, всё работает.

По поводу задержек. Переписал я инициализацию на ASM, задержки варьировал в широких пределах, ничего не изменилось, норма. Может, L2F50xx более толерантный, нежели LS020?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если раскоментировать одну из строчек (__no_operation()), то все перестанет работать

если раскоментировать обе - работает

такое ощущение, что эта зараза контролирует скважность CLK

но вот зачем - загадка...

Вот и прекрасно.

Я же говорил, что всё должно быть "красиво" и ровно, а не бог весть как :)

Успехов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 sonycman И компрессию не использовал - двухцветным шрифтам это не надо.

 

Вот это мне не понятно. 2 цвета это цвет букв и фон? Или 2 цвета букв и фон? И что такое padding кто знает? А кто знает как заставить Хагеновский конвертер шрифтов делать шрифт с компрессией?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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) - там добавлен чекбокс для принудительной активации компрессора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу задержек. Переписал я инициализацию на 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 давно уже никто слова не сказал :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В каких-то немецких исходниках видел команду на выключение LS020 типа 0x8000. Но у меня ни какого эффекта не имела. Кто что знает про это?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В каких-то немецких исходниках видел команду на выключение LS020 типа 0x8000. Но у меня ни какого эффекта не имела. Кто что знает про это?

Меня, честно говоря, меньше всего заботит выключение дисплея.

Обрубил ему питание, да и всё :biggrin:

Ничего с ним не случится.

А сдохнет - туда ему и дорога. Больше не буду связываться с девайсами без даташитов :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В каких-то немецких исходниках видел команду на выключение LS020 типа 0x8000. Но у меня ни какого эффекта не имела. Кто что знает про это?

Меня, честно говоря, меньше всего заботит выключение дисплея.

Обрубил ему питание, да и всё :biggrin:

Ничего с ним не случится.

А сдохнет - туда ему и дорога. Больше не буду связываться с девайсами без даташитов :(

А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет?

Сколько FPS на нем можно получить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет?

Сколько FPS на нем можно получить?

Это всё зависит от частоты SPI, по которому вы будете передавать данные.

На частоте, близкой к максимальной - 12 Мгц - никакого "мельтешения" нет, есть только что-то типа "фликера", так как отсутствует вертикальная синхронизация.

При такой частоте получается около 31 полного (176 на 132) кадра в секунду, но это чистая передача, без учёта времени на формирование картинки.

 

ЗЫ: ИМХО, для осциллографа можно найти дисплеи "полегче" - с меньшим кол-вом цветов, чтобы не тратить кучу времени на передачу 16-битных слов...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет?

Сколько FPS на нем можно получить?

Это всё зависит от частоты SPI, по которому вы будете передавать данные.

На частоте, близкой к максимальной - 12 Мгц - никакого "мельтешения" нет, есть только что-то типа "фликера", так как отсутствует вертикальная синхронизация.

При такой частоте получается около 31 полного (176 на 132) кадра в секунду, но это чистая передача, без учёта времени на формирование картинки.

 

ЗЫ: ИМХО, для осциллографа можно найти дисплеи "полегче" - с меньшим кол-вом цветов, чтобы не тратить кучу времени на передачу 16-битных слов...

 

Полегче в плане цены наврядли, а у меня это пунктик №1. Еще вопрсы:

Какая максимальная частота SPI(у дисплея)?

Почему вы не использовали модуль SPI+DMA(имеется в виду SAM7)?

Дисплей оригинальный или лиценция( говорят что те что по лицензии погано показуют -"мутные")?

Конкретно у вас какой контроллер(LS020.....)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет? ...

Прорисовка как таковая не видна совсем, только когда сильно меняется фон всего изображения. При выводе осциллограмм (сгенерированных линий) изображение нормальное. В момент вывода по SPI я не заметил никакого срыва развёртки. Если линии выводятся в разные места, то это смотрится как мельтешение на обычном осциллографе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... А насколько сильно видна прорисовка? Если делать на нем осцилограф сильно мельтешить будет? ...

Прорисовка как таковая не видна совсем, только когда сильно меняется фон всего изображения. При выводе осциллограмм (сгенерированных линий) изображение нормальное. В момент вывода по SPI я не заметил никакого срыва развёртки. Если линии выводятся в разные места, то это смотрится как мельтешение на обычном осциллографе.

 

Надежда имеется :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полегче в плане цены наврядли, а у меня это пунктик №1. Еще вопрсы:

1. Какая максимальная частота SPI(у дисплея)?

2. Почему вы не использовали модуль SPI+DMA(имеется в виду SAM7)?

3. Дисплей оригинальный или лиценция( говорят что те что по лицензии погано показуют -"мутные")?

Конкретно у вас какой контроллер(LS020.....)?

1. По даташиту - 13 Mbit/s, то есть 13 Мгц. Где-то писали, что работает до 16, но не проверено.

2. А почему вы так решили? :)

Действительно, пока не использовал. За ненадобностью. Макс. скорости можно достичь и без DMA.

3. А чёрт его знает. У меня LS020 (конкретно - LS0208UD06). Не нравятся пока только две вещи - невозможность кадровой синхронизации и слегка светловатые цвета. Всё это, возможно, решается, но только при наличии полной документации.

А чёткость картинки превосходная, если вы это имели ввиду под словом "мутные". :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полегче в плане цены наврядли, а у меня это пунктик №1. Еще вопрсы:

1. Какая максимальная частота SPI(у дисплея)?

2. Почему вы не использовали модуль SPI+DMA(имеется в виду SAM7)?

3. Дисплей оригинальный или лиценция( говорят что те что по лицензии погано показуют -"мутные")?

Конкретно у вас какой контроллер(LS020.....)?

1. По даташиту - 13 Mbit/s, то есть 13 Мгц. Где-то писали, что работает до 16, но не проверено.

2. А почему вы так решили? :)

Действительно, пока не использовал. За ненадобностью. Макс. скорости можно достичь и без DMA.

3. А чёрт его знает. У меня LS020 (конкретно - LS0208UD06). Не нравятся пока только две вещи - невозможность кадровой синхронизации и слегка светловатые цвета. Всё это, возможно, решается, но только при наличии полной документации.

А чёткость картинки превосходная, если вы это имели ввиду под словом "мутные". :)

:cheers: thank

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...