Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR и Siemens M55
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26
Sergey Parfenov
Цитата(Fusion @ Jun 24 2008, 10:40) *
Код
    cbi     PORTB,LCD_CS  ;select Display
    cbi     PORTB,LCD_RS  ; clear RS line

loop:     ldi r21, 176
f2:        ldi r22, 132
f1:
        out SPDR,color      ;load byte in SPI data register

nop nop nop nop
nop nop nop nop
nop nop nop nop
nop nop

        dec r22
        brne f1
        dec r21
        brne f2

        inc color
        rjmp loop

И у Вас это работает? У меня точно такая же картина: остаются 170 пикселей. И еще, не подскажете, как в С передаются аргументы функции? Через стек?
Cyber_RAT
быстрее будет не грузить Х,Y в разные регистры и на каждый проверку делать а использовать sbiw.
Код
                ldi    zh,$5A
        ldi    zl,$C0
                cbi     PORTB,LCD_CS ;select Display
                cbi     PORTB,LCD_RS ; clear RS line
lcd_clear:
                out SPDR,color
тут или нопы и флаг проверять
        sbiw    ZL,1
        brne    lcd_clear
        sbi     PORTB,LCD_CS       ;deselect Display
        ret

p.s. насчет незаполненной области...
покажите команды задания окна (т.е. то что перед передачей данных).
у вас там "сто пудов" стоят координаты 176 и 132... а надо 131 и 175 (ибо 0-131, 0-175)
Fusion
Sergey Parfenov
Только что проверил вот с таким кодом:
Код
        call lcdinit
        ldi color, 0b00011111

    cbi     PORTB,LCD_CS ;select Display
    cbi     PORTB,LCD_RS ; clear RS line

        ldi r21, 176
f2:        ldi r22, 132
f1:
        out SPDR,color     ;load byte in SPI data register

nop nop nop nop
nop nop nop nop
nop nop nop nop
nop nop

        dec r22
        brne f1
        dec r21
        brne f2

loop:        rjmp loop

Экран закрашивается полностью. Если заменить 176 на 175 - справа остается одна вертикальная полоса.

Cyber_RAT
Да, sbiw циклом быстрее (на 0.2%), но мне координаты нужны при выводе служебной информации...
Alex_1811
Сегодня выжал с дисплея LS020 66fps в 16bit частота SPI выходит 24МГц.
Cyber_RAT
Fusion: я не в цикле отрисовки говорил заменить 176 на 175 smile.gif
а в командах задания активного окна...
Код
clear_screen:
        ldi    r24,$EF
        rcall    lcd_cmd
        ldi    r24,$80
        rcall    lcd_cmd
        ldi    r24,$18
        rcall    lcd_cmd
        ldi    r24,$05
        rcall    lcd_cmd

        ldi    r24,$12
        rcall    lcd_cmd
        ldi    r24,131  ;< вот тут
        rcall    lcd_cmd

        ldi    r24,$13
        rcall    lcd_cmd
        clr    r24
        rcall    lcd_cmd

        ldi    r24,$15
        rcall    lcd_cmd
        clr    r24               
        rcall    lcd_cmd

        ldi    r24,$16
        rcall    lcd_cmd
        ldi    r24,175                ;< и вот тут
        rcall    lcd_cmd

        ldi    zh,$5A
        ldi    zl,$C0

        Cbi    PORTB,LCD_RS
        cbi    PORTB,LCD_CS
lcd_clear1:
        out     SPDR,r25
        пауза
        sbiw    ZL,1
        brne    lcd_clear1
        sbi     PORTB,LCD_CS       ;deselect Display
        ret
Fusion
Cyber_RAT
Да, я понял.
У меня в цикле как раз окно не стандартное 129х161 (Сетка с шагом 16). А слева 15 пикселей для служебной инфы. Я выше выкладывал код.

Alex_1811
24 мГц? А процессор какой?
Alex_1811
Цитата
Alex_1811
24 мГц? А процессор какой?


