Здравствуйте, уважаемые участники форума. Возникла сложность с использованием 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 - макроопределения небанкированых регистров общего назначения. Будем признательны за подсказку.
Сообщение отредактировал Misile_Inc - Aug 30 2011, 04:45
|