реклама на сайте
подробности

 
 
87 страниц V  « < 45 46 47 48 49 > »   
Reply to this topicStart new topic
> AVR и Siemens M55
Sergey Parfenov
сообщение Jun 15 2008, 16:59
Сообщение #691





Группа: Новичок
Сообщений: 6
Регистрация: 29-05-08
Пользователь №: 37 924



Цитата(dENIM @ Jun 15 2008, 18:29) *
какой то бок с SPI
попробуйте не ждать флага, а вставьте кучку нопов.

Спасибо за совет, я понимаю, что проблема где-то здесь, но пока не могу найти. Кучка нопов, к сожалению, не помогает, только инициализация совсем перестает проходить.
Go to the top of the page
 
+Quote Post
Sergey Parfenov
сообщение Jun 15 2008, 18:36
Сообщение #692





Группа: Новичок
Сообщений: 6
Регистрация: 29-05-08
Пользователь №: 37 924



Почему-то не могу отредактировать предыдущее сообщение. Все разобрался. Все дело было в том, что нога SS была сконфигурирована по умолчанию как вход. А у меня она болтается в воздухе, потому от наводок контроллер периодически считал себя не мастером, а ведомым. beer.gif
Go to the top of the page
 
+Quote Post
Juras Pr.
сообщение Jun 20 2008, 23:08
Сообщение #693


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 26-04-08
Из: BY/MN
Пользователь №: 37 111



Действительно, в 8-битном режиме после записи RE8h=00h (после RE0h=90h) формат данных RRRGGGBB. А после RE8h=40h формат данных BBGGGRRR. Составил таблицы палитры для 8-битного режима, может быть полезно. Проверено. Для возврата в 16-битный режим можно использовать RE8h=0Fh.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Juras Pr.
сообщение Jun 22 2008, 20:16
Сообщение #694


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 26-04-08
Из: BY/MN
Пользователь №: 37 111



Палитры для импорта для графических редакторов типа Gimp или Photoshop. В архиве также есть немного подправленная картинка (вместо регистра RE0h указан REFh в самом верху картинки).
Включается режим так:
lcd_wrcmd16($EF90);
lcd_wrcmd16($E800);
Первая команда может не понадобиться.
Прикрепленный файл  LS020_8bit_palettes.zip ( 22.59 килобайт ) Кол-во скачиваний: 403


Сообщение отредактировал Juras Pr. - Jun 22 2008, 20:18
Go to the top of the page
 
+Quote Post
Sergey Parfenov
сообщение Jun 23 2008, 18:27
Сообщение #695





Группа: Новичок
Сообщений: 6
Регистрация: 29-05-08
Пользователь №: 37 924



Никак не могу победить низкую скорость прорисовки sad.gif Переделал под 8ми битный цвет, практически никакой разницы. Процедура очистки(заливки) на ассемблере работает, конечно, побыстрее, чем на С, но все равно экран заливается слишком долго. Теоретически на 8МГц SPI должно быть порядка 20 кадров в секунду при 16-битном цвете... При этом на глаз нет никакой разницы, включен 2х или нет. Почему-то не до конца заливается дисплей, если отправлять 132Х176=5АС0 байт, остается порядка 170 незакрашенных пикселей sad.gif
Go to the top of the page
 
+Quote Post
Fusion
сообщение Jun 23 2008, 20:20
Сообщение #696


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 19-07-06
Пользователь №: 18 920



Цитата
Почему-то не до конца заливается дисплей, если отправлять 132Х176=5АС0 байт, остается порядка 170 незакрашенных пикселей

Значит в цикле 132 не выводися по одному байту - итого минус 176.
Вот код для полной очистки:
Код
fill:                        ; fill screen
        cbi     PORTB,LCD_CS; select Display
        cbi     PORTC,LCD_RS; clear RS line
        ldi     r31, 0xB5
        ldi     r30, 0x80
fill1:    mov temp, color        ; load byte in SPI data register
        call lcd_wrdata
        sbiw    r30,1
        brne    fill1
        ret


