Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Разное » DMA Bascom Avr


DMA Bascom Avr

Сообщений 1 страница 13 из 13

1

Перевод:
Исходник - http://avrhelp.mcselec.com/index.html?config_dmachx.htm

Действия:
Настраивает канал прямого доступа к памяти (DMA) в XMEGA.

Синтаксис:
CONFIG DMACHx=enabled|disabled,BURSTLEN=bl, CHANRPT=chrpt, CTR=ctr, SINGLESHOT=ss, TCI=tci, EIL=eil,SAR=sar, SAM=sam,DAR=dar,DAM=dam, TRIGGER,trig, BTC=btc, REPEAT=rpt,SADR=sadr, DADR=dadr

Описание:

Для того чтобы понять различные варианты лучше, мы сначала лучше посмотреть на DMA.
Обычно, когда вы хотите передать данные, процессор должен выполнить ряд операций.
BASCOM MEMCOPY, например, будет использовать процессорные инструкции, как load data) и ST(store data) в цикле.
Если вы хотите, чтобы очистить 32KB памяти вам нужно, по крайней мере 32 K инструкции. Это приведет к потере времени, и все это время процессор не может обрабатывать другие задачи.
В ПК, вы не хотите использовать процессор будет занят при загрузке файла с диска. Контроллер DMA будет справиться с этим. Он может перемещать блоки памяти между устройствами.
Вы также можете отправить, например, массив в SRAM к USART по DMA, так что процессор не будет занят обработки передачи из массива в USART. Смотрите также пример, приведенный ниже.
Существует также пример получить байты через USART к SRAM в / папок Баском-AVR образцов.
Перед CONFIG DMACHx может быть использована вам нужно использовать Config (CONFIG_DMA)

DMA Transaction (DMA транзакции)
Полный DMA читать и операции между памятью и / или периферийных устройств писать называется транзакция DMA.
Операция выполняется в блоках данных и размер сделки (количество байт для передачи) выбирается из программного обеспечения и контролируется размером блока и повторить счетчик
Настройки. Каждый перевод блок разделен на более мелкие всплески

Block Transfer and Repeat (Блок Передача и Повторить)
Размер блока передачи устанавливается с помощью блока Transfer Count Register, и может быть что угодно, от 1 байта до 64 Кбайт.
Повторный счетчик может быть включен, чтобы установить количество повторных передач блока до того, как сделка завершена. Повтор от 1 до 255 и неограниченное число повторений может быть достигнуто путем
установив счетчик повторов в ноль.

Burst Transfer (Выброс Transfer)
По мере того как процессор AVR и контроллер DMA, используют одни и те же шины данных, передача блок разделен на более мелкие переводы лопнувших. Пакетной передачи выбирается в 1, 2, 4 или 8 байт.
Это означает, что, если DMA получает шину данных и запрос на передачу в очереди он будет занимать шину до тех пор, все байты в пакетной передачи не передается.
А шины управления арбитром, когда контроллер DMA и AVR CPU может использовать шину. Процессор всегда имеет приоритет, поэтому до тех пор, как доступ запроса процессора к шине, все ожидающие пакетной передачи
должны ждать. Запрашивает доступ шины CPU, когда он выполняет инструкцию, писать или читать данные в SRAM, памяти ввода / вывода, EEPROM и интерфейс шины внешний.

http://avrhelp.mcselec.com/dma.jpg

DMACHx

Есть 4 DMA каналов пронумерованных 0-3. По умолчанию эти DMA каналы отключены. Используйте ВКЛЮЧЕНО, чтобы включить канал.

bl

BURSTLEN
Каждый канал DMA имеет внутренний буфер передачи, который используется для 2, 4 и 8 байт лопнуть передач.
Когда передача запускается, канал DMA будет ждать, пока буфер передачи не содержит два байта до начала передачи. Для 4 или 8 байт передачи, любые оставшиеся байты передаются, как только они будут готовы для канала DMA. Буфер используется для сокращения времени контроллер DMA занять шину.
 
Опции :
- 1: Режим серийной съемки 1 байт
- 2: режим серийной съемки 2 байта
- 4: режим серийной съемки 4 байта
- 8: Режим серийной съемки 8 байт

chanrpt

Повтор канала
Установка этого бита включает режим повтора. В повторном режиме этот бит сбрасывается аппаратно в начале последней передачи блока. Регистр REPCNT должен быть настроен перед установкой бита REPEAT. При использовании команды CONFIG, компилятор будет обрабатывать это.
Опции :
Enabled: включено режим повтора
Disabled: режим выключен повтор

ctr

Запрос Передача DMA канала
Установка этого бита запрашивает передачу данных на DMA канал. Этот бит автоматически сбрасывается в начале передачи данных,
Опции :
Enabled: передача запроса

ss

Канал DMA Single Кадр передачи данных
Установка этого бита включает режим одного выстрела. Канал будет затем сделать пакетной передачи BL байт на спусковой крючок передачи. Этот бит не может быть изменен, если канал занят.
Опции :
Enabled: включить режим SS.

tci

DMA канала транзакции Complete уровень прерывания
Прерывание может быть выключен, или быть дан pritoriy LO, MED или HI

eil

Ошибка DMA канала Уровень прерывания
Прерывание может быть выключен, или быть дан pritoriy LO, MED или HI

sar

Адрес источника Перезагрузить
Адрес источника канала может быть перезагружен следующим образом:
NONE : перезарядка не выполняется.
BLOCK: DMA исходный регистр адреса перезагружается с начальным значением в конце
          каждый блок передачи.
Burst: DMA исходный регистр адреса перезагружается с начальным значением в конце
           каждый пакетный сигнал передачи.
TRANSACTION : DMA исходный регистр адреса перезагружается с начальным значением в
                     конец каждой сделки.

sam

Источник адрес Режим
Адрес может быть изменен следующим образом:
FIXED: адрес остается прежним.
INC : Адрес увеличивается на единицу
DEC :Адрес уменьшается на единицу
Если вы хотите записать в порт, например, чтобы создать волну, вы бы выбрали FIXED. Но если вы хотите, чтобы переместить блок памяти, вы хотите использовать INC поэтому адрес источника увеличивается после каждого байта.

dar

Канал Адрес назначения Reload
Адрес канала судьба может быть перезагружен следующим образом:
NONE : перезарядка не выполняется.
BLOCK : DMA судьба адрес регистра перезагружается с начальным значением в конце
          каждый блок передачи.
BURST : DMA судьба адрес регистра перезагружается с начальным значением в конце
           каждый пакетный сигнал передачи.
TRANSACTION : DMA судьба адрес регистра перезагружается с начальным значением в
                     конец каждой сделки.

dam

Судьба Mode Адрес
Адрес может быть изменен следующим образом:
FIXED: адрес остается прежним.
INC : Адрес увеличивается на единицу
DEC : Адрес уменьшается на единицу
Если вы хотите записать в порт, например, чтобы создать волну, вы бы выбрали FIXED. Но если вы хотите, чтобы переместить блок памяти, вы хотите использовать INC поэтому адрес источника увеличивается после каждого байта. В случае массива байт, который будет начинаться с массива (1) и следующий байт будет массив (2), которые будут переданы и так далее.
вызывать.

trigger