AT91SAM7S256
Fusion
Alex_1811
А рабочим примером не поделитесь?
Начну изучать SAM7 с нуля ...
sonycman
Цитата(Alex_1811 @ Jun 25 2008, 00:33) *
Сегодня выжал с дисплея LS020 66fps в 16bit частота SPI выходит 24МГц.

Это при том, что допустимая частота контроллера LS020 всего 13 мегабит.
Ну и как, на 24 мегабитах глюков не наблюдается?
Шурила
Цитата(Fusion @ Jun 25 2008, 11:12) *
Alex_1811
А рабочим примером не поделитесь?
Начну изучать SAM7 с нуля ...

Здесь:
http://electronix.ru/forum/index.php?act=S...st&p=381141
Alex_1811
Цитата(sonycman @ Jun 25 2008, 23:42) *
Это при том, что допустимая частота контроллера LS020 всего 13 мегабит.
Ну и как, на 24 мегабитах глюков не наблюдается?

На глаз проблем не заметно все работает стабильно.
viael
Цитата(sonycman @ Jun 26 2008, 00:42) *
Это при том, что допустимая частота контроллера LS020 всего 13 мегабит.
Ну и как, на 24 мегабитах глюков не наблюдается?


У меня работает на 22.5 МГц(16bit SAM7X256 over PDC). Глюков не видно, хотя при быстрой смене кадра фликер все равно просматривается(если специально не присматриваться то наверно не заметишь), не смотря на частоту клока и работу через ДМА. Выкладываю свой пример. Пока он в состоянии заготовки для будующего проекта. Пример использует TNKernel. В примере один процесс последовательно отрисовует 2 картинки на весь экран с интевалом 500 мс, второй процесс меряет напругу на ADC4 раз в 10мс и рулит ШИМом(для подсветки). В дальнейшем планирую прикрутить микрочиповский GUI, через FrameBuffer.

З.Ы. Данные идут на SPI0.
З.З.Ы. Проект выполнен в Keil.Для нормальной сборки возможно потребуется поправить пути в свойствах проекта.
sonycman
Цитата(viael @ Jun 26 2008, 11:29) *
хотя при быстрой смене кадра фликер все равно просматривается(если специально не присматриваться то наверно не заметишь), не смотря на частоту клока и работу через ДМА.


Фликер это старая проблема.
Как его избежать - непонятно, хотя телефон как-то умудряется синхронизироваться с дисплеем так, что никакого фликера нет...
Alex_1811
Народ, поделитесь хидером шрифта для 8х8 и больше с кириллицей.
Во вложении нормальный шрифт 8х5.
LCD
Хедеры больше 8х8 можно создавать этой софтинкой: h__p://sarov.nnover.ru/fajlboks-ffdown/310692.html
А 8х8 сам ищу.
(Тоже делаю девайс с дисплеем от х65, но не на AVR, а на MSP430)
Alex_1811
Вижу что нету у народа хидера шрифта, так-что сел и написал простой
редактор шрифта. Пока работает только размер 8х8, но буду дерзать далее.
Вот оцените.
Шурила
Цитата(Alex_1811 @ Jul 3 2008, 22:05) *
Вижу что нету у народа хидера шрифта...

Ну вообще-то уже выкладывал в этой ветке
http://electronix.ru/forum/index.php?act=S...st&p=398360
Alex_1811
Цитата(Шурила @ Jul 4 2008, 06:31) *
Ну вообще-то уже выкладывал в этой ветке
http://electronix.ru/forum/index.php?act=S...st&p=398360


У меня этот шрифт на дисплее перевернут на 90 градусов.
zorromen
Цитата(viael @ Jun 26 2008, 10:29) *
У меня работает на 22.5 МГц(16bit SAM7X256 over PDC). Глюков не видно, хотя при быстрой смене кадра фликер все равно просматривается(если специально не присматриваться то наверно не заметишь), не смотря на частоту клока и работу через ДМА. Выкладываю свой пример. Пока он в состоянии заготовки для будующего проекта. Пример использует TNKernel. В примере один процесс последовательно отрисовует 2 картинки на весь экран с интевалом 500 мс, второй процесс меряет напругу на ADC4 раз в 10мс и рулит ШИМом(для подсветки). В дальнейшем планирую прикрутить микрочиповский GUI, через FrameBuffer.

