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

 
 
 
Reply to this topicStart new topic
> avr-gcc -> cvavr, pgm_read_byte
Edward_tlt
сообщение Jan 18 2009, 21:34
Сообщение #1





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



Занялся перевести под CVAVR библиотеку для дисплея на T6963C original
Вроде всё получилось, но вот
Код
//-------------------------------------------------------------------------------------------------
//
// Displays bitmap from program memory
//
//-------------------------------------------------------------------------------------------------
void GLCD_Bitmap(unsigned char * bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
{
unsigned char i, j;

for(j = 0; j < height; j++)
{
GLCD_GraphicGoTo(x, y + j);
for(i = 0; i < width/GLCD_FONT_WIDTH; i++)
  {
  GLCD_WriteDisplayData(pgm_read_byte(bitmap + i + (GLCD_GRAPHIC_AREA * j)));     
  }
}
}

не пойму как сделать в CVAVR... Как правильно заменить pgm_read_byte?

Сообщение отредактировал Edward_tlt - Jan 18 2009, 22:00
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 19 2009, 11:17
Сообщение #2


Гуру
******

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



Цитата(Edward_tlt @ Jan 19 2009, 00:34) *
Как правильно заменить pgm_read_byte?
Имхо, в CVAVR эквивалента этой функции - нет. Следует записать:
void GLCD_Bitmap(unsigned char flash* bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
и
GLCD_WriteDisplayData(*(bitmap + i + (GLCD_GRAPHIC_AREA * j)));
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jan 19 2009, 12:20
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



если я правильно понял,то попробуйте так:
CODE

flash char GLCD_GRAPHIC_AREA;
....

for(i = 0;width/GLCD_FONT_WIDTH; i++)
{
GLCD_WriteDisplayData(bitmap + i + (GLCD_GRAPHIC_AREA * j));
}


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 19 2009, 12:27
Сообщение #4


Гуру
******

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



Цитата(WHALE @ Jan 19 2009, 15:20) *
если я правильно понял,то попробуйте так
По-моему, Вы поняли не правильно. GLCD_GRAPHIC_AREA - это константа (то ли высота, то ли ширина экрана), скорее всего, определённая через #define... Функция pgm_read_byte возвращает байт из флэш, находящийся по адресу аргумента. По-этому, так как Вы предложили - работать не будет.
Go to the top of the page
 
+Quote Post
Edward_tlt
сообщение Jan 19 2009, 20:11
Сообщение #5





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



Цитата(Палыч @ Jan 19 2009, 15:17) *
Имхо, в CVAVR эквивалента этой функции - нет. Следует записать:
void GLCD_Bitmap(unsigned char flash* bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
и
GLCD_WriteDisplayData(*(bitmap + i + (GLCD_GRAPHIC_AREA * j)));

Сегодня день рождения у жены, а завтра обязательно проверю и отпишусь. smile.gif
Go to the top of the page
 
+Quote Post
Edward_tlt
сообщение Jan 20 2009, 09:11
Сообщение #6





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



Цитата(Палыч @ Jan 19 2009, 15:17) *
Имхо, в CVAVR эквивалента этой функции - нет. Следует записать:
void GLCD_Bitmap(unsigned char flash* bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
и
GLCD_WriteDisplayData(*(bitmap + i + (GLCD_GRAPHIC_AREA * j)));

Огромное спасибо! Эта конструкция замечательно работает!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 01:12
Рейтинг@Mail.ru


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