Выбор источника
Спусковой выбрано какое устройство инициирует передачу DMA. Ноль (0) отключает триггер. Вы можете начать ручной передачи данных с утверждением START DMACHx.
Вы можете найти значения триггера аппаратного обеспечения в техническом описании.
Например, EVENTSYS канал 0 будет 1. А EVENSTYS канал 1 будет 1. В случае, например в таком USART вам нужно добавить базовое значение и добавить смещение.
Пример:
Базовое значение для USARTC0 является & H4b
Смещение для (RXC) получение полной и является H00
Смещение для (DRE) Регистр данных Пустой является & H01
 
Поэтому, когда вы хотите использовать DRE триггер & H4b + & H01 = & H4C

btc

Блок Transfer Count
BTC представляет собой 16-битное значение TRFCNT. Что также означает, что максимальное значение 64Kbyte. TRFCNT определяет количество байтов в блоке передачи. Значение TRFCNT уменьшается после каждого байта, считанного канала DMA. Когда TRFCNT достигает нуля, регистр перезагружается с последним значением написанного на него.
Когда повтор 1, это общее количество байт для отправки в транзакции DMA.

repeat

Повторите регистра счетчика
REPCNTcounts сколько раз выполняется передача блока. Для каждого блока передачи этот регистр будет удержана. Неограниченный повтор активируется установкой этого регистра 0.

sadr

Адрес источника
Это адрес источника DMA. Например, адрес переменной. Или адрес регистра. Используйте VarPtr (), чтобы найти адрес переменной.
Например, если адрес источника является массивом:
sadr = varptr(ar(1))
Например, если адрес источника представляет собой аппаратный адрес, как от USART:
sadr = Varptr(usarte0_data)
 
или ADC A Channel 0:
Sadr = Varptr(adca_ch0_res)

dadr

Адрес назначения
Судьба адрес.
Это может быть также, например, массив в SRAM:
dadr = varptr(dest(1))
Это может быть также, например, аппаратный регресса как USART:
Dadr = Varptr(usarte0_data)
или, например, для DAC B канала 0:
Dadr = Varptr(dacb_ch0datal)

После того, как вы настроили канал DMA, вы можете начать передачу с утверждением START DMACHx.
Это будет записывать TRFREQ bit в регистре CtrlA.
 
Установка TRFREQ Bit (DMA Channel Transfer Request) запрашивает передачу DATA TRANSFER по каналу DMA.
Установка этого бита запрашивает передачу данных на DMA канал. Этот бит автоматически очищается при
начало передачи данных.
 
 
Чтобы включить DMA канала необходимо установить Dma_chX_ctrla.7 bit.
Например, для DMA Channel 0 устанавливается Dma_ch0_ctrla.7
Установка этого бита позволяет канал DMA. Этот бит автоматически очищается, когда сделка
выполнен.

Пример (копия SRAM массив другому SRAM массив над DMA):

Код:
'----------------------------------------------------------------
'                  (c) 1995-2011, MCS
'                   xm128A1-DMA.bas
'  Этот пример демонстрирует DMA с Xmega128A1
'-----------------------------------------------------------------
$regfile = "xm128a1def.dat"
$crystal = 32000000
$hwstack = 64
$swstack = 40
$framesize = 40
 
'first enable the osc of your choice
Config Osc = Enabled , 32mhzosc = Enabled        'configure the systemclock
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
Config Com1 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
 
dim ar(100) as byte, dest(100) as byte,j as byte ,w as word
 
for j=1 to 100
 ar(j)=j ' создать массив и присвоить значение
next
 
print "DMA DEMO"
config dma= enabled, doublebuf=disabled,cpm = RR ' enable DMA
 
'вы можете сконфигурировать 4 DMA каналов
config dmach0=enabled ,burstlen=8,chanrpt=enabled, tci=off,eil=off, sar=none,sam=inc,dar=none,dam=inc ,trigger=0,btc=100 ,repeat =1,sadr=varptr(ar(1)),dadr=varptr(dest(1))
 
start dmach0 ' его будет делать передачу ручной / программное обеспечение DMA, когда триггер <> 0 вы можете использовать аппаратное событие в качестве источника синхронизации
 
for j=1 to 50
print j;"-";ar(j);"-";dest(j) ' print the values
next
end

Пример (отправить массив в USART над DMA):

Код:
 
'Терминал Вывод следующий пример:
'(
 
----- Array to USART over DMA -----
 
Hello Bascom
Hello  XMEGA
 
')
 
$regfile = "xm128a1def.dat"
$crystal = 32000000
$hwstack = 64
$swstack = 40
$framesize = 40
 
 
'first enable the osc of your choice
Config Osc = Enabled , 32mhzosc = Enabled
'configure the systemclock
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
Config Priority = Static , Vector = Application , Lo = Enabled
 
' DMA прерывание
On Dma_ch0 Dma_ch0_int
'Прерывание будет включена  Tci = XX in Config DMAX
 
Config Com5 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
Open "COM5:" For Binary As #5
 
Dim My_array(15) As Byte
Dim My_string As String * 14 At My_array(1) Overlay
Dim Dma_ready As Bit
Dim Dma_channel_0_error As Bit
 
Enable_dmach0 Alias Dma_ch0_ctrla.7                         'Enable DMA Channel 0
 
Print #5 ,
Print #5 , "----- Array to USART over DMA -----"
Print #5 ,
Config Dma = Enabled , Doublebuf = Disabled , Cpm = Rr     ' enable DMA
'настроить канал DMA
Config Dmach0 = Disabled , Burstlen = 1 , Chanrpt = Disabled , Tci = Lo , Eil = Off , Singleshot = Enabled , Sar = Transaction , _
Sam = Inc , Dar = None , Dam = Fixed , Trigger = &H8C , Btc = 14 , Repeat = 0 , Sadr = Varptr(my_array(1)) , Dadr = Varptr(usarte0_data)
' BURSTLEN = 1
' Tci = Lo , Eil = Off --> включить ТРУДЫЫ прерывания по завершению
' Singleshot = Enabled -->Установка этого бита включает режим одного выстрела.
' Канал будет затем сделать пакетной передачи BL байт на спусковой тригер передачи.
' SAR (Source Address Reload) = После каждой сделки
' SAM  = inc --> адрес источника увеличивается после каждого байта
' DAR =  NONE --> Не выгружать не выполняется
' DAM (Destiny Address Mode) --> Fixed --> Адрес остается тем же самым
' Trigger = &H8C --> Base Value of USARTE0 = &H8B + Offset for DRE (Data Register Empty)= 1 --> &H8C
' BTC = 14 -->  Блок Transfer Count 14 байт
' Мы начинаем с Dmach0 = Disabled --> будет включен, когда нам это нужно
 
' Start dmach0 --> установит TR FREQ Bit ( DMA Channel Transfer Request).
' Установка этого бита запрашивает передачу данных по каналу DMA.
 
' Мы используем здесь dmach0 Alias Dma_ch0_ctrla.7 Этот бит автоматически очищается, когда DMA передача (операция) завершена
 
Enable Interrupts
My_string = "Hello Bascom" + Chr(13) + Chr(10)             ' Hello Bascom + Carriage Return + Line Feed
 
Set Enable_dmach0                                           ' Enable the DMA Channel 0 (Этот бит автоматически создается при операция завершена)
 
