Цитата(AlexPT @ May 25 2007, 13:56)

С EEAR = 0 это опечатка. Компилирую с уровнем оптимизации 0. Что такое фюз М103С я не знаю
Про М103С извините ошибся, подумал что речь идет о ATmega128.
Посмотрите код который генериться для строк:
EECR |= (1<<EEMWE);
EECR |= (1<<EEWE);
Не уровне оптимизации -O0:
Код
EECR |= (1<<EEMWE);
92: 80 91 3c 00 lds r24, 0x003C
96: 84 60 ori r24, 0x04; 4
98: 80 93 3c 00 sts 0x003C, r24
EECR |= (1<<EEWE);
9c: 80 91 3c 00 lds r24, 0x003C
a0: 82 60 ori r24, 0x02; 2
a2: 80 93 3c 00 sts 0x003C, r24
И на -O1:
Код
EECR |= (1<<EEMWE);
8e: e2 9a sbi 0x1c, 2; 28
EECR |= (1<<EEWE);
90: e1 9a sbi 0x1c, 1; 28
В первом случае не соблюдается условие установки бита EEWE не позже 4 циклов после установки EEMWE.
Не используйте уровень оптимизации -O0, он нужен в очень редких случаях для отладки.
Используйте библиотечные функции, как с ними работать описано в avr-libc-user-manual в директори WinAVR/doc/avr-libc.
Анатолий.
Сообщение отредактировал aesok - May 25 2007, 10:16