Спасибо за советы!
Цитата(Сергей Борщ @ Jan 8 2010, 10:28)

Раз уж вы только начали - во избежание дурацких недоразумений в дальнейшем - никогда не используйте -O0. хотя бы -O1, а вообще для AVR лучше всего в 99% случаев -Os.
-O0 и был выбран потому, чтоб оптимизатор не вмешивался, ну раз дали мне совет, выставил -Os.
Цитата(Сергей Борщ @ Jan 8 2010, 10:28)

Дайте, пожалуйста, свое определение понятия "не работает".Или он перезапускается по собаке если прерывания не вызываются и собака не сбрасывается.
Я пытался сказать, что проц перезагружается в момент вызова прерывания, но не по собаке.
Я в коде, в части инициализации порта поставил такую строку:
CODE
//configure PORTD
DDRD = 0xFF; // is output
PORTD ^= 0x80;
sleep(8);
...
именно для того, чтобы видеть сброс проца. В итоге, если разрешить прерывание таймера, то лампочка на порту Д начинает мигать, а не должна! Если прерывания запретить - то лампочка уже не мигает, как и должно.
Цитата(Сергей Борщ @ Jan 8 2010, 10:28)

Никогда не используйте "магические цифры".
Вы перемудрили:
Код
ISR(TIMER0_OVF_vect)
{
}
Из моего кода видно, что магические числа стал использовать именно потому, что перемудрил и стал разобраться в проблеме, т.е. иногда ими пользоваться всёже можно

Цитата(Сергей Борщ @ Jan 8 2010, 10:28)

При таких непонятках помогает вывод в файл исходника после обработки препроцессором:
avr-cpp -mmcu=at90can128 file.c > file.i
Не знал - спасибо!
Цитата(Сергей Борщ @ Jan 8 2010, 10:28)

Потому что наш друг Атмел сильно удружил нам всем, решив в своих даташитах считать программную память не в байтах, а в словах. Чем запутал всех и в первую очередь себя (посмотрите как они изворачиваются в описании команды LPM, которая фактически принимает байтовый адрес, и SPM). Разработчики avr-gcc (как, впрочем, и разработчики IAR) на эту хитрость не повелись и продолжают считать память в байтах.
За это тоже - спасибо!
Итак, подведем итог:
================
1. Выставил уровень оптимизации
-Os2. Удалил из кода
#define __AVR_AT90CAN128__ и вместо этого добавил
-mmcu=at90can128 (хотя по-мне, так объявления в коде всеж виднее, чем где-то в настройках проекта, но послушаюсь совета и сделаю как надо!)
3. Исправил вектор прерывания на:
ISR(TIMER0_OVF_vect)4. .//configure, make, и download - опять лампочка мигает в знак того, что проц периодически сбрасывается.
Пробовал отключать собаку - всё одно, что с ней, что без неё.
Чтоб ещё попробовать?