Bitwait Dma_ready , Set                                     ' Подождите, пока первая транзакция DMA не готова(DMA TRANSACTION COMPLETE Interrupt)
Reset Dma_ready
 
My_string = "Hello  XMEGA" + Chr(13) + Chr(10)
 
Set Enable_dmach0                                           ' Enable the DMA Channel 0 (Этот бит автоматически создается при операция завершена)
 
End
 
'----------[Подпрограммы обслуживания прерываний]-----------------------------------------
 
' Dma_ch0_int is for DMA Channel ERROR Interrupt A N D for TRANSACTION COMPLETE Interrupt
' Какие прерывания уволил должны быть проверены в процедуре обслуживания прерывания
 
Dma_ch0_int:                                               ' DMA Transaction complete
 
If Dma_intflags.0 = 1 Then                               ' Channel 0 Transaction Interrupt Flag
    Set Dma_intflags.0                                     ' Clear the Channel 0 Transaction Complete flag
    Set Dma_ready
End If
 
'(
If Dma_intflags.4 = 1 Then                                    ' Channel 0 ERROR Flag
  Set Dma_intflags.4                                      ' Clear the flag
  Set Dma_channel_0_error                                 ' Channel 0 Error
End If
')
 
Return

+2

2

Ну как я понимаю, чтобы из RAM МК данные начать передавать в SPI, нужно в настройку "Dadr", вписать нечто подобное "Dadr = Varptr(SPIC_data)", адрес канала SPI.

0

3

RDW написал(а):

... адрес канала SPI.

Есть информация по адресам, источник -www.radioradar.net

Источник запуска

База

Разряд TRFREQ регистра CTRLA

000H

Система событий

001H

АЦП А

010H

ЦАП А

015Н

АЦП В

020H

ЦАП В

025Н

Таймер-счетчик СО

040Н

Таймер-счетчик С1

046Н

SPI порта С

04AH

USART С0

04ВН

USART С1

04ЕН

Таймер-счетчик D0

060Н

Таймер-счетчик D1

066Н

SPI порта D

06АН

USART D0

06ВH

USART Dl

06ЕН

Таймер-счетчик Е0

080Н

Таймер-счетчик Е1

086 Н

SPI порта Е

08АН

USART Е0

08ВН

USART Е1

08ЕН

Таймер-счетчик F0

0A0H

Таймер-счетчик F1

0А6Н

SPI порта F

0AAH

USART F0

0АВН

USART F1

0AЕН

Не могу представить в голове весь механизм DMA в Xmega, блок сехм с регистрами не найду.

0

4

Возьми для примера работу с УАРТ, проверь, что он работает.
Пока будешь его запускать, может придет понимание его работы.
Далее двигайся в сторону SPI.

0

5

Может пригодится Подборка из журналов Радио о микроконтроллерах ATxmega в среде Bascom
Там и DMA есть.

0

6

Чуть перевода из Datasheet AtXmega256A3

Свернутый текст

http://avrhelp.mcselec.com/atxmega128.png

СУДС - контроллер прямого доступа памяти

5.1 Особенности
• Позволяет высокую скорость передачи данных с минимальным вмешательством ЦП
- Из памяти данных в память данных
- Из памяти данных в периферийное
- От периферийного устройства в память данных
- От периферии периферического
• Четыре DMA канала с раздельными
- передача спусковые
- векторы прерываний
- режимы адресации
• приоритет Программируемый канал
• С 1 байта до 16 МБ данных в одной транзакции
- До 64К блоке передачи с повторением
- 1, 2, 4 или 8 байт лопнуть переводы
• Несколько режимов адресации
- Статический
- Инкрементальный
- декрементной
• Дополнительный перегрузите адресов источника и назначения в конце каждого
- Пакетная
- Блок
- сделка
• Дополнительное прерывание по завершению сделки

5.2 Обзор
Четыре канала прямого доступа к памяти (DMA) контроллер может передавать данные между ячейками памяти и периферийных устройств, и, таким образом,
от загрузки этих задач из ЦП. Это обеспечивает высокую скорость передачи данных с минимальным вмешательством процессора, и освобождает центральный процессор
время. Четыре DMA каналы позволяют до четырех независимых и параллельных переводов.
Контроллер DMA может перемещать данные между SRAM и периферийных устройств, между пунктами SRAM и непосредственно между
периферийные регистры. Имея доступ ко всем периферийных устройств, контроллер DMA может обрабатывать автоматическую передачу данных в / из
коммуникационные модули. Контроллер DMA также может считывать из памяти EEPROM отображается.
Передача данных выполняются в непрерывных всплесками 1, 2, 4 или 8 байт. Они строят блок трансферы из настраиваемым размером от 1
байт 64 Кбайт. Повторный счетчик может быть использован, чтобы повторить каждую передачу блока для разовых сделок до 16MB. Источник и
назначения адресации может быть статическим, инкрементный или декрементное. Автоматическая перезагрузка источника и / или назначения
адреса может быть сделано после каждого разрыва или блок передачи, или когда сделка завершена. Программное обеспечение,
периферийные устройства, и события могут вызвать переводы DMA.
Четыре DMA каналы имеют индивидуальные настройки конфигурации и управления. Это включает источник, место назначения, передачи
триггеры и размеры транзакций. Они имеют индивидуальные настройки прерываний. Запросы прерываний могут быть получены, когда
сделка завершена или когда контроллер DMA обнаруживает ошибку на канале DMA.
Для обеспечения непрерывных передач, два канала могут быть связаны между собой таким образом, что второй берет на себя передачу, когда
первый закончен, и наоборот.
http://s1.uploads.ru/t/cVCyb.jpg

5.3 DMA транзакции
Полный DMA читать и операции между памятью и / или периферийных устройств писать называется транзакция DMA.
транзакция выполняется в блоках данных, а размер сделки (количество байт для передачи) выбирается из
Программное обеспечение и контролируется размер блока и повторите счетчик настроек. Каждый перевод блок разделен на более мелкие всплески.
5.3.1 Блок Передача и Повторить
Размер блока передачи устанавливается блок переноса счета регистра, и может быть что угодно, от 1 байта до 64 Кбайт.
Повторный счетчик может быть включен, чтобы установить количество повторных передач блока до того, как сделка завершена.
повтор от 1 до 255, и неограниченное число повторений может быть достигнуто путем установки счетчика повторений до нуля.

5.3.2 Серийн.съемк Transfer
Так как процессор AVR и контроллер DMA используют одни и те же шины данных, передача блок разделен на более мелкие передачи пакетных.
Пакетной передачи выбирается в 1, 2, 4 или 8 байт. Это означает, что, если DMA приобретает шины данных и передачи
запрос находится на рассмотрении, он будет занимать шину, пока все байты пакета не передаются.
А шины управления арбитром, когда контроллер DMA и AVR CPU может использовать шину. Процессор всегда имеет приоритет, и поэтому
до тех пор, как запросы CPU доступ к шине, любой очереди пакетной передачи должны ждать. Запрашивает доступ шины CPU
когда он выполняет инструкцию, которая записывает или считывает данные в SRAM, памяти ввода / вывода, EEPROM или внешний интерфейс шины.
Для получения более подробной информации о арбитража шины доступа к памяти, обратитесь к разделу "Память данных" на странице 21.
http://sg.uploads.ru/t/EdnNw.jpg

