QUOTE (Oleg Victorovich @ Nov 28 2010, 22:13)

Читал, что необходимо объявлять глобальные переменные через Volatile
Глупость, или вы неправильно поняли. Объявлять через volatile надо только те переменные, которые совместно используются в разных потоках управления (например и в прерывании и в основном коде).
QUOTE (Oleg Victorovich @ Nov 28 2010, 22:13)

Вообще возможна работа в WinAVR при оптимизации -01...Os, и если да, то, что почитать?
Работа возможна, почитать как минимум:
1)Керниган и Ритчи "Язык программирования C", второе или третье издание.
2)avr-libc-faq в папке doc вашего компилятора.
3)документацию на avr-libc в той же папке.