Реализовал обмен данными с SD - карточкой в режиме DMA. Все отлично работает. В конце приема/передачи блока данных возникает прерывание, я его обрабатываю. Все хорошо. Теперь нужно реализовать обработку ошибок. В настоящее время ошибки обрабатываются в режиме опроса. Например, нужно записать блок данных. Подаем карточке команду CMD24 (т.е., Write_Block). Естественно, карточка на нее должна ответить. Провоцируем ошибку, а именно - перед подачей команды вынимаем карточку из устройства. В этом случае передача команды завершается установкой флажка ошибки тайм-аута. Моя программа это обнаруживает (в режиме опроса) и ошибка обрабатывается. Теперь нужно сделать так, чтобы при возникновении ошибки генерировалось прерывание. Это позволит не заниматься опросом флажка. Но вот тут возникает проблема. Описания читал и перечитывал. Вроде бы, все настроено правильно, а прерывания не генерируются. Зато они отлично генерируются в конце безошибочного приема/передачи блока данных. Т.е., контроллеры прерываний и DMA я вроде бы настраивать научился. Кто-нибудь может подсказать, в чем дело ? Или поделиться примерчиком ?
|