5.4 Передача Триггеры
переводы DMA может быть запущен только при получении запроса на перенос DMA обнаружен. Запрос передачи данных может быть вызвана из
программное обеспечение, от внешнего источника синхронизации (периферического), или от случая. Есть специализированные запуска источника выборки для
каждый канал DMA. Доступные источники запуска может изменяться от одного устройства к другому, в зависимости от модулей или
периферийные устройства, которые существуют в устройстве. Использование триггера передачи для модуля или периферийных устройств, которые не существует не будет иметь
эффект. Для получения списка всех триггеров передачи, обратитесь к разделу "TRIGSRC - триггер регистра источника" на стр 59.
По умолчанию, триггер запускает операцию передачи блока. Когда передача блока завершена, канал автоматически
отключен. Когда снова включен, канал будет ждать следующего триггера переноса блока. Можно выбрать триггер
начать пакетной передачи вместо передачи блока. Это называется передачи одного выстрела, так и для каждого триггера только один всплеск
переданы. Если режим повтора включен, следующая передача блока не требует триггера передачи. Она начнется, как только
как предыдущий блок делается.
Если источник сигнала запуска генерирует запрос на передачу во время продолжающегося переноса, это будет отложено, и передача
может начаться, когда постоянный характер делается. Только один отложенный перевод может быть сохранена, и поэтому, если источник сигнала запуска генерирует
больше запросов на передачу, когда один уже находится в ожидании, они будут потеряны.

5.5 Решение проблемы
Адреса источника и назначения для передачи DMA может либо быть статическим или автоматически увеличивается или
декрементируется, с индивидуальными для выбора источника и назначения. Когда адрес увеличения или уменьшения значения используется, то
поведение по умолчанию, чтобы обновить адрес после каждого доступа. Исходные адреса источника и назначения сохраняются
контроллером DMA, и поэтому адреса источника и назначения могут быть индивидуально настроены быть перезагружена на
следующие пункты:
 Конец каждого пакета передачи
 Конец каждой передачи блока
 Окончание сделки
 Никогда не перезагружается

5.6 Приоритет между каналами
При наличии нескольких каналов запросить передачу данных, в то же время, схема приоритетов можно определить, какой канал
разрешено передавать данные. Прикладное программное обеспечение может решить, следует ли один или несколько каналов имеют фиксированный приоритет, или если
круглая схема ласточкой должна быть использована. Круглая схема ласточкой означает, что канал, который в прошлом передаваемые данные будут иметь
самый низкий приоритет.

5.7 Двойная буферизация
Для обеспечения непрерывной передачи, два канала могут быть связаны между собой таким образом, что второй берет на себя передачу, когда первый
закончена, и наоборот. Это оставляет время для приложения, чтобы обработать данные, передаваемые по первому каналу,
подготовка новых буферов данных, а также настроить регистры каналов снова в то время как второй канал работает. Это называется
как двойной буферизации или прикованных передач.
Когда двойная буферизация включена для пары каналов, то важно, чтобы два канала сконфигурированы с одинаковым
повторите подсчет. Размер блока данных может не быть равным, но для большинства приложений они должны быть, вместе с остальной частью
Настройки режима работы канала.
Обратите внимание, что пары двойной буферизации каналов ограничены каналами 0 и 1 в качестве первой пары и каналов 2 и 3 в качестве
вторая пара. Тем не менее, можно иметь одну пару работать в режиме двойной буферизации, а другой не используется или
работающих независимо друг от друга.

5.8 Передача Буфера
Для того, чтобы избежать ненужной загрузки шины при выполнении передачи данных между памятью с разным временем доступа (для
Например, регистр ввода / вывода и внешняя память), контроллер DMA имеет буфер четыре байта. Два байта будут считаны из
адрес источника и записываются в этот буфер перед записью в пункт назначения запускается.

Обнаружение 5.9 Ошибка
Контроллер DMA может обнаружить ошибочное срабатывание. Условия возникновения ошибок обнаруживаются индивидуально для каждого канала DMA,
и условия ошибки:
 записи в память EEPROM отображаются места
 Чтение EEPROM, когда EEPROM выключен (спящий режим введен)
 контроллер DMA или занятый канал отключен в программном обеспечении во время передачи

5.10 Программный сброс
Оба контроллера DMA и канал DMA может быть сброшен с помощью программного обеспечения пользователя. Когда контроллер DMA сбрасывается, все
регистры, связанные с контроллером DMA, в том числе каналы, очищаются. Сброс программного обеспечения может быть сделано только тогда, когда
контроллер DMA отключен.
Когда канал DMA сбрасывается, все регистры, связанные с каналом DMA очищаются. Сброс программного обеспечения может быть сделано
только тогда, когда канал DMA отключается.

5.11 Защита
Для обеспечения безопасной работы, некоторые из регистров канала защищены во время транзакции. Когда DMA
канал занят флаг (CHnBUSY) устанавливается для канала, пользователь может изменять только следующие регистры и биты:
 CTRL register
 INTFLAGS register
 TEMP registers
 CHEN, CHRST, TRFREQ, and REPEAT и повторяющуюся биты канала CTRL register
 TRIGSRC register

5,12 Interrupts
Контроллер DMA может генерировать прерывания при обнаружении ошибки на канале DMA или если транзакция
завершить для канала DMA. Каждый канал DMA имеет отдельный вектор прерывания, и существуют различные флаги прерываний
за ошибки и транзакции полной.
Если повтор не включена, то флаг завершения транзакции устанавливается в конце передачи блока. Если неограниченное повторение включена,
полный флаг транзакции также устанавливается в конце каждой передачи блока.

5.13 Register Description – DMA Controller

5.13.1 CTRL – Control register

http://s4.uploads.ru/t/cvEt0.jpg

Бит 7 - АКТИВЕН:
Установка этого бита позволяет контроллеру DMA. Если контроллер DMA включен и этот бит записывается в ноль, бит разрешения
не очищается до внутреннего буфера передачи пуст, и передача данных DMA прервана.
 Бит 6 - СБРОС: Перезапуск программного обеспечения
Дать один для сброса будет игнорироваться, пока включен DMA (ВКЛЮЧИТЬ = 1). Этот бит может быть установлен только тогда, когда DMA
контроллер отключен (Enable = 0).
 Бит 5: 4 - Зарезервировано
Эти биты не используются и зарезервированы для использования в будущем. Для совместимости с будущими устройствами, всегда пишу эти биты к нулю
когда этот регистр записывается.
 Бит 3: 2 - DBUFMODE [1: 0]: Режим Double Buffer
Эти биты позволяют двойной буфер по различным каналам в соответствии с таблицей 5-1.

http://sg.uploads.ru/t/P1se2.jpg

Бит 1: 0 - PRIMODE [1: 0]: Режим приоритетного канала
Эти биты определяют приоритет внутреннего канала в соответствии с таблицей 5-2

http://s6.uploads.ru/t/8HrLa.jpg

5.13.2 INTFLAGS - Прерывание регистра состояния

http://s7.uploads.ru/t/HlxKu.jpg

 Бит 7: 4 - CHnERRIF [3: 0]: Канал н Ошибка Флаг прерывания
Если условие обнаружена ошибка на DMA канала п, флаг CHnERRIF будет установлен. Дать один в этот бит месте будет очистить флаг.
 Бит 3: 0 - CHnTRNFIF [3: 0]: Канал п транзакции Флаг прерывания по завершению
