Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как изменить обработку bad interrupt в winavr?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
viakon
Хочу чтоб происходил не переход на 0, а сброс по вачдогу.
ARV
Код
ISR(BADISR_vect, ISR_NAKED){
   // то, что надо вам сделать
   while(1); // судя по всему именно это
}
kiv121
Так и не добился перезагрузки собакой у 1281
Мож кто пробовал? Уходит в некуда и все тут.
Iar 5.3
Тупо jmp, вроде не правильно.
Про глюканые партии мсх .?
Поставил внешнее 1705
smk
В примерах от Атмела сначала запускался вочдог, а потом бесконечный цикл так чтоб вочдог не сбрасывался.
Сергей Борщ
Цитата(kiv121 @ Feb 9 2010, 09:56) *
Iar 5.3
В этой ветке обсуждался другой компилятор. Не видя вашего кода можно сказать только "где-то у вас ошибка". Скорее всего - в запуске собаки. Показывайте код.
kiv121
Сергей, с УВАЖЕНИЕМ к Вам отношусь.
Нет времени на всё. Гоню процесс.
Да сесть бы и разобраться...
Такое ощущение - партия брака (поставщики сказали)
Закупил много.
Развели на внешнюю собаку.
Вся писанина - мож кто как решил.
А нет - сдуем к чертовой матери!
А вся бадяга - RAM.
defunct
Цитата(kiv121 @ Feb 9 2010, 18:22) *
Вся писанина - мож кто как решил.

Ну например так...
Код
#define wdr()  asm("wdr")
#define cli()  asm("cli")

инициализация
static inline void __hal_WDTInit(void)
{
    U8 iStatus = SREG;
    cli();
    wdr();
    // Start timed sequence
    WDTCSR |= (1 << WDCE);
    // Set new prescaler to 128K cycles (timeout ~1s), and enable system reset by WDT
    WDTCSR = (1 << WDE) | (1 << WDP2) | (1 << WDP1) | (0 << WDP0);
    SREG = iStatus;
}

сброс
void reboot(void)
{
   cli();
   for(;;);
}
viakon
Цитата(ARV @ Feb 9 2010, 11:50) *
Код
ISR(BADISR_vect, ISR_NAKED){
   // то, что надо вам сделать
   while(1); // судя по всему именно это
}


именно то что надо, спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.