Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: WinAVR, переменная в регистре и fprint
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Vetal-Soft
WinAVR-20100110
Есть такой код:
Код
volatile register signed char count_temp asm("r18");
...
ISR (INT0_vect)
{
    if (bit_is_clear(PIND, 1))
        count_temp++;    
}

В теле программы используется fprint() для вывода на LCD. И при ее вызове регистр отведенный под переменную сбрасывается в стек со всеми вытекающими.
Что можно предпринять?
ReAl
Почитать третий вопрос avr-libc-faq
Также можно глянуть и тринадцатый
Отказаться от r18, взять из тех, которые "typically safe to use". Почитать про ключик компилятора -ffixed-reg и надеяться, что никакая из функций библиотеки не использует взятый регистр как временный. В последнем случае придётся перекомпилировать с этим ключиком и библиотеку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.