Про скорость:
Цитата
На меге 88Р при 20 мгц и SPI 10 мгц в восьмибитном режиме полная заливка происходит за 30 милисекунд (33fps).
А если не ждать SPIF в регистре SPSR то 20 милисекунд (50fps). Только между командами out SPDR должно быть не меньше 16 тактов.

Измерял осциллографом.
Go to the top of the page
 
+Quote Post
Juras Pr.
сообщение Jun 23 2008, 20:29
Сообщение #697


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 26-04-08
Из: BY/MN
Пользователь №: 37 111



А у меня разница очень заметна, использую только ассемблер, после посылки байта на SPI делаю задержку нопами, флаг не проверяю.

To Fusion:
По Вашему примеру в 8-битном режиме будет происходить заполнение экрана 2 раза, так как B580=46464.

Сообщение отредактировал Juras Pr. - Jun 23 2008, 20:34
Go to the top of the page
 
+Quote Post
Sergey Parfenov
сообщение Jun 24 2008, 05:30
Сообщение #698





Группа: Новичок
Сообщений: 6
Регистрация: 29-05-08
Пользователь №: 37 924



Я тоже флага не жду - получается пошустрее. Как раз такой цикл и используется, только в регистр загружается 5АС0. Попробую посчитать, сколько у меня получается фпс. На крайний случай, буду очищать только те области, где выодится информация.
Go to the top of the page
 
+Quote Post
Fusion
сообщение Jun 24 2008, 06:40
Сообщение #699


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 19-07-06
Пользователь №: 18 920



Juras Pr.
Да, это для 16 битного режима пример...
На самом деле у меня вот такой код:
Код
    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

Быстрее не получается.
Запаял reset LCD на reset меги. Все работает. Хотел и CS навсегда выбрать - не получилось. Инициализация проходит, данные не пишутся.
Была инфа, что задержки при инициализации нельзя увеличивать. Для LS020 оказалось можно. У меня отвалился кварц - и мега засинхронизировалась от 100 кГц (преобразователь подсветки на 34063). Ооочень медленно экранчик запустился. Кстати 34063 жрет 70 мА от 3.3 вольт. КПД примерно 50 %. Что бы такое поэкономичнее найти?
Go to the top of the page
 
+Quote Post
Juras Pr.
сообщение Jun 24 2008, 06:54
Сообщение #700


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 26-04-08
Из: BY/MN
Пользователь №: 37 111



Я тоже пробовал тактировать от внутреннего генератора 8МГц, в то время, как программа была присособлена к 12МГц и всё работало smile.gif. Я использую подсветку от Кранца и надо сказать, КПД получается не плохой, главное полевик хороший и дроссель добротный взять.
Go to the top of the page
 
+Quote Post
Sergey Parfenov
сообщение Jun 24 2008, 08:48
Сообщение #701





Группа: Новичок
Сообщений: 6
Регистрация: 29-05-08
Пользователь №: 37 924



Цитата(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 пикселей. И еще, не подскажете, как в С передаются аргументы функции? Через стек?
Go to the top of the page
 
+Quote Post
Cyber_RAT
сообщение Jun 24 2008, 09:36
Сообщение #702


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064



быстрее будет не грузить Х,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)
Go to the top of the page
 
+Quote Post
Fusion
сообщение Jun 24 2008, 10:58
Сообщение #703


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 19-07-06
Пользователь №: 18 920



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%), но мне координаты нужны при выводе служебной информации...
Go to the top of the page
 
+Quote Post
Alex_1811
сообщение Jun 24 2008, 19:33
Сообщение #704


Частый гость
**

Группа: Участник
Сообщений: 178
Регистрация: 31-10-06
Из: Яблунець
Пользователь №: 21 821



Сегодня выжал с дисплея LS020 66fps в 16bit частота SPI выходит 24МГц.
Go to the top of the page
 
+Quote Post
Cyber_RAT
сообщение Jun 25 2008, 04:21
Сообщение #705


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064



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
Go to the top of the page
 
+Quote Post

87 страниц V  « < 45 46 47 48 49 > » 
Reply to this topicStart new topic
10 чел. читают эту тему (гостей: 10, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016