Цитата(alexander55 @ Nov 1 2007, 08:50)

С WinAVR никогда не работал, но не поверю в то, что размер стека нельзя никак изменить.
Не верю (Станиславский).
У avr-gcc стек один, а не два, как у IAR, указатель сразу устанавливается на верхушку памяти данного контроллера, все переменные заполняют память снизу - итого после сборки проекта стек автоматически получается
максимально возможного для данной программы размера.
p.s. а вообще, насколько я понимаю, ты в этом посте не того человека выбрал для того, чтобы по avr-gcc "не работать и не верить" :-)Нет, ну если совсем строго, то, переопределив символ __stack (ключ линкеру --defsym __stack=значение), можно изменить начальное положение указателя стека, но увеличить таким образом стек можно только при наличии внешней памяти, так как по умолчанию стек ставится во внутреннюю. При наличии только накристальной памяти стек так можно только уменьшить.
Т.е. в
подавляющем большинстве случаев работы с AVR совет увеличить стек не имеет смысла.
Solo_M, а есть уверенность, что выход на 0 происходит именно при выходе и именно из этого прерывания?
Нет ли каких-то включенных прерываний с неназначенным обработчиком? Или забыл обработчик назначить, или с именем ошибся - тогда подлинкуется переход на __bad_interrupt из которого делается JUMP 0
Переопредели ловушку неназначенных прерываний:
Код
ISR(__bad_interrupt)
{
for(;;) PORTB ^= 0x01; // или на какую-то другую незанятую ногу
}
и посмотри.