Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с массивами
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Nikolay88
Не давно стал изучать программирование на микроконтроллерах, в частности на AVR, и столкнулся со следующие проблемой.
В качестве компилятора использую WinAvr а для отладки программы AVR studio.

Предположим я описываю массив так:
int sig[1]={0x0F,0xFF};

Далее идет программа. Компилятор производит компилирование без ошибок. Но когда я хочу посмотреть значение этого массива в AVR studio с помощью watch он выдает NOT in score. В чем ошибка?
Сергей Борщ
Цитата(Nikolay88 @ Mar 2 2009, 15:13) *
Но когда я хочу посмотреть значение этого массива в AVR studio с помощью watch он выдает NOT in score. В чем ошибка?
Одна из причин - массив локальный и существует только во время выполнения функции. Поэтому и виден только тогда, когда исполняется тело этой функции.
Nikolay88
Цитата(Сергей Борщ @ Mar 2 2009, 16:19) *
Одна из причин - массив локальный и существует только во время выполнения функции. Поэтому и виден только тогда, когда исполняется тело этой функции.


Как раз он объявлен как глобальный
MrYuran
Цитата(Nikolay88 @ Mar 2 2009, 16:13) *
Предположим я описываю массив так:
int sig[1]={0x0F,0xFF};

Странно...
размер массива - 1, а значений -2
Сергей Борщ
Цитата(Nikolay88 @ Mar 2 2009, 15:32) *
Как раз он объявлен как глобальный
Верстия вторая - к массиву нет обращений в программе и он просто выкинут линкером как неиспользуемый. Выложите проект в .zip-архиве.
Nikolay88
Цитата(Сергей Борщ @ Mar 2 2009, 17:06) *
Верстия вторая - к массиву нет обращений в программе и он просто выкинут линкером как неиспользуемый. Выложите проект в .zip-архиве.


Смысл в этой программе можно не искать, просто сам факт объявления мной массива и присваивание ему значения изображен.
Сергей Борщ
Цитата(Nikolay88 @ Mar 2 2009, 16:28) *
просто сам факт объявления мной массива и присваивание ему значения изображен.
Все показывает. Открыл ваш проект (переименовал папку, у меня с кириллицей в путях не заработало), загрузил проект, View->Watch, выделил sig и перетащил в окно Watch. А насчет размера массива MrYuran прав - маловат он у вас, sig[1]=0xF1 портит память за пределами массива.
Nikolay88
Цитата(Сергей Борщ @ Mar 2 2009, 18:01) *
Все показывает. Открыл ваш проект (переименовал папку, у меня с кириллицей в путях не заработало), загрузил проект, View->Watch, выделил sig и перетащил в окно Watch. А насчет размера массива MrYuran прав - маловат он у вас, sig[1]=0xF1 портит память за пределами массива.


Спасибо. А еще тогда вопрос в AVR studio добавляется файл с расширением .elf
MrYuran
Цитата(Nikolay88 @ Mar 2 2009, 18:18) *
Спасибо. А еще тогда вопрос в AVR studio добавляется файл с расширением .elf

Это как раз выходной бинарник.
Вернее хитрый объектник (насколько я понимаю), но им можно прошивать, а можно сконвертить в хекс или другие форматы
mdmitry
Цитата(MrYuran @ Mar 2 2009, 19:51) *
Это как раз выходной бинарник.
Вернее хитрый объектник (насколько я понимаю), но им можно прошивать, а можно сконвертить в хекс или другие форматы

Скорее это "хитрый" исполняемый файл. Стандарт для unix, linux. Многие компиляторы его делают (gcc, codewarrior и др).
Сергей Борщ
Цитата(Nikolay88 @ Mar 2 2009, 17:18) *
А еще тогда вопрос в AVR studio добавляется файл с расширением .elf
Пппереведи! (с)"Москва слезам не верит".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.