Коллеги!
Столкнулся с такой проблемой. Определяю для внешних устройств CS2 и CS3. Обращаюсь к этим устройствам по соответствующим адресам. При этом осциллографом вижу, что эпизодически во время этих CS'ов проскакивает CS1 (видимо при регенерации SDRAM). Стробирование буферов шины данных (для устранения конфликтов) внешних устройств сделано как -(CS0 & CS1). Соответственно эти короткие импульсы на CS1 сбивают всю работу внешних устройств.
Я никак не могу понять, как вообще возможно существование в один и тотже момент времени двух CS'ов. Может не правильно программирую SDRAM контроллер?
Второе. В файле at91rm9200.h приведена структура: // ***************************************************************************** // SOFTWARE API DEFINITION FOR Memory Controller Interface // ***************************************************************************** typedef volatile struct _AT91S_MC { AT91_REG MC_RCR; // MC Remap Control Register AT91_REG MC_ASR; // MC Abort Status Register AT91_REG MC_AASR; // MC Abort Address Status Register AT91_REG Reserved0[1]; // AT91_REG MC_PUIA[16]; // MC Protection Unit Area AT91_REG MC_PUP; // MC Protection Unit Peripherals AT91_REG MC_PUER; // MC Protection Unit Enable Register } AT91S_MC, *AT91PS_MC;
В документации на процессор ни слова про регистры : AT91_REG MC_PUIA[16]; // MC Protection Unit Area AT91_REG MC_PUP; // MC Protection Unit Peripherals AT91_REG MC_PUER; // MC Protection Unit Enable Register Что за мистика? Не в курсе ли кто?
|