Вс мар 20, 2022 22:07:41
Пн мар 21, 2022 08:29:05
//for (auto i = 0; i <= 320*480; i++) {
LDR.W R0,??DataTable2
LDR.W R1,??DataTable2_1
LDR.W R2,??DataTable2_2
LDR.W R6,??DataTable2_3
LDR.W R5,??DataTable2_4
LDR.W R7,??DataTable2_5
MOV R4,#+8388608
MOV R3,#+8388736
MOV R12,#+2
// Запись первого байта
//GPIOA->BSRR = 0x700 << 16 | 0x20700 ;
??main_0:
STR R7,[R5, #+0]
//GPIOB->BSRR = 0x438 << 16 | 0x438;
STR R6,[R5, #+1024]
//GPIOC->BSRR = 0x80 << 16 | 0x80;
STR R3,[R5, #+2048]
//GPIOA->BSRR = GPIO_BSRR_BS1;
STR R12,[R5, #+0]
//Запись второго байта
//GPIOA->BSRR = 0x700 << 16 | 0x20100 ;
STR R2,[R5, #+0]
//GPIOB->BSRR = 0x438 << 16 | 0x410;
STR R1,[R5, #+1024]
//GPIOC->BSRR = 0x80 << 16 | 0x0;
STR R4,[R5, #+2048]
//GPIOA->BSRR = GPIO_BSRR_BS1;
MOV LR,R12
//}
SUBS R0,R0,#+1
STR LR,[R5, #+0]
BNE.N ??main_0
Пн мар 21, 2022 11:01:23
VladislavS писал(а):64М/320/480*0.3 = 125 тактов на запись 8 констант в порты, адресация которых доступна от одной базы по смещению. Овердофига. Раза в 3-4 быстрее должно быть. Пришло время листинги смотреть.
// Функция заливки области
void TFT9488_Flood(unsigned short color, unsigned long len) {
unsigned short blocks;
unsigned char i, hi = color >> 8, lo = color;
TFT9488_CS_Active();
TFT9488_RS_Command();
TFT9488_Write8(0x2C);
TFT9488_RS_Data();
TFT9488_Write16BitColor(hi, lo);
len--;
blocks = (unsigned short) (len / 64); //64 pixels/block
if (hi == lo) {
while (blocks--) {
i = 16;
do {
// тут было раньше 8 раз TFT9488_WR_Strobe(); но текст ниже в разы быстрее выполняется
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
} while (--i);
}
//Fill any remaining pixels(1 to 64)
for (i = (unsigned char) len & 63; i--;) {
// тут было раньше 2 раз TFT9488_WR_Strobe(); но текст ниже в разы быстрее выполняется
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
GPIOA->BSRR = GPIO_BSRR_BR1;
GPIOA->BSRR = GPIO_BSRR_BS1;
}
} else {
while (blocks--) {
i = 16;
do {
TFT9488_Write16BitColor(hi, lo);
TFT9488_Write16BitColor(hi, lo);
TFT9488_Write16BitColor(hi, lo);
TFT9488_Write16BitColor(hi, lo);
} while (--i);
}
//Fill any remaining pixels(1 to 64)
for (i = (unsigned char) len & 63; i--;) {
TFT9488_Write16BitColor(hi, lo);
}
}
TFT9488_CS_Idle();
}
Пн мар 21, 2022 11:10:58
Пн мар 21, 2022 11:29:17
обязательно вернусь к этому,сейчас изучаю матрицыVladislavS писал(а):от табличного методы вычисления будет не отвертеться.
// В глобальной области
#define MB(X) (((GPIO_PIN_10|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_3) << 16)\
| ((X&1)?(1<<3):0)\
| ((X&2)?(1<<5):0)\
| ((X&4)?(1<<4):0)\
| ((X&8)?(1<<10):0))
const uint32_t MaskB[16] = { MB(0), MB(1), MB(2), MB(3),
MB(4), MB(5), MB(6), MB(7),
MB(8), MB(9), MB(10), MB(11),
MB(12), MB(13), MB(14), MB(15) };
Пн мар 21, 2022 11:46:55
Пн мар 21, 2022 12:14:36
Зависит от того что рисовать.Подскажите пожалуйста ещё, если я например хочу рисовать как бы поверх того что уже отрисовано, правильно ли я понимаю логику?
Пн мар 21, 2022 14:47:13
Reflector писал(а):Что рисовать собираешься?
Пн мар 21, 2022 16:25:50
Пн мар 21, 2022 20:03:39
Вт мар 22, 2022 15:11:31
Вт мар 22, 2022 18:49:16
Вт мар 22, 2022 19:41:04
Нет, в старых прибор применялась светомасса постоянного свечения с радиоактивным радием-226jcxz писал(а): Вы его с разборки АЭС заказывали???