F60-67 (1041605), страница 15
Текст из файла (страница 15)
Если бит непрерывного преобразования (бит 7, CCNV) в команде«окончание операции» установлен в 1, то счетчик повторений игнорируется и DMA будет продолжатьвыполнять команды неограниченно долго. Если бит CCNV сброшен в 0, то счетчик повторений (регистрыDMA0CSH и DMA0CSL) декрементируется и DMA будет продолжать выполнять команды до тех пор, показначение счетчика повторений не достигнет 0х0000. Счетчик повторений инициализируется значением границысчетчика повторений (регистры DMA0CTH и DMA0CTL) в начале работы DMA. На рис.6.2 показан примерфункционирования DMA в режиме 0.Рисунок 6.2.
Функционирование DMA в режиме 0.XRAMADC1LADC1HADC0LБУФЕРКОМАНД(64 байта)ADC0H (Diff.)ADC0LADC0HADC1LADC1HADC0LADC0HADC0L (Diff.)ADC0H (Diff.)ADC0LADC0H0x3F...DMA0BND770x030x020x010x0000000000001100000100000000010000Ред. 1.2DMA0CSH:L = 0x0000DMA0CSH:L = DMA0CTH:L - 1DMA0CSH:L = DMA0CTH:LC8051F060/1/2/3/4/5/6/76.5.
Выполнение команд в режиме 1.Когда интерфейс DMA начинает рабочий цикл, регистр состояния команд DMA (DMA0ISW,см. рис.6.9) загружается адресом, содержащимся в регистре границы команд DMA (DMA0BND, см. рис.6.8).Команда извлекается из буфера команд и схема управления DMA ожидает данных от соответствующего(-их)АЦП. После выполнения команды счетчик повторений (регистры DMA0CSH и DMA0CSL) декрементируется ивыполнение этой команды будет повторяться до тех пор, пока значение счетчика повторений не достигнет0х0000.
Затем счетчик повторений будет загружен значением границы счетчика повторений (из регистровDMA0CTH и DMA0CTL) и схема управления DMA инкрементирует содержимое регистра DMA0ISW, которыйпосле этого будет указывать на адрес следующей команды. Если текущей командой DMA является команда«окончание операции», то в регистр состояния команды загружается значение регистра границы команды. Еслибит непрерывного преобразования (бит 7, CCNV) в команде «окончание операции» установлен в 1, то DMAбудет продолжать выполнять команды. Если бит CCNV сброшен в 0, то DMA остановит выполнение команд вэтой точке. На рис.6.3 показан пример функционирования DMA в режиме 1.Рисунок 6.3.
Функционирование DMA в режиме 1.XRAMADC1LADC1HADC0LADC0HADC1LADC1HADC0LADC0HADC0L (Diff.)ADC0H (Diff.)БУФЕРКОМАНД(64 байта)0x3FDMA0CSH:L = 0x0000DMA0CSH:L = DMA0CTH:LDMA0CSH:L = 0x0000...DMA0BND0x030x020x010x00ADC0L (Diff.)ADC0H (Diff.)ADC0LADC0H00000000001100000100000000010000ADC0LADC0HADC0LADC0HРед.
1.2DMA0CSH:L = DMA0CTH:LDMA0CSH:L = 0x0000DMA0CSH:L = DMA0CTH:L - 1DMA0CSH:L = DMA0CTH:L78C8051F060/1/2/3/4/5/6/76.6. Источники прерываний.Интерфейс DMA обладает развитой системой прерываний. Некоторые прерывания можноиндивидуально разрешить/запретить, что позволяет генерировать прерывания по необходимости. Региструправления DMA (DMA0CN, см. рис.6.4) и регистр конфигурации DMA (DMA0CF, см. рис.6.5) содержат битыразрешения и флаги источников прерываний DMA.
Если произошло условие прерывания и это прерываниеразрешено, то DMA сгенерирует запрос прерывания (бит EIE2.7 устанавливается в 1).Прерывание от модуля DMA0 генерируется при установке следующих флагов DMA:1. Флаг завершения операций DMA (DMA0CN.6, DMA0INT) устанавливается, когда все операцииDMA завершены и интерфейс DMA находится в состоянии простоя (ожидания).2. Флаг ошибки переполнения данных от АЦП1 (DMA0CN.4, DMA0DE1) устанавливается в томслучае, если интерфейс DMA не может получить доступ к памяти XRAM в течение двух цикловпреобразования АЦП1. Это флаг показывает, что по крайней мере один результат преобразованияАЦП1 потерян.3. Флаг ошибки переполнения данных от АЦП0 (DMA0CN.3, DMA0DE0) устанавливается в томслучае, если интерфейс DMA не может получить доступ к памяти XRAM в течение двух цикловпреобразования АЦП0.
Это флаг показывает, что по крайней мере один результат преобразованияАЦП0 потерян.4. Флаг предупреждения о переполнении данных от АЦП1 (DMA0CN.1, DMA0DO1)устанавливается в том случае, если данные от АЦП1 становятся доступными, а DMA еще незаписал результат предыдущего преобразования в память XRAM. Этот источник прерыванияможно разрешить/запретить с помощью бита разрешения предупреждения о переполнении данных(DMA0CN.2, DMA0DOE).5. Флаг предупреждения о переполнении данных от АЦП0 (DMA0CN.0, DMA0DO0)устанавливается в том случае, если данные от АЦП0 становятся доступными, а DMA еще незаписал результат предыдущего преобразования в память XRAM. Этот источник прерыванияможно разрешить/запретить с помощью бита разрешения предупреждения о переполнении данных(DMA0CN.2, DMA0DOE).6.
Флаг переполнения счетчика повторений (DMA0CF.2, DMA0CI) устанавливается в том случае,если содержимое счетчика повторений достигнет границы счетчика повторений. Этот источникпрерывания можно разрешить/запретить с помощью бита разрешения прерывания отпереполнения счетчика повторений (DMA0CF.3, DMA0CIE).7. Флаг окончания операции (DMA0CF.0, DMA0EO) устанавливается в том случае, если в буферекоманд достигнута команда «окончание операции».
Этот источник прерывания можноразрешить/запретить с помощью бита разрешения прерывания при окончании операции(DMA0CF.1, DMA0EOE).6.7. Предупреждения и ошибки при переполнении буфера данных.Тракт передачи данных от модулей АЦП с помощью интерфейса DMA в память XRAM имеет двойнуюбуферизацию. Когда модуль АЦП завершает преобразование, результат преобразования сначала загружается врегистры данных АЦП. Если буфер данных DMA пуст, то результаты преобразования АЦП будут немедленнозаписаны во внутренний буфер данных DMA, соответствующий этому АЦП.
Как только появится возможность,данные из буфера данных DMA будут записаны в память XRAM (см. раздел 6.3). Результаты преобразования изрегистров данных АЦП не копируются в буфер данных DMA до тех пор, пока данные из этого буфера не будутзаписаны в память XRAM. Если преобразование уже завершено, а буфер данных DMA еще не пуст, тоустанавливается флаг предупреждения о переполнении. Если результаты второго преобразования станутдоступны прежде, чем данные из буфера данных DMA будут записаны в память XRAM, то данные в регистрахданных АЦП переписываются новым словом данных и устанавливается флаг ошибки переполнения данных.79Ред.
1.2C8051F060/1/2/3/4/5/6/7Рисунок 6.4. DMA0CN: Регистр управления DMA0R/WR/WR/WR/WR/WR/WR/WR/WDMA0EN DMA0INT DMA0MD DMA0DE1 DMA0DE0 DMA0DOE DMA0DO1 DMA0DO0Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Значениепри сбросе:00000000Бит 0SFR Адрес: 0xD8(доступен в битовом SFR страница: 3режиме адресации)Bit7:DMA0EN: Бит включения DMA0.Запись:0: Остановка операций DMA0.1: Начало операций DMA0.Чтение:0: DMA0 находится в состоянии простоя.1: Происходит выполнение операций DMA0.Бит 6: DMA0INT: Флаг завершения операций DMA0.0: DMA0 не завершил выполнение своих операций.1: Выполнение операций DMA0 завершено. Этот бит должен быть сброшен программно.Бит 5: DMA0MD: Выбор режима DMA0.0: DMA0 будет функционировать в режиме 0.1: DMA0 будет функционировать в режиме 1.Бит 4: DMA0DE1: Флаг ошибки переполнения данных от АЦП1.0: Переполнение данных от АЦП1 не зафиксировано.1: Произошло переполнение данных от АЦП1 и результат преобразования АЦП1 был потерян.
Этотбит должен быть сброшен программно.Бит 3: DMA0DE0: Флаг ошибки переполнения данных от АЦП0.0: Переполнение данных от АЦП0 не зафиксировано.1: Произошло переполнение данных от АЦП0 и результат преобразования АЦП0 был потерян. Этотбит должен быть сброшен программно.Бит 2: DMA0DOE: Бит разрешения прерывания от флагов предупреждения о переполнении данных.0: Прерывания от флагов предупреждения о переполнении данных запрещены.1: Прерывания от флагов предупреждения о переполнении данных разрешены.Бит 1: DMA0DO1: Флаг предупреждения о переполнении данных от АЦП1.0: Нет предупреждения о переполнении буфера данных АЦП1.1: Буфер данных АЦП1 полон, а DMA еще не переписал предыдущие данные в память XRAM.
Этотбит должен быть сброшен программно.Бит 0: DMA0DO0: Флаг предупреждения о переполнении данных от АЦП0.0: Нет предупреждения о переполнении буфера данных АЦП0.1: Буфер данных АЦП0 полон, а DMA еще не переписал предыдущие данные в память XRAM. Этотбит должен быть сброшен программно.Ред.
1.280C8051F060/1/2/3/4/5/6/7Рисунок 6.5. DMA0CF: Регистр конфигурации DMA0R/WRDMA0HLT DMA0XBYБит 7Бит 6R/WБит 5R/WБит 4R/WDMA0CIEБит 3R/WR/WR/WDMA0CI DMA0EOE DMA0EOБит 2Бит 1Значениепри сбросе:00000000Бит 0SFR Адрес: 0xF8(доступен в битовом SFR страница: 3режиме адресации)Bit7:DMA0HLT: Бит управления доступом к внешней памяти XRAM (только C8051F060/2/4/6).0: DMA0 имеет полный доступ к внешней памяти XRAM.1: Процессорное ядро имеет полный доступ к внешней памяти XRAM. DMA0 будет записыватьданные в ячейки внешней памяти XRAM только после сброса этого бита в 0.Бит 6: DMA0XBY: Флаг занятости внешней памяти XRAM (только C8051F060/2/4/6).0: DMA0 не выполняет никаких операций с внешней памятью XRAM.1: DMA0 выполняет операции записи данных во внешнюю память XRAM.Биты 5-4: Зарезервированы: необходимо записать 00b.Бит 3: DMA0CIE: Разрешение прерываний от переполнения счетчика повторений.0: Прерывания от переполнения счетчика повторений запрещены.1: Прерывания от переполнения счетчика повторений разрешены.Бит 2: DMA0CI: Флаг переполнения счетчика повторений.0: Переполнение счетчика повторений не зафиксировано.1: Произошло переполнение счетчика повторений.