Когда транзакция на канале п была завершена, то флаг CHnTRFIF будет установлен. Если счетчик неограниченное повтора
включен, этот флаг читается как один после передачи каждого блока. Дать один в этот бит месте очистит флаг.

5.13.3 STATUS - регистр состояния

http://s6.uploads.ru/t/dVusJ.jpg

 Бит 7: 4 - CHnBUSY [3: 0]: Канал Busy
Когда канал N начинает транзакцию DMA, флаг CHnBUSY будет читаться как единое целое. Этот флаг автоматически очищается при
канал DMA отключается, когда сделка завершена флаг прерывания канала п установлен, или если канал DMA н ошибки
Флаг прерывания устанавливается.
 Бит 3: 0 - CHnPEND [3: 0]: Канал В ожидании
Если передача блока ожидает от DMA канала п, флаг CHnPEND будет читаться как единое целое. Этот флаг автоматически сбрасывается
когда передача блока начинается или если передача прерывается.

5.13.4 TEMPL  - Временный регистр Низкий

http://s6.uploads.ru/t/0VHzh.jpg

 Бит 7: 0 - TEMP [7: 0]: Временные биты, младший байт
Этот регистр используется при чтении 16- и 24-разрядные регистры в контроллере DMA. Байт 1 16/24-битовый регистр сохраняется
здесь, когда она написана ЦП. Байт 1 16/24-битовый регистр сохраняется при байт 0 считывается процессором. Этот регистр
Также можно читать и записывать с помощью программного обеспечения пользователя.
Чтение и запись 16- и 24-разрядные регистры требует особого внимания. Для получения дополнительной информации обратитесь к разделу "Доступ к 16-битным регистрам"

5.13.5 TEMPH - Временный регистр высокого

http://s0.uploads.ru/t/VbtZa.jpg

 Бит 7: 0 - TEMP [15: 8]: Временные биты, старший байт
Этот регистр используется при чтении и записи 24-разрядные регистры в контроллере DMA. Байт 2 из 24-битного регистра хранится
когда она написана ЦП. Байт 2 из 24-битного регистра хранится здесь, когда байт 1 считывается процессором. Этот регистр
Также можно читать и записывать с помощью программного обеспечения пользователя.
Чтение и запись 24-разрядных регистров требует особого внимания. Для получения дополнительной информации обратитесь к разделу "Доступ к 16-битным регистрам" на странице
12.

5.14 Register Description – DMA Channel

5.14.1 CTRLA – Control register A

http://s4.uploads.ru/t/1DBl3.jpg

 Бит 7 - ENABLE: Включение канала
Установка этого бита позволяет канал DMA. Этот бит автоматически очищается, когда сделка будет завершена. Если в DMA
канал включен, и этот бит записывается нуль, то бит ЧЭНЬ не очищается, пока внутренний буфер передачи пуст и
передача DMA прерывается.
 Бит 6 - RESET: Перезапуск программного обеспечения
Установка этого бита сбросит канал DMA. Он может быть установлен только тогда, когда канал DMA отключен (CHEN = 0). Написание
один в этот бит будет игнорироваться до тех пор пока канал включен (ЧЭНЬ = 1). Этот бит автоматически очищается при сброса
завершено.
 Бит 5 - REPEAT: Режим повтора
Установка этого бита включает режим повтора. В повторном режиме этот бит сбрасывается аппаратно в начале последнего блока
перевод. Регистр REPCNT должен быть настроен перед установкой бита REPEAT.
 Бит 4 - TRFREQ: Transfer Request
Установка этого бита запрашивает передачу данных по каналу DMA. Этот бит автоматически сбрасывается в начале данных
перевод. Запись этого бита не имеет никакого эффекта, если канал не включен.
 Бит 3 - Зарезервировано
Этот бит не используется и зарезервирован для будущего использования. Для совместимости с будущими устройствами, всегда пишу этот бит к нулю, когда это
регистр записывается.
 Бит 2 - SINGLE: Single-Shot передачи данных
Установка этого бита включает режим однократного запуска. Канал тогда будет делать пакетной передачи BURSTLEN байт на
передача триггера. Запись в этот бит будет игнорироваться, пока канал включен.
Бит  1: 0 - BURSTLEN [1: 0]: Режим серийной съемки
Эти биты решают режим DMA канального пакета в соответствии с таблицей 5-3 на странице 57. Эти биты не могут быть изменены, если
Канал занят

http://s9.uploads.ru/t/PwZNY.jpg

5.14.2 CTRLB – Control register B

http://s9.uploads.ru/t/AVj4t.jpg

 Бит 7 - CHBUSY: Канал Busy
Когда канал DMA начинает транзакцию DMA, флаг CHBUSY будет читаться как единое целое. Этот флаг автоматически
очищается, когда канал DMA отключается, когда флаг завершения прерывания транзакции канала установлен или когда
флаг прерывания ошибки канала установлен.
 Бит 6 - CHPEND: Первый канал В ожидании
Если передача блока ожидает на канале DMA, флаг CHPEND будет читаться как единое целое. Этот флаг автоматически
очищается, когда передача начинается или если передача прерывается.
 Бит 5 - ERRIF: Ошибка Флаг прерывания
Если условие ошибки обнаруживается на канале DMA, флаг ERRIF будет установлен и дополнительный прерывание генерируется.
Поскольку прерывания акций ошибок канала DMA адрес прерывания с DMA канала п транзакции полной
прерывание, ERRIF не будет очищен, когда вектор прерывания выполняется. Этот флаг сброшен, написав один к этому
место нахождения.
 Бит 4 - TRNIF: Канал п Сделка Complete Флаг прерывания
Когда транзакция на канале DMA завершена, то флаг TRNIF будет установлен и опциональный прерывание
генерируется. Когда повторное воспроизведение не включена, то сделка будет завершена и TRNIFR устанавливается после передачи блока. когда
неограниченное повторение включена, TRNIF также устанавливается после каждой передачи блока.
Так как операции канала DMA п полных прерываний акций адреса прерывания с ошибкой канала DMA
прерывание, TRNIF не будет очищен, когда вектор прерывания выполняется. Этот флаг сброшен, написав один к этому
место нахождения.
 Бит 3: 2 - ERRINTLVL [1: 0]: Ошибка канала Уровень прерывания
Эти биты позволяют прерывание для ошибок передачи канала DMA и выбрать уровень прерывания, как описано в разделе "Прерывания
и программируемый многоуровневый контроллер прерываний "на стр 125. Включенное прерывание сработает для условий, когда
ERRIF устанавливается.
Бит  1: 0 - TRNINTLVL [1: 0]: Канал транзакции Complete Уровень прерывания
Эти биты позволяют прерывание для DMA транзакции канала завершается, и выбрать уровень прерывания, как описано в
"Прерывания и программируемый многоуровневый контроллер прерываний" на стр 125. Включенное прерывание сработает для
условия, при которых TRNIF устанавливается.

5.14.3 ADDRCTRL - Регистр управления Адрес

http://s3.uploads.ru/t/cr98O.jpg

 Бит 7: 6 - SRCRELOAD [1: 0]: Источник канала Адрес Reload
Эти биты решают исходный канал DMA адреса перезарядку в соответствии с таблицей 5-5. Запись в эти биты игнорируются в то время как
канал занят.

