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

 
 
> как создать 24 битный указатель (code vision)
ysmat
сообщение Oct 31 2012, 09:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 18-01-09
Пользователь №: 43 553



нужно создать указатель для работы с внешней памятью
чип atxmega128a1

Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 24)
haker_fox
сообщение Nov 1 2012, 01:25
Сообщение #16


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ysmat @ Nov 1 2012, 03:24) *
к атхмеге128 подключен lcd екран как внешняя память
нужно работать с ним

А так нельзя?
CODE
void Cls(unsigned char col)// ЗАЛИВКА ЦВЕТОМ
{
unsigned int i;
unsigned int j;
uint32_t *VRAM; // АДРЕС ДИСПЛЕЯ

VRAM =(uint32_t*) 0x020000; // НАЧАЛЬНЫЙ АДРЕС ДИСПЛЕЯ ЗА ПРЕДЕЛАМИ ВНУТРЕННЕЙ ПАМЯТИ


  for (i = 0; i < 272; i++)
    {
      for (j = 0; j < 480; j++) {*VRAM++ = col;}
    }
}


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 1 2012, 01:53
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(haker_fox @ Nov 1 2012, 03:25) *
А так нельзя?

Можно, но толку-то...
Больше 64 (или 32КБ) не поадресуешь - модель не той системы.


Цитата(haker_fox @ Nov 1 2012, 03:25) *
Код
void Cls(unsigned char col)// ЗАЛИВКА ЦВЕТОМ
{
uint32_t *VRAM; // АДРЕС ДИСПЛЕЯ

VRAM =(uint32_t*) 0x020000; // НАЧАЛЬНЫЙ АДРЕС ДИСПЛЕЯ ЗА ПРЕДЕЛАМИ ВНУТРЕННЕЙ ПАМЯТИ


  for (i = 0; i < 272; i++)
    {
      for (j = 0; j < 480; j++) {*VRAM++ = col;}
    }
}


И смысл другой - *VRAM= пишет в память по 4 байта зараз.
Это на АРМ, без разницы (местами наверное - случаи бывают разные), что так
Цитата
uint8_t * ptr8=(uint8_t *)0x020000;
//....
for (i=0; i<100500; i++) {
*ptr8++=digit;
}


что так

Цитата
uint32_t * ptr32=(uint32_t *)0x020000;;
//....
for (i=0; i<100500/4; i++) {
*ptr32++=digit|(digit<<8)|(digit<<16)(digit<<24);
}

А на АВР как надо?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2012, 07:23
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (_Артём_ @ Nov 1 2012, 01:26) *
Работают они там с SRAM так:
Чушь какая-то. Завернули в макросы обращение по указателю. Ничего нового не внести, семантику скрыли - жди граблей. Ключевое слово - "модель памяти Large", т.е. все указатели 24-битные, что и требовалось.

А автору вопроса остается только через асм, молясь, чтобы не пересечься с компилятором по используемым в асм-вставках регистрам. Ну или сменить проц. Полагаю, тот же STM32 покрывает хмегу по всем показателям, включая цену.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ysmat
сообщение Nov 1 2012, 08:43
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 18-01-09
Пользователь №: 43 553



посмотрел на настройки компилятора там есть выбор Large
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2012, 08:51
Сообщение #20


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (ysmat @ Nov 1 2012, 11:43) *
посмотрел на настройки компилятора там есть выбор Large
Тогда посмотрите документацию на предмет - что это означает и как с этим работать.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ysmat
сообщение Nov 1 2012, 09:15
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 18-01-09
Пользователь №: 43 553



The LARGE memory model is similar to the SMALL memory model, except it uses pointers to the FLASH memory area that are 32 bits wide.
The LARGE memory model can be used for chips with 256kbytes or more of FLASH.
In all memory models pointers to the EEPROM memory area are 16 bit wide

сказано что указатели flash 32 бита eeprom 16 про ram ни слова



что то я совсем запутался
не работает даже с двух байтным числом

unsigned char *VRAM;//
VRAM = 0xABAB; // НАЧАЛЬНЫЙ АДРЕС ЗА ПРЕДЕЛАМИ ВНУТРЕННЕЙ ПАМЯТИ

ошибка Error: D:\proect\SDR_avr_2\SDR.c(1272): a value of type 'unsigned int' can't be assigned to an entity of type 'unsigned char *'
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 1 2012, 09:50
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(ysmat @ Nov 1 2012, 13:15) *
ошибка Error: D:\proect\SDR_avr_2\SDR.c(1272): a value of type 'unsigned int' can't be assigned to an entity of type 'unsigned char *'

VRAM = (unsigned char *) 0xABAB;

Цитата(ysmat @ Nov 1 2012, 13:15) *
сказано что указатели flash 32 бита eeprom 16 про ram ни слова

Ну, как же - сказано: английским по-белому "is similar to the SMALL", за исключением указателей на flash...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 1 2012, 11:31
Сообщение #23


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (_Артём_ @ Nov 1 2012, 10:53) *
А на АВР как надо?

Честно говоря, не знаю... Просто посмотрел у автора дисплейчик 480*272. У меня к АРМу с таким же разрешением подключен через интерфейс RGB (цифра). Там за раз и надо 4 байта писать. Вот я автоматом сюда и разместил предложение rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ysmat
сообщение Nov 1 2012, 12:49
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 18-01-09
Пользователь №: 43 553



у меня к этому екрану подключена простая плис она и занимаеться регенерациеей
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 1 2012, 13:07
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ysmat @ Nov 1 2012, 14:49) *
у меня к этому екрану подключена простая плис она и занимаеться регенерациеей

Пишите Гайдуку в суппорт - пусть разъясняет...как ОЗУ такого объёма адресовать.
Либо на асме делайте.
Go to the top of the page
 
+Quote Post

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

 


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


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