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

 
 
> Как определить массив больше 32768 значений?, IAR AVR внешняя память
Target
сообщение Jan 27 2012, 09:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 21-05-08
Пользователь №: 37 691



Есть Atmega2561, внешняя память и сам чип позволяют адресовать до 64К ОЗУ.
В то же время не могу определить массив
Код
__no_init byte array[40000];


Компилятор IAR для AVR ругается "array is too large".

Можно ли как-нибудь обойти ограничение в 32768 значений и определить байтовый массив до 64К?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jan 27 2012, 12:52
Сообщение #2


Гуру
******

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



QUOTE (Target @ Jan 27 2012, 11:43) *
Компилятор IAR для AVR ругается "array is too large".
Да. Согласно стандарту максимальный размер массива - INT_MAX. Обойти никак. Вы можете сделать структуру из нескольких массивов и через приведение указателей обращаться к массивам как к одному сплошному через *(ptr+index), при обращении же через ptr[index] index будет трактоваться как знаковое число. Я так думаю.


--------------------
На любой вопрос даю любой ответ
"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
GetSmart
сообщение Jan 27 2012, 20:54
Сообщение #3


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Сергей Борщ @ Jan 27 2012, 17:52) *
... при обращении же через ptr[index] index будет трактоваться как знаковое число. Я так думаю.

А какая разница, если адрес 16-битный? Пусть как хочет его трактует, но адресует-то всё-равно правильно.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 19:23
Рейтинг@Mail.ru


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