Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR 5.3
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
an_ga
Доброго времени суток. При разработке программы для tiny2313 наткнулся на следующую проблемму: изменяются значения глбальных переменных. Влоть до того:

unsigned char ButtonNumber;
.
.
.
if(cmd==Play)
{
Mode=pass;//режим ввода 7мизначного пароля
ButtonNumber=0;
Beep();
}

void Beep()
{
Buzzer_ON;//вкл. пищалку
delay_ms(200);//использует __delay_cycles
Buzzer_OFF;//выкл. пищалку
}

После Beep() ButtonNumber уже не ноль а какое-то число. Есть отработки прерываний, но они переменную не трогают. Закономерности найти не могу. Подскажите, пожалуйста, где копать. Большое спасибо.
kosyak©
попробуте объявить ButtonNumber как volatile:
volatile unsigned char ButtonNumber;
компилятор над такими переменными не будет проводить оптимизаций...если ситуация не изменится, попробуйте увеличить стэк...
Dima_G
Стреляете память

Цитата(kosyak© @ Nov 24 2009, 11:17) *
попробуте объявить ButtonNumber как volatile:
volatile unsigned char ButtonNumber;
компилятор над такими переменными не будет проводить оптимизаций...если ситуация не изменится, попробуйте увеличить стэк...


Даже если это временно поможет, то это не решение проблемы. Она обязательно вылезет позже
kosyak©
Цитата
Даже если это временно поможет...

Хм...если проблема в недостаточной глубине стэка, то поможет.
Если проблема в оптимизации, по какой либо причине, компилятором работы с переменной - то тоже поможет...
Dima_G
Цитата(kosyak© @ Nov 24 2009, 12:32) *
Хм...если проблема в недостаточной глубине стэка, то поможет.
Если проблема в оптимизации, по какой либо причине, компилятором работы с переменной - то тоже поможет...


Переменная - глобальная
Увеличение величины стека поможет только в том случае, если его переполнение вызывает "наползание" на эту переменную

Предпологаю, что все проще - автор где-то неаккуратно с массивами / указателями работает
kosyak©
2Dima_G: Мы с Вами строим всего лишь предположения и на ваше предложение исправить работу с "массивами / указателями " я могу сказать примерно так же как Вы на мое со стэком - Это поможет только в том случае если автор не правильно работает с массивами/указателями...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.