Стоит простая задача - изменение фьюзов в условиях производства. Каждый раз подключать программатор не хочется. Попытался сделать "недопрограмматор", но чего-то фьюзы не программируются.

В режим программирования входит - возвращает 0x53. Дальше пытаюсь изменить фьюзы, вроде все проходит, но они не меняются. Про перезапуск перед проверкой знаю.
Вот упрощенный исходник:
unsigned char tmp;
SPCR=0x51;
SPSR=0x00;
// вход в режим программирования
while(1)
{
RESET=1;
delay_us(1000);
RESET=0;
delay_us(20000);
tmp=0;
SPDR=0b10101100;
while(SPSR.SPIF!=1);
SPDR=0b01010011;
while(SPSR.SPIF!=1);
SPDR=0xFF;
while(SPSR.SPIF!=1);
tmp=SPDR;
SPDR=0xFF;
while(SPSR.SPIF!=1);
if(tmp==0b01010011) break;
}
// старший байт фьюзов
SPDR=0xAC;
while(SPSR.SPIF!=1);
SPDR=0xA8;
while(SPSR.SPIF!=1);
SPDR=0xFF;
while(SPSR.SPIF!=1);
SPDR=0b11000111;
while(SPSR.SPIF!=1);
// младший байт фьюзов
SPDR=0b10101100;
while(SPSR.SPIF!=1);
SPDR=0xA0;
while(SPSR.SPIF!=1);
SPDR=0xFF;
while(SPSR.SPIF!=1);
SPDR=0b00101111;
while(SPSR.SPIF!=1);
RESET=1;
while (1);
Где трабл не пойму. Подскажите плиз!
Контроллер в программаторе мега8, менять фьюзы еадо в меге32.
Сообщение отредактировал Qwertty - Jan 16 2007, 17:26