З.Ы. Данные идут на SPI0.
З.З.Ы. Проект выполнен в Keil.Для нормальной сборки возможно потребуется поправить пути в свойствах проекта.


Както неверится, что 22.5 МГц. Интересно какая у вас длинна проводников до дисплея, у меня 10см и при 12МГц уже непоказывает как надо, 10МГц держит нормально. Ктомуже как действительно он может работать быстрее 13МГц, если котроллер быстрее неможет принять?
Шурила
Цитата(Alex_1811 @ Jul 4 2008, 09:09) *
У меня этот шрифт на дисплее перевернут на 90 градусов.

И у меня такое было, в зависимости как дисплей расположен.
Тут программно в подпрограмме вывода строки надо разворачивать (я отдельной подпрограммы
вывода символа не делал, т.к. вывод символа = строка в один символ).
К стати символ 16*8 я делал используя этот же шрифт - каждую
горизонтальную линию прорисовывал два раза.

Нажмите для просмотра прикрепленного файла
Alex_1811
Цитата(zorromen @ Jul 4 2008, 18:41) *
Ктомуже как действительно он может работать быстрее 13МГц, если котроллер быстрее неможет принять?


У меня стабильно на выдает 66fps отсюда частота 66*176*132*2*8=24.532МГц.
Длина шлейфа 12см.
zorromen
Цитата(Alex_1811 @ Jul 4 2008, 21:58) *
У меня стабильно на выдает 66fps отсюда частота 66*176*132*2*8=24.532МГц.
Длина шлейфа 12см.


Я извеняюсь, а как вы это померяли? В дебагере?
Alex_1811
Цитата(zorromen @ Jul 4 2008, 21:10) *
Я извеняюсь, а как вы это померяли? В дебагере?


При каждой заливке экрана я меняю состояние пина, потом меряю частоту на пине и умножаю на 2.
viael
Цитата(zorromen @ Jul 4 2008, 19:41) *
Както неверится, что 22.5 МГц. Интересно какая у вас длинна проводников до дисплея, у меня 10см и при 12МГц уже непоказывает как надо, 10МГц держит нормально. Ктомуже как действительно он может работать быстрее 13МГц, если котроллер быстрее неможет принять?


Можеш поверить, работает!!! Длина прводков тоже приблизительон 10см(кусок плоского шлейфа АТА).
zorromen
А какой предел скорости удалось получить, просто я хочу сделать щас конвектор паралельной загрузки в SPI на плис. Я тогда подниму скорость до 20Mгц. А там как получится. Использую FIFO на внутренней памяти плис. Туда мы выводим данные, очень бысто, паралельным портом, а на выходе SPI.
Alex_1811
Вот закончил прогу для создания шрифта.
Может кому пригодится.
AntonKr
Осилил, наконец, все страницы данной ветки (и не один раз) и получилось запустить дисплей под TI CC2431 (просто делаю ZigBee устройство). Очень помогает отслеживать параметры сети, да и вообще очень полезная вещь, т.к. можно отказаться от большого количества светодиодов и кнопок, пожертвовав всего одним портом. Запустил через HW SPI (единственное, что пока не подключил подсветку, но и так нормально). Спасибо всем, что выкладываете примеры, благодаря которым можно быстро определить неточности в собственном софте.
Однако у меня есть небольшой вопрос: есть ли где-нибудь в одном месте (как у немцев) собранные ценнейшие знания по регистрам данного LCD? Естественно читая каждый пост можно найти необходимое, но думаю, что если бы это было в одном документе и постоянно корректировалось, то это было бы осень здорово, как и один единый архив с проектами под разные контроллеры и IDE. Готов поучаствовать в создании документа.
VDLab
Здесь народ тоже с этими диспами заморачивается, достаточно успешно, надо сказать. Даже перевели ПДФку немецкую, у кого то в подписи там есть. Только похоже они его подзабросили и не обновляют.
bubu321
one photo from crash sx-65 on car ( build by ARM 7)

