Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Что то запутался при переходе с ATMega64 на ATMega128 (+)

Отправлено Aleksey_n 30 июня 2008 г. 09:38



пишу загрузчик:

в его теле есть функция: LCD_Dr(s_wait,37,3); которая выводит
на дисплей небольшой рисунок.

формат его:
__flash unsigned char s_wait[] = {
0x3C, 0x01,
0x70, 0xF8,
0x88, 0x88,
0xF8, 0x70,
0x00, 0xD8,
... и так далее
};

Функция вывода его на дисплей:
void LCD_Dr(unsigned char __flash * ptr,char at_x,char at_y)
{
unsigned char x,y,xlen,ylen; xlen=* ptr;ylen=*(ptr+1);
for (y = 0; y < ylen; y++) {for (x = 0; x < xlen;x++)
{
Bufer_GotoPosXY(at_x+x,at_y+y);
SendData( * ( ptr+(y*xlen)+x+2));
}
}
}


при линковке выдается ошибка
Error[e18]: Range error,
Number out of range. Valid range is -128 (-0x80) to 255 (0xFF).
File: e:\...\2.0\BOOT_AES\bootldr.c, Line: 83
Source: LDI R17, (s_wait) >> 8
Where $ = main + 0x1A [0x1E516]
in module "bootldr" (e:\...\2.0\BOOT_AES\Release\Obj\bootldr.r90),
offset 0x1A in segment part 20, segment CODE
What: 8 ? (s_wait >> 1 & 0x7FFFFFFF) >> 8 - 1 : s_wait [0x1E0]
Allowed range: 0xFFFFFF01 - 0xFF
Operand: s_wait [0x1e004]
in module bootldr (e:\...\2.0\BOOT_AES\Release\Obj\bootldr.r90),
Offset 0x0 in segment part 16, segment NEAR_F
Error while running Linker


что не так?



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите из двух единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru