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

 
 
> LPC1788, MatrixARB
ar__systems
сообщение Mar 7 2014, 19:38
Сообщение #1


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Вопрос по регмстру matrixarb.

Есть проект с LCD, SDRAM. Ранее вся графика для экрана находилась во внутреннем флеше. Все работало замечательно. Сейчас перенес графику во внешний флеш и сразу начались глюки в виде какого-то мерцания экрана. Если я выключаю отрисовку и просто вхожу в бесконечный цикл мерцание прекращается.

Т.е. вроде очевидно что FIFO экрана время от времени не успевает получать данные. Ок. В даташите нашел регистр MATRIXARB, в котором написано, что чтобы отдать приоритет дисплею надо туда записать 0x00000c09. Записал, в этом случае все довольно быстро виснет.

Дефолтное значение регистра по даташиту - 0x0000000D
Попробовал записать его - все равно виснет
Посмотрел, что там было до моей записи - 0x00010004

Это странно, т.к. до сегодняшнего дня регистр matrixarb не был определен в LPC177x_8x.h там было RESERVED на его месте.

Вторая странность, что вот этот 16ый бит по даташиту должен быть всегда нулем:
Код
Table 27. Matrix Arbitration register (MATRIXARB- 0x400F C188) bit description
11:10 PRI_LCD LCD DMA priority. 0
13:12 PRI_USB USB DMA priority. 0
15:14 - Reserved. Read value is undefined, only zero should be written. NA
16 ROM_LAT ROM latency select. Should always be 0. 0
31:17 - Reserved. Read value is undefined, only zero should be written. NA

Возникает подозрение, может я не туда пишу?
Код
xprintf("& LPC_SC->MATRIXARB %x\n", &(LPC_SC->MATRIXARB) );
xprintf("  LPC_SC->MATRIXARB %x\n", LPC_SC->MATRIXARB );

и на выходе:
Код
& LPC_SC->MATRIXARB 400fc188                                                    
  LPC_SC->MATRIXARB 10004

У кого-то есть идеи, что происходит?

Поставил breakpoint на ResetISR, значение этого регистра такое же, 0х10004
Записал туда 0x10C09, никакого эффекта
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение Mar 8 2014, 05:25
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
А какие другие варианты?

Масса. (Более прозаичных. Ключевое слов V-Sync, например. Да и по горизонтали тоже могут быть проблемы... Хотя трудно судить не видя картинку...)
В общем-то, это ваше, конечно, дело.
---
А если нет уверенности "туда ли я пишу"
*( ( volatile unsigned long *) 0x400FC188) ) = 0xC09 (0xC09 - как раз рекомендовано даташитом в вашем случае).

Но разбираться в стиле "очевидно-не очевидно" - можно крайне долго.
З.Ы. Ну и арбиртраж я бы устанавливал из когда где-нибудь внутри, еще до настройки всего остального.
P.S.2 Ну и скорость развертки LCD тоже можно поменять. К примеру по ходу работы и посмотреть что будет...

Сообщение отредактировал DpInRock - Mar 8 2014, 05:39


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Mar 8 2014, 11:20
Сообщение #3


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(DpInRock @ Mar 8 2014, 00:25) *
Масса. (Более прозаичных. Ключевое слов V-Sync, например. Да и по горизонтали тоже могут быть проблемы... Хотя трудно судить не видя картинку...)

Что с ним может быть, с V-Syncом, и как это может быть связано с моими обращениями к внешнему флешу?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 20:52
Рейтинг@Mail.ru


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