ведущий_специалист
Цитата(Fusion @ Jun 24 2008, 10:40) *
Juras Pr.
Кстати 34063 жрет 70 мА от 3.3 вольт. КПД примерно 50 %. Что бы такое поэкономичнее найти?


Привет всем.Я ииспользую диси преобразователь на тане15. Код и схему можно взять на вртп.ру в разделе мп3 плеер на хдд.
Я считаю что очень неплохо выходит(ток потребления от 3хх вольт - около 15мА)
Да и яркости вполне достаточно, если резистор не ставить вообще

a14.gif
Цитата(Alex_1811 @ Jul 4 2008, 21:58) *
У меня стабильно на выдает 66fps отсюда частота 66*176*132*2*8=24.532МГц.
Длина шлейфа 12см.

Ну молодец что разобрался. Есть чем похвастаться.

Можете не верить, я собрал три устройства одно на меге128 с частотой 16 мегагерц, второе на арме со штатной частотой в 48 мегагерц, и третье на дсп вс1000, с частотой в 12х4 мегагерц.
Прогу залил на всех с одной задачей, чередование заливки то красным то зеленым цветом.
Авр колбасил на частоте цк/2, арм тоже цк/2, дсп пустил SPI канал на тактовой.
Есть видео, получилось прикольно. Дсп порвал все в пух и прах, там было видно даже гармонику частоты смены кадра, в отличии наблюдения заливки армом и авром.
Я к чему все это. Да просто дисп РАБОТАЕТ на частоте SPI в 48 мегагерц. Могу поспорить.Причем стабильно, на длину проводов даже не смотрел.
__nik__
а ни кто не догадался, в АРМе, прогу вывода на экран в РАМе расположить, тогда и до ~80 фпс не долеко
ххх
Народ подскажите какой именно функцией у немцев шрифты на экран выводятся, а то нифига немогу понять...
Juras Pr.
При таких скоростях осталось к экрану прикрутить только VGA-вход и играться. Что касается потребления преобразователя 15мА от 3.3В - так это на вечный двигатель похоже. Или же в ущерб яркости преобразователь.
Alex_1811
Цитата(__nik__ @ Jul 11 2008, 00:49) *
а ни кто не догадался, в АРМе, прогу вывода на экран в РАМе расположить, тогда и до ~80 фпс не долеко


У меня из РАМ выполнялось. При увеличении частоты экран заливался не полностью.
Пример вывода шрифта:
ххх
Цитата(Alex_1811 @ Jul 11 2008, 10:34) *
Пример вывода шрифта:

Спасибо.
Только непонятно как это всё привязать к аппаратной SPI, или здесь под SPI подразумевается
функция LCD_PutPixel(GCLD_x,GCLD_y+8-j,GCLD_Col) ?
Ещё непонятно как пользоватся стрингом, -он должен указывать на конкректные строки масива или нужно просто обьявить строковые константы и выводить их под указатель -как в обычном printf ?
Прошу сильно не пинать, так как я начинаюший програматор......... biggrin.gif
А под 16 битную SPI для ARMa такого примера нет? а то начал переписывать и запутался.......
Alex_1811
Цитата(ххх @ Jul 12 2008, 03:36) *
Спасибо.
Только непонятно как это всё привязать к аппаратной SPI, или здесь под SPI подразумевается
функция LCD_PutPixel(GCLD_x,GCLD_y+8-j,GCLD_Col) ?
Ещё непонятно как пользоватся стрингом, -он должен указывать на конкректные строки масива или нужно просто обьявить строковые константы и выводить их под указатель -как в обычном printf ?
Прошу сильно не пинать, так как я начинаюший програматор......... biggrin.gif
А под 16 битную SPI для ARMa такого примера нет? а то начал переписывать и запутался.......


unsigned char const zg1[]="АБВГД";

вывод строки:
LCD_WriteString(zg,1,1,RGB_RED);

Все что связано с SPI(и нетолько):
LCD
У меня проблема: задание области вывода работает только один раз. Например, если сразу после инициализации очистить экран
Код
for(i=23232;i>0;i--)spidat(0xff)
а затем попытаться заполнить определенную область
Код
  spiout(0xfe90);
  spiout(0x0810);
  spiout(0x0920);
  spiout(0x0a30);
  spiout(0x0b40);
  for(i=0;i<0xff;i++)spidat(0);
то черная полоска начинается там, где закончилась очистка экрана. Аналогично, если вместо очистки заполнить область N, а затем задать координаты области M, то заполнятся будет область N. Такая проблема только у меня?
Juras Pr.
Надо spiout(0xEF90).
LCD
В сообщении, конечно, опечатка, но и с 0xEF90 тоже не работает. sad.gif
Juras Pr.
А процедура spiout() байты местами не путает? Мало ли. Никогда такой проблемы не было ни с одним экраном. Проблема может быть в некорректном состоянии RS или CS не там где надо меняется.
ххх
Цитата(Alex_1811 @ Jul 12 2008, 10:33) *
Все что связано с SPI(и нетолько):

Разбираюсь пока.
Да уж - серьёзная работа проделанна! Главное что всё намного понятней чем у немцев!
Здесь мне только непонятно с масивом unsigned int video_buffer[1][1]; - его что нельзя просто
обьявить как глобальную переменную?
LCD
Цитата(Juras Pr. @ Jul 16 2008, 00:43) *
А процедура spiout() байты местами не путает?
Уже наступал на эти грабли, поэтому не путает smile.gif Перепробовал как программный, так и аппаратный SPI, с частотами тоже играл, поэтому дело не в интерфейсе.
Цитата(Juras Pr. @ Jul 16 2008, 00:43) *
Проблема может быть в некорректном состоянии RS или CS не там где надо меняется.
spiout устанавливает RS, а spidat - сбрасывает, CS в обоих случаях сброшен, вроде ничего не перепутал.
LCD
Проблема решена: оказывается, после передачи команды надо было обязательно дергать CS!
Alex_1811
Цитата(ххх @ Jul 16 2008, 00:23) *
Здесь мне только непонятно с масивом unsigned int video_buffer[1][1]; - его что нельзя просто
обьявить как глобальную переменную?

Вообще должно быть video_buffer[176][132] но так как отлаживаю в ОЗУ пока видеобуфер не использую (не хватает памяти). Чтоб под массив не выделялась память сделано [1][1]. smile.gif
ххх
Цитата(Alex_1811 @ Jul 20 2008, 19:35) *
Вообще должно быть video_buffer[176][132] но так как отлаживаю в ОЗУ пока видеобуфер не использую (не хватает памяти). Чтоб под массив не выделялась память сделано [1][1]. smile.gif

Да я уж догадался biggrin.gif Я хочу TIшные ARMы использовать -у них много флеши, и работают из флеши довольно таки шустро в отличчи от Атмеловских. Но пока проблемы с разводкой - уж больно мелкие!
kiriusha
Немного не по сабжу, но... может кто нибудь знает где в Питере можно купить дисплейчик от х65 с контроллером LS020?
aai_m
Цитата(kiriusha @ Aug 4 2008, 11:24) *
Немного не по сабжу, но... может кто нибудь знает где в Питере можно купить дисплейчик от х65 с контроллером LS020?


В Донецке покупал дисплеи от х65 с LS020B8UD06 по цене эквивалентной 16 $ в магазинчике торгующим запчастями к мобильным телефонам. Думаю, что в Питере в подобных магазинах Вы сможете найти дисплеи от х65.
alegz
Стал счастливым обладателем дисплея s65 на чипе LPH88... подключил с первого раза, заработал... у меня возникли вопросы... ктонить расковырял как в нем перейти в 8битный режим? ... как прокрутку делать и другие фичи которые расковыряли для ls020 ?
Juras Pr.
В даташите на контроллер HD66773 от LPH88 очень много написано, в том числе и про прокрутку, но 8-битного режима там нет, только 8-цветный.
alegz
Цитата(Juras Pr. @ Aug 14 2008, 03:38) *
В даташите на контроллер HD66773 от LPH88 очень много написано, в том числе и про прокрутку, но 8-битного режима там нет, только 8-цветный.

чтото ненашел я там кодов которые послать надо по спи
ЗЫ я новичек, сильно не пинать smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.