Таблица 5-5. DMA настройки адреса перезарядка источника канала.

http://s8.uploads.ru/t/KHi5x.jpg

 Бит 5: 4 - SRCDIR [1: 0]: Режим Source Channel Address
Эти биты решают режим адресации источника канала DMA в соответствии с таблицей 5-6. Эти биты не могут быть изменены, если
Канал занят.

Таблица 5-6. Настройки режима адреса источника канала DMA.

http://sf.uploads.ru/t/dQFwn.jpg

 Бит 3: 2 - DESTRELOAD [1: 0]: Канал Адрес назначения Reload
Эти биты решают DMA назначения адреса канала перезарядку в соответствии с таблицей 5-7. Эти биты не могут быть изменены, если
канал занят.
Таблица 5-7. Настройки перезарядка канала DMA адреса назначения

http://s6.uploads.ru/t/UYhFz.jpg

Бит  1: 0 - DESTDIR [1: 0]: Режим Адрес назначения канала
Эти биты решают режим адресации назначения канала DMA в соответствии с таблицей 5-8. Эти биты не могут быть изменены, если
канал занят.

Таблица 5-8. DMA настройки режима адреса назначения канала.

http://sa.uploads.ru/t/QDu9A.jpg

5.14.4 TRIGSRC - Источник запуска регистр

http://s6.uploads.ru/t/6ScUO.jpg

 Бит 7: 0 - TRIGSRC [7: 0]: Канал триггера Выбор источника
Эти биты определяют, какой триггер источник используется для инициирования передачи на канале DMA. Нулевое значение означает, что
источник сигнала запуска отключен. Для каждого источника синхронизации, значение поместить в регистр TRIGSRC является суммой модуля или
SRCDIR [1: 0] Конфигурация группы Описание
00 Fixed Фиксированные
01 INC Increment
10 декабря Decrement
11 - Зарезервировано
DESTRELOAD [1: 0] Конфигурация группы Описание
00 NONE Нет перезарядка не выполняется.
01 BLOCK адрес получателя DMA канала регистр перезагружается с начальным значением
в конце каждой передачи блока.
10 СЕРИЙН.СЪЕМК адрес назначения канала DMA регистр перезагружается с начальным значением
в конце каждой передачи пакета.
11 СДЕЛКИ адрес назначения канала DMA регистр перезагружается с начальным значением
в конце каждой транзакции.
DESTDIR [1: 0] Конфигурация группы Описание
00 Fixed Фиксированные
01 INC Increment
10 декабря Decrement
11 - Зарезервировано
Бит 7 6 5 4 3 2 1 0
+ 0x03 TRIGSRC [7: 0]
Чтение / запись R / W R / W R / W R / W R / W R / W R / W R / W
Начальное значение 0 0 0 0 0 0 0 0
XMEGA A [MANUAL] 60
8077I-AVR-11/2012
базовое значение периферического и значение смещения для источника запуска в модуле или периферийного устройства. Таблица 5-9 показывает базу
значение для всех модулей и периферийных устройств. Таблица 5-10 на стр 61 в таблице 5-13 на стр 61 показывает значение смещения для
Источники запуска в различных модулей и периферийных типов. Для модулей или периферийных устройств, которые не существуют для устройства,
спусковой механизм передачи не существует. Обратитесь к спецификации устройства для списка доступных периферийных устройств.
Если флаг прерывания, связанные с источником запуска будет сброшен, или включен уровень прерывания так, что прерывание срабатывает,
запрос DMA будет потеряна. Так как запрос DMA может сбросить флаг прерывания, прерывания могут быть потеряны.
Примечание: Для большинства источников запуска, запрос очищается путем доступа регистра, принадлежащего периферийная с
запрос. Обратитесь к различным периферийным главах, как запросы генерируются и очищается

Таблица 5-9. Базовые значения источника запуска DMA для всех модулей и периферийных устройств.

http://s7.uploads.ru/t/TjHKk.jpg

http://s8.uploads.ru/t/A9Qad.jpg

Таблица 5-10. DMA источник запуска значения смещения для системных событий триггеров.

http://se.uploads.ru/t/NMzUE.jpg

Tаблица 5-11. DMA источник синхронизации значения смещения для ЦАП и АЦП триггеров.

http://sg.uploads.ru/t/mBKVE.jpg

Примечания: 1. Для DAC только, канал 0 и 1 существует и может быть использован в качестве триггеров.
2. Канал 4 канала АЦП равна от 0 до 3 все вместе.

Таблица 5-12. DMA источник синхронизации значения смещения для таймера / счетчика триггеров.

http://s1.uploads.ru/t/Tg2bS.jpg

Примечание: 1. CC канал C и D триггеров доступны только для таймера / счетчика 0.

Таблица 5-13. DMA источник запуска значения смещения для USART триггеров.

http://sg.uploads.ru/t/fSi20.jpg

Конфигурация группы является "Базовое смещение"; например, TCC1_CCA для таймера / счетчика C1 CC канала A передачи
вызывать.

стр.62 ....

Отредактировано Ev3658 (2016-11-03 14:46:07)

0

7

А вот это сюрприз  :tired:

20.6. Поддержка DMA
Поддержка DMA модулем SPI доступна только в подчиненном режиме. Подчиненный модуль SPI может запустить DMA-передачу после заполнения в результате сдвигов регистра данных. При необходимости поддержки DMA в ведущем режиме, можно воспользоваться модулем USART, настроенный на работу в режиме SPI. Более детально об этом см. в разделе 21.10 "USART в режиме ведущий SPI".

Источник - http://www.gaw.ru/html.cgi/txt/doc/micr … 4.htm#20.6

0

8

http://www.gaw.ru/html.cgi/txt/doc/micr … .htm#21.10

+1

9

http://electronix.ru/forum/lofiversion/ … 80461.html

Ещё: http://phreakerclub.com/1319

Отредактировано RDW (2016-11-03 14:08:43)

+1

10

Нужно прозрение, вроде как разобрался в принципе действия DMA канала, правда не понимаю одно. Есть регистр общего DMA канала и есть регистры каждого DMA канала, вот только в Datasheet нет точных указаний, как их выбирать, типа они со сдвигом в памяти или чего-то там ещё.
Сделал наброски для лучшей усвояемости, но без понятия, как ENABLE на канал №0 включить, ведь есть ещё три канала.
http://s0.uploads.ru/t/zFwUW.jpg
Файл без сжатия - https://vk.com/doc5082961_439192928

0

11

ВОТ!!! Держите, пригодится!!!! Страницы на картинке указывают на русский мануал - https://vk.com/doc-132676209_439773176
Так понятней будет:
http://s9.uploads.ru/t/q5ZP9.jpg

Отредактировано Ev3658 (2016-12-13 15:28:18)

0

12

Спасибо, да так понятнее. :insane:

0

13

Вот, чтоб не лазить в DAT файлы Xmega256A3:
DMA:

