Выходит не я единственный такой везучий

.
Цитата
А как банк настроен?
А MAM, для проверки и отключить можно.
BCFG0 = 0;
MAM пока не перенастраивал.
Цитата
А компилятор ничего лишнего не оптимизирует?
Нет. Проверял.
Цитата
Да и volatile тут поправильней будет.
*((volatile char *)0x80000000) = C;
В реальной программе как и положено (volatile unsigned char *)
Цитата
А попробуйте по одному адресу
*((volatile char *)0x80000000) = C;
X = *((volatile char *)0x80000000) ;
Есть подозрение что будет всего одно обращение.
Это описано в первом посте.
Цитата
Я эту проблему решаю вставкой nop между операциями записи. То же самое, AFAIR, и для чтения, т.к. при чтении контроллер шины может продержать СS и OE для нескольких последовательных адресов.
nop или другие команды не помогают. Помогает загрузка в PC

.
Пока решил проблему двумя функциями:
unsigned char ext_read(unsigned char *addr)
{
return *addr;
}
void ext_write(unsigned char *addr, unsigned char data)
{
*addr = data;
}
Сообщение отредактировал amw - Nov 21 2006, 19:21
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.