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

 
 
> как создать 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
 
Start new topic
Ответов
ysmat
сообщение Oct 31 2012, 18:24
Сообщение #2


Участник
*

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



к атхмеге128 подключен lcd екран как внешняя память
нужно работать с ним

пример
Код
void Cls(unsigned char col)// ЗАЛИВКА ЦВЕТОМ
{
unsigned int i;
unsigned int j;
unsigned char  *VRAM; // АДРЕС ДИСПЛЕЯ

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


  for (i = 0; i < 272; i++)
    {
      for (j = 0; j < 480; j++) {*VRAM++ = col;}
    }
}
Go to the top of the page
 
+Quote Post
=GM=
сообщение Oct 31 2012, 20:41
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



А так почему нельзя сделать

unsigned long i;
unsigned char *VRAM;
VRAM=0x00020000;
for(i=0;i<130560;i++) *VRAM++=colour;


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ysmat
сообщение Oct 31 2012, 21:48
Сообщение #4


Участник
*

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



Цитата(=GM= @ Oct 31 2012, 23:41) *
А так почему нельзя сделать

unsigned long i;
unsigned char *VRAM;
VRAM=0x00020000;
for(i=0;i<130560;i++) *VRAM++=colour;


Error: D:\PROECT\AVR\SDR_avr_2\SDR.c(1285): a value of type 'long' can't be assigned to an entity of type 'unsigned char *'

в любом случаи главная проблема не решена
модель памяти small - указатели 16 бит
бессмысленно пытаться записать туда большее

кстати у avr-gcc вроде то же 16 бит не понятно как он работает с xмегами
ведь он идет в составе avrstudio6
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 31 2012, 22:26
Сообщение #5


Гуру
******

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



Цитата(ysmat @ Oct 31 2012, 23:48) *
Error: D:\PROECT\AVR\SDR_avr_2\SDR.c(1285): a value of type 'long' can't be assigned to an entity of type 'unsigned char *'

Модель - моделью, а строка
Код
VRAM=0x00020000;

всё равно должна вызвать ошибку.
Где-то так надо бы:
Код
VRAM=(unsigned char *)0x00020000;



Цитата(ysmat @ Oct 31 2012, 23:48) *
в любом случаи главная проблема не решена
модель памяти small - указатели 16 бит
бессмысленно пытаться записать туда большее

Что больше не бывает?
Ещё одна причина бросить CodeVision...

Цитата(ysmat @ Oct 31 2012, 23:48) *
кстати у avr-gcc вроде то же 16 бит не понятно как он работает с xмегами
ведь он идет в составе avrstudio6

У атмела должна быть апнота по работе с EBI, хотя бы для Иара.
Работают они там с SRAM так:

Код
#define SDRAM(addr) ((uint8_t *) SDRAM_ADDR)[addr] //!< Macro to access SDRAM.
#define SRAM(addr)  ((uint8_t *) SRAM_ADDR)[addr] //!< Macro to access SRAM.
    for (uint16_t i = 0; i < 1000; ++i) {
        SRAM(i) = (uint8_t) (i & 0xff);
    }
    
    // Copy to SDRAM.
    for (uint16_t i = 0; i < 1000; ++i) {
        SDRAM(i) = SRAM(i);
    }

Модель - Large.
Интересно где у GCC она включается?

Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2012, 07:23
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 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   как создать 24 битный указатель (code vision)   Oct 31 2012, 09:55
- - haker_fox   QUOTE (ysmat @ Oct 31 2012, 18:55) нужно ...   Oct 31 2012, 10:58
- - ysmat   Цитата(haker_fox @ Oct 31 2012, 14:58) Со...   Oct 31 2012, 11:21
|- - MrYuran   Цитата(ysmat @ Oct 31 2012, 15:21) походу...   Oct 31 2012, 11:31
||- - _Артём_   Цитата(MrYuran @ Oct 31 2012, 13:31) Есть...   Oct 31 2012, 11:57
|- - Палыч   Цитата(ysmat @ Oct 31 2012, 15:21) походу...   Oct 31 2012, 12:26
- - ysmat   вот файл stdint.h /* CodeVisionAVR C Compiler ...   Oct 31 2012, 12:00
- - ysmat   ЦитатаВопрос о том, как адресовать более 64к байт ...   Oct 31 2012, 15:29
|- - _Артём_   Цитата(ysmat @ Oct 31 2012, 17:29) а можн...   Oct 31 2012, 15:57
|- - _Артём_   Цитата(ysmat @ Oct 31 2012, 20:24) Кодvoi...   Oct 31 2012, 20:11
||- - _Артём_   Цитата(=GM= @ Oct 31 2012, 22:41) А так п...   Oct 31 2012, 21:27
|- - haker_fox   QUOTE (ysmat @ Nov 1 2012, 03:24) к атхме...   Nov 1 2012, 01:25
|- - _Артём_   Цитата(haker_fox @ Nov 1 2012, 03:25) А т...   Nov 1 2012, 01:53
|- - haker_fox   QUOTE (_Артём_ @ Nov 1 2012, 10:53) А на ...   Nov 1 2012, 11:31
- - ysmat   посмотрел на настройки компилятора там есть выбор ...   Nov 1 2012, 08:43
|- - Сергей Борщ   QUOTE (ysmat @ Nov 1 2012, 11:43) посмотр...   Nov 1 2012, 08:51
- - ysmat   The LARGE memory model is similar to the SMALL mem...   Nov 1 2012, 09:15
|- - Палыч   Цитата(ysmat @ Nov 1 2012, 13:15) ошибка ...   Nov 1 2012, 09:50
- - ysmat   у меня к этому екрану подключена простая плис она ...   Nov 1 2012, 12:49
- - _Артём_   Цитата(ysmat @ Nov 1 2012, 14:49) у меня ...   Nov 1 2012, 13:07


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

 


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


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