Код:
[CONFIG-DMACH0]
SECTION=DMA
OPTIONCOUNT=16
OPTION1=DMACH0
OPTION1VALUE=[ENABLED,DISABLED]
OPTION2=BURSTLEN
OPTION2VALUE=[1,2,4,8]
OPTION3=CHANRPT
OPTION3VALUE=[ENABLED,DISABLED]
OPTION4=CTR
OPTION4VALUE=[ENABLED]
OPTION5=SINGLESHOT
OPTION5VALUE=[ENABLED]
OPTION6=TCI
OPTION6VALUE=[OFF,LO,MED,HI]
OPTION7=EIL
OPTION7VALUE=[OFF,LO,MED,HI]
OPTION8=SAR
OPTION8VALUE=[NONE,BLOCK,BURST,TRANSACTION]
OPTION9=SAM
OPTION9VALUE=[FIXED,INC,DEC]
OPTION10=DAR
OPTION10VALUE=[NONE,BLOCK,BURST,TRANSACTION]
OPTION11=DAM
OPTION11VALUE=[FIXED,INC,DEC]
OPTION12=TRIGGER
OPTION12VALUE=[0-255,OFF,SYS,ADCA,ADCB,DACA,DACB,TCC0,TCC1,SPIC,USARTC0,USARTC1,TCD0,TCD1,SPID,USARTD0,USARTD1,TCE0,TCE1,SPIE,USARTE0,USARTE1,TCF0,TCF1,SPIF,USARTF0,USARTF1]
OPTION13=BTC
OPTION13VALUE=[0-65535]
OPTION14=REPEAT
OPTION14VALUE=[0-65535]
OPTION15=SADR
OPTION15VALUE=[#NUM]
OPTION16=DADR
OPTION16VALUE=[#NUM]


Флаги прерывания:

Код:
[INTLIST]
count=121
INTname1=OSCFAIL,$0002,OSC_XOSCFAIL.0,OSC_XOSCFAIL.1        ; XOSC Failure Detection Register
INTname2=PORTC_INT0,$0004,#PORTC_INTCTRL.0,PORTC_INTFLAGS.0
INTname3=PORTC_INT1,$0006,#PORTC_INTCTRL.2,PORTC_INTFLAGS.1
INTname4=PORTR_INT0,$0008,#PORTR_INTCTRL.0,PORTR_INTFLAGS.0
INTname5=PORTR_INT1,$000A,#PORTR_INTCTRL.2,PORTR_INTFLAGS.1
INTname6=DMA_CH0,$000C,#,DMA_CH0_CTRLB.0,DMA_CH0_CTRLB.4
INTname7=DMA_CH1,$000E,#,DMA_CH1_CTRLB.0,DMA_CH1_CTRLB.4
INTname8=DMA_CH2,$0010,#,DMA_CH2_CTRLB.0,DMA_CH2_CTRLB.4
INTname9=DMA_CH3,$0012,#,DMA_CH3_CTRLB.0,DMA_CH3_CTRLB.4
INTname10=RTC32_OVF,$0014,#RTC32_INTCTRL.0,RTC32_INTFLAGS.0
INTname11=RTC32_COMP,$0016,#RTC32_INTCTRL.2,RTC32_INTFLAGS.1
INTname12=TWIC_SLAVE,$0018,#TWIC_SLAVE_CTRLA.6,
INTname13=TWIC_MASTER,$001A,#TWIC_MASTER_CTRLA.6,
INTname14=TCC0_OVF,$001C,#TCC0_INTCTRLA.0,TCC0_INTFLAGS.0
INTname15=TCC0_ERR,$001E,#TCC0_INTCTRLA.2,TCC0_INTFLAGS.1
INTname16=TCC0_CCA,$0020,#TCC0_INTCTRLB.0,TCC0_INTFLAGS.4
INTname17=TCC0_CCB,$0022,#TCC0_INTCTRLB.2,TCC0_INTFLAGS.5
INTname18=TCC0_CCC,$0024,#TCC0_INTCTRLB.4,TCC0_INTFLAGS.6
INTname19=TCC0_CCD,$0026,#TCC0_INTCTRLB.6,TCC0_INTFLAGS.7
INTname20=TCC1_OVF,$0028,#TCC1_INTCTRLA.0,TCC1_INTFLAGS.0
INTname21=TCC1_ERR,$002A,#TCC1_INTCTRLA.2,TCC1_INTFLAGS.1
INTname22=TCC1_CCA,$002C,#TCC1_INTCTRLB.0,TCC1_INTFLAGS.4
INTname23=TCC1_CCB,$002E,#TCC1_INTCTRLB.2,TCC1_INTFLAGS.5
INTname24=SPIC_INT,$0030,#SPIC_INTCTRL.0,SPIC_STATUS.7
INTname25=USARTC0_RXC@URXC,$0032,#USARTC0_CTRLA.4,USARTC0_STATUS.7
INTname26=USARTC0_DRE@UDRE,$0034,#USARTC0_CTRLA.0,USARTC0_STATUS.5
INTname27=USARTC0_TXC,$0036,#USARTC0_CTRLA.2,USARTC0_STATUS.6
INTname28=USARTC1_RXC@URXC1,$0038,#USARTC1_CTRLA.4,USARTC1_STATUS.7
INTname29=USARTC1_DRE@UDRE1,$003A,#USARTC1_CTRLA.0,USARTC1_STATUS.5
INTname30=USARTC1_TXC,$003C,#USARTC1_CTRLA.2,USARTC1_STATUS.6
INTname31=AES_INT,$003E,#AES_INTCTRL.0,AES_STATUS.0
INTname32=NVM_EE,$0040,NVM_INTCTRL.0,
INTname33=NVM_SPM,$0042,NVM_INTCTRL.2,
INTname34=PORTB_INT0,$0044,#PORTB_INTCTRL.0,PORTB_INTFLAGS.0
INTname35=PORTB_INT1,$0046,#PORTB_INTCTRL.2,PORTB_INTFLAGS.1
INTname36=ACB_AC0,$0048,#ACB_AC0CTRL.4,ACB_STATUS.0
INTname37=ACB_AC1,$004A,#ACB_AC1CTRL.4,ACB_STATUS.1
INTname38=ACB_ACW,$004C,#ACB_WINCTRL.0,ACB_STATUS.2
INTname39=ADCB_CH0,$004E,ADCB_CH0_INTCTRL.0,ADCB_CH0_INTFLAG.0
INTname40=ADCB_CH1,$0050,ADCB_CH1_INTCTRL.0,ADCB_CH1_INTFLAG.0
INTname41=ADCB_CH2,$0052,ADCB_CH2_INTCTRL.0,ADCB_CH2_INTFLAG.0
INTname42=ADCB_CH3,$0054,ADCB_CH3_INTCTRL.0,ADCB_CH3_INTFLAG.0
INTname43=PORTE_INT0,$0056,#PORTE_INTCTRL.0,PORTE_INTFLAGS.0
INTname44=PORTE_INT1,$0058,#PORTE_INTCTRL.2,PORTE_INTFLAGS.1
INTname45=TWIE_SLAVE,$005A,#TWIE_SLAVE_CTRLA.6,
INTname46=TWIE_MASTER,$005C,#TWIE_MASTER_CTRLA.6,
INTname47=TCE0_OVF,$005E,#TCE0_INTCTRLA.0,TCE0_INTFLAGS.0
INTname48=TCE0_ERR,$0060,#TCE0_INTCTRLA.2,TCE0_INTFLAGS.1
INTname49=TCE0_CCA,$0062,#TCE0_INTCTRLB.0,TCE0_INTFLAGS.4
INTname50=TCE0_CCB,$0064,#TCE0_INTCTRLB.2,TCE0_INTFLAGS.5
INTname51=TCE0_CCC,$0066,#TCE0_INTCTRLB.4,TCE0_INTFLAGS.6
INTname52=TCE0_CCD,$0068,#TCE0_INTCTRLB.6,TCE0_INTFLAGS.7
INTname53=TCE1_OVF,$006A,#TCE1_INTCTRLA.0,TCE1_INTFLAGS.0
INTname54=TCE1_ERR,$006C,#TCE1_INTCTRLA.2,TCE1_INTFLAGS.1
INTname55=TCE1_CCA,$006E,#TCE1_INTCTRLB.0,TCE1_INTFLAGS.4
INTname56=TCE1_CCB,$0070,#TCE1_INTCTRLB.2,TCE1_INTFLAGS.5
INTNAME57=RESERVED1,$0072,#,
INTname58=USARTE0_RXC,$0074,#USARTE0_CTRLA.4,USARTE0_STATUS.7
INTname59=USARTE0_DRE,$0076,#USARTE0_CTRLA.0,USARTE0_STATUS.5
INTname60=USARTE0_TXC,$0078,#USARTE0_CTRLA.2,USARTE0_STATUS.6
INTNAME61=RESERVED2,$007A,#,
INTNAME62=RESERVED3,$007C,#,
INTNAME63=RESERVED4,$007E,#,
INTname64=PORTD_INT0,$0080,#PORTD_INTCTRL.0,PORTD_INTFLAGS.0
INTname65=PORTD_INT1,$0082,#PORTD_INTCTRL.2,PORTD_INTFLAGS.1
INTname66=PORTA_INT0,$0084,#PORTA_INTCTRL.0,PORTA_INTFLAGS.0
INTname67=PORTA_INT1,$0086,#PORTA_INTCTRL.2,PORTA_INTFLAGS.1
INTname68=ACA_AC0,$0088,#ACA_AC0CTRL.4,ACA_STATUS.0
INTname69=ACA_AC1,$008A,#ACA_AC1CTRL.4,ACA_STATUS.1
INTname70=ACA_ACW,$008C,#ACA_WINCTRL.0,ACA_STATUS.2
INTname71=ADCA_CH0,$008E,ADCA_CH0_INTCTRL.0,ADCA_CH0_INTFLAG.0
INTname72=ADCA_CH1,$0090,ADCA_CH1_INTCTRL.0,ADCA_CH1_INTFLAG.0
INTname73=ADCA_CH2,$0092,ADCA_CH2_INTCTRL.0,ADCA_CH2_INTFLAG.0
INTname74=ADCA_CH3,$0094,ADCA_CH3_INTCTRL.0,ADCA_CH3_INTFLAG.0
INTNAME75=RESERVED5,$0096,#,
INTNAME76=RESERVED6,$0098,#,
INTname77=TCD0_OVF,$009A,#TCD0_INTCTRLA.0,TCD0_INTFLAGS.0
INTname78=TCD0_ERR,$009C,#TCD0_INTCTRLA.2,TCD0_INTFLAGS.1
INTname79=TCD0_CCA,$009E,#TCD0_INTCTRLB.0,TCD0_INTFLAGS.4
INTname80=TCD0_CCB,$00A0,#TCD0_INTCTRLB.2,TCD0_INTFLAGS.5
INTname81=TCD0_CCC,$00A2,#TCD0_INTCTRLB.4,TCD0_INTFLAGS.6
INTname82=TCD0_CCD,$00A4,#TCD0_INTCTRLB.6,TCD0_INTFLAGS.7
INTname83=TCD1_OVF,$00A6,#TCD1_INTCTRLA.0,TCD1_INTFLAGS.0
INTname84=TCD1_ERR,$00A8,#TCD1_INTCTRLA.2,TCD1_INTFLAGS.1
INTname85=TCD1_CCA,$00AA,#TCD1_INTCTRLB.0,TCD1_INTFLAGS.4
INTname86=TCD1_CCB,$00AC,#TCD1_INTCTRLB.2,TCD1_INTFLAGS.5
INTname87=SPID_INT,$00AE,#SPID_INTCTRL.0,SPID_STATUS.7
INTname88=USARTD0_RXC@URXC2,$00B0,#USARTD0_CTRLA.4,USARTD0_STATUS.7
INTname89=USARTD0_DRE@UDRE2,$00B2,#USARTD0_CTRLA.0,USARTD0_STATUS.5
INTname90=USARTD0_TXC,$00B4,#USARTD0_CTRLA.2,USARTD0_STATUS.6
INTname91=USARTD1_RXC@URXC3,$00B6,#USARTD1_CTRLA.4,USARTD1_STATUS.7
INTname92=USARTD1_DRE@UDRE3,$00B8,#USARTD1_CTRLA.0,USARTD1_STATUS.5
INTname93=USARTD1_TXC,$00BA,#USARTD1_CTRLA.2,USARTD1_STATUS.6
INTNAME94=RESERVED7,$00BC,#,
INTNAME95=RESERVED8,$00BE,#,
INTNAME96=RESERVED9,$00C0,#,
INTNAME97=RESERVED10,$00C2,#,
INTNAME98=RESERVED11,$00C4,#,
INTNAME99=RESERVED12,$00C6,#,
INTNAME100=RESERVED13,$00C8,#,
INTNAME101=RESERVED14,$00CA,#,
INTNAME102=RESERVED15,$00CC,#,
INTNAME103=RESERVED16,$00CE,#,
INTname104=PORTF_INT0,$00D0,#PORTF_INTCTRL.0,PORTF_INTFLAGS.0
INTname105=PORTF_INT1,$00D2,#PORTF_INTCTRL.2,PORTF_INTFLAGS.1
INTNAME106=RESERVED17,$00D4,#,
INTNAME107=RESERVED18,$00D6,#,
INTname108=TCF0_OVF,$00D8,#TCF0_INTCTRLA.0,TCF0_INTFLAGS.0
INTname109=TCF0_ERR,$00DA,#TCF0_INTCTRLA.2,TCF0_INTFLAGS.1
INTname110=TCF0_CCA,$00DC,#TCF0_INTCTRLB.0,TCF0_INTFLAGS.4
INTname111=TCF0_CCB,$00DE,#TCF0_INTCTRLB.2,TCF0_INTFLAGS.5
INTname112=TCF0_CCC,$00E0,#TCF0_INTCTRLB.4,TCF0_INTFLAGS.6
INTname113=TCF0_CCD,$00E2,#TCF0_INTCTRLB.6,TCF0_INTFLAGS.7
INTNAME114=RESERVED19,$00E4,#,
INTNAME115=RESERVED20,$00E6,#,
INTNAME116=RESERVED21,$00E8,#,
INTNAME117=RESERVED22,$00EA,#,
INTNAME118=RESERVED23,$00EC,#,
INTname119=USARTF0_RXC,$00EE,#USARTF0_CTRLA.4,USARTF0_STATUS.7
INTname120=USARTF0_DRE,$00F0,#USARTF0_CTRLA.0,USARTF0_STATUS.5
INTname121=USARTF0_TXC,$00F2,#USARTF0_CTRLA.2,USARTF0_STATUS.6

0


Вы здесь » Программирование ATMEL в BASCOM. » Разное » DMA Bascom Avr