Цитата(Сергей Борщ @ Nov 18 2009, 15:58)

Читайте про rww и nrww секции. После записи нужно включить rww секцию битом RWWSRE (это по даташиту на мегу 16, у 32 может быть другое название).
Делаю так:
Код
//reenable the APP SECTION
asm("CLI");
while(SPMCR & SPMEN);
SPMCR |= (1<<RWWSRE) | (1<<SPMEN);
asm("spm");
asm("SEI");
и ничего не получается....
В отладчике вижу постоянно установленным в "1" бит RWWSE.
Цитата(Sergio66 @ Nov 18 2009, 17:09)

Делаю так:
Код
//reenable the APP SECTION
asm("CLI");
while(SPMCR & SPMEN);
SPMCR |= (1<<RWWSRE) | (1<<SPMEN);
asm("spm");
asm("SEI");
и ничего не получается....
В отладчике вижу постоянно установленным в "1" бит RWWSE.
ТОчнее происходит так...
Если в отладчике поставить точку останова на строке asm("CLI");, потом продолжить выполнени, то все нормально. Доступ к секции разрешен, и все считается...
Но, если точку останова поставить после кода разрешения, то ничего не работает.
Без отладчика - также не идет...
Цитата(Sergio66 @ Nov 18 2009, 17:27)

Делаю так:
Код
//reenable the APP SECTION
asm("CLI");
while(SPMCR & SPMEN);
SPMCR |= (1<<RWWSRE) | (1<<SPMEN);
asm("spm");
asm("SEI");
и ничего не получается....
В отладчике вижу постоянно установленным в "1" бит RWWSE.
ТОчнее происходит так...
Если в отладчике поставить точку останова на строке asm("CLI");, потом продолжить выполнени, то все нормально. Доступ к секции разрешен, и все считается...
Но, если точку останова поставить после кода разрешения, то ничего не работает.
Без отладчика - также не идет...
Разобрался...
вот такой код работает...
Код
//reenable the APP SECTION
asm("CLI");
while(SPMCR & RWWSB);
while(SPMCR & SPMEN);
SPMCR = (1<<RWWSRE) | (1<<SPMEN);
asm("spm");
asm("SEI");
вот этой строки не хватало...
while(SPMCR & RWWSB);