Здравствуйте, уважаемые участники форума.
Возникла сложность с использованием NAND Flash интерфейса в микроконтроллере 1886ВЕ3У. Пытаемся произвести запись во внешнюю память, контроллер выполняет запись 31 слова и перестает выполнять какие-либо действия.
Код упростили уже до такого вида (прерывания запрещены):
MOVLB Bank6;
CLRF NAND_MODE,1;
BSF EN_NAND;
NAND:
BTFSC BUSY_NAND;
goto NAND;
BCF MODE2_NAND;
BSF MODE0_NAND;
MOVFP AD0, NAND_DATA;
MOVFP AD1, NAND_DATA;
MOVFP AD2, NAND_DATA;
MOVFP AD3, NAND_DATA;
wait:
BTFSC BUSY_NAND;
goto wait;
BCF MODE0_NAND;
BSF MODE2_NAND;
MOVFP INDF0, NAND_DATA;
MOVFP INDF0, NAND_DATA;
MOVFP INDF0, NAND_DATA;
MOVFP INDF0, NAND_DATA;
INCF AD_3;
goto NAND
То есть, сначала разрешаем работу интерфейса в принципе, затем, как только NAND контроллер окажется свободен переходим в режим выдачи адреса, выдаем адрес, ждем освобождения контроллера, переходим в режим выдачи данных, выдаем данные, инкрементируем адрес, делаем петлю.
AD0- AD3 - макроопределения небанкированых регистров общего назначения.
Будем признательны за подсказку.