Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

DMA контроллер XMEGA182A3

Отправлено F8 (193.254.233.230) 09 июля 2010, г. 17:04


Вопрос по контроллеру DMA в xmega128A3.
Мне нужно по Event 0 данные из регистра IN порта записывать в циклический буфер размером в 16 байт. Контороллер конфигурирую так:

//DMA Configuration
DMA_CTRL = (1<<DMA_RESET_bp);
DMA_CH0_CTRLA = (1<<DMA_CH_RESET_bp);

DMA_CH0_CTRLB = (0<<DMA_CH_ERRINTLVL_gp)|(3<<DMA_CH_TRNINTLVL_gp);
//ERRINTLVL - OFF; TRNINTLVL - high

DMA_CH0_ADDRCTRL = (2<<DMA_CH_SRCRELOAD_gp)|(1<<DMA_CH_SRCDIR_gp)|
(1<<DMA_CH_DESTRELOAD_gp)|(1<<DMA_CH_DESTDIR_gp);
//SRCRELOAD - BURST; SRCDIR - INC; DESTRELOAD - BLOCK; DESTDIR - INC

DMA_CH0_TRIGSRC = DMA_CH_TRIGSRC_EVSYS_CH0_gc;
//Запуск от события 0

DMA_CH0_TRFCNT = 16;//Размер блока - 0
DMA_CH0_REPCNT = 0; //Кол-во повторов - неограничено

DMA_CH0_SRCADDR0 = (unsigned long)SR_ADDR & 0xFF;
DMA_CH0_SRCADDR1 = ((unsigned long)SR_ADDR>>8) & 0xFF;
DMA_CH0_SRCADDR2 = ((unsigned long)SR_ADDR>>16) & 0xFF;

DMA_CH0_DESTADDR0 = (unsigned long)DataBuffer & 0xFF;
DMA_CH0_DESTADDR1 = ((unsigned long)DataBuffer >> 8) & 0xFF;
DMA_CH0_DESTADDR2 = ((unsigned long)DataBuffer >> 16) & 0xFF;

DMA_CH0_CTRLA = (1<<DMA_CH_ENABLE_bp)|//Enable DMA chanal 0
(1<<DMA_CH_REPEAT_bp)|//Repeat ON
(0<<DMA_CH_TRFREQ_bp)|//TRFRE - OFF
(1<<DMA_CH_SINGLE_bp)|//Single Shot Data transfer - ON
(0<<DMA_CH_BURSTLEN_gp); //BURSTLEN - 1byte

DMA_CTRL = (1<<DMA_ENABLE_bp)|(1<<DMA_DBUFMODE_gp)|(3<<DMA_PRIMODE_gp);

В результате получается, что после передачи каждого блока, когда TRFCNT доходит до 0, сбрасывается бит ENABLE в регистре CH0_CTRLA.
!!! Поскольку отлаживать в железе пока нет возможности то пытаюсь отлаживать в симуляторе avrstudio(что симуляторы - зло знаю :)). Вопрос собственно в том Enable сбрасывается и в реальности или это глюк симулятора? Или с настройками контроллера что-то не так,
Ссылка: http://electronix.ru/forum/index.php?showtopic=52718&st=315#entry783160

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите 2 и 3:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru