Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 25.01.2018, 22:55  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Xmega DMA Decrement.

Мозг отказывается мне служить.

С помощью ДМА загружаю с определенной частотой 16-битный регистр из области памяти.

Так вот, когда канал работает как источник Increment - все нормально, только пытаюсь сделать источник Decrement, полная Ж.

из 192 значений - несколько неправильно, всегда в одном месте, без какой то системы. Только в старшем байте слова один бит меняется.

Кусок кода для отладки.

Код:
		DMA.CH1.SRCADDR2 = 0x80;
		DMA.CH1.DESTADDR2 = 0;
		DMA.CH1.TRIGSRC=DMA_CH_TRIGSRC_TCC1_OVF_gc;
		DMA.CH1.CTRLB=0;
		DMA.CH1.REPCNT=0;
		DMA.CH1.CTRLA=DMA_CH_SINGLE_bm|0x01;
		DMA.CH1.ADDRCTRL=DMA_CH_SRCDIR_DEC_gc|DMA_CH_SRCRE  LOAD_TRANSACTION_gc|DMA_CH_DESTDIR_INC_gc|DMA_CH_D  ESTRELOAD_BURST_gc;
		DMA.CH1.TRFCNT=192*2;
		DMA.CH1.DESTADDR0 = ((unsigned short)&angle)&0xff;
		DMA.CH1.DESTADDR1 = (((unsigned short)&angle)››8)&0xff;
 		DMA.CH1.SRCADDR0 = (((unsigned short)(&table_dma_l[0]))+191*2)&0xff;
 		DMA.CH1.SRCADDR1 = ((((unsigned short)(&table_dma_l[0]))+191*2)››8)&0xff;

		TDMA.INTCTRLA=0x02;
		TDMA.CTRLA=TC_CLKSEL_DIV1024_gc;
		TDMA.PER=125;
Далее в программе переменная angle выводится в порт.
При инкременте все нормально.

Вот то что в памяти

0262 026e 0278 0282 028c 0296 02a0 02aa 02b2 02bc 02c4 02cc 02d4 02dc 02e2 02ea
02f0 02f6 02fc 0300 0306 030a 030e 0312 0314 0318 031a 031c 031e 031e 031e 0320
0320 031e 031e 031e 031c 031a 0318 0314 0312 030e 030a 0306 0300 02fc 02f6 02f0
02ea 02e2 02dc 02d4 02cc 02c4 02bc 02b2 02aa 02a0 0296 028c 0282 0278 026e 0262
0258 024c 0240 0234 0228 021c 0210 0204 01f6 01ea 01de 01d0 01c4 01b6 01aa 019c
0184 0176 016a 015c 0150 0142 0136 012a 011c 0110 0104 00f8 00ec 00e0 00d4 00c8
00be 00b2 00a8 009e 0094 008a 0080 0076 006e 0064 005c 0054 004c 0044 003e 0036
0030 002a 0024 0020 001a 0016 0012 000e 000c 0008 0006 0004 0002 0002 0002 0000
0000 0002 0002 0002 0004 0006 0008 000c 000e 0012 0016 001a 0020 0024 002a 0030
0036 003e 0044 004c 0054 005c 0064 006e 0076 0080 008a 0094 009e 00a8 00b2 00be
00c8 00d4 00e0 00ec 00f8 0104 0110 011c 012a 0136 0142 0150 015c 016a 0176 0184
019c 01aa 01b6 01c4 01d0 01de 01ea 01f6 0204 0210 021c 0228 0234 0240 024c 0258

Вот то что записывает ДМА

0258 024c 0240 0234 0228 021c 0210 0104 01f6 01ea 01de 01d0 01c4 01b6 01aa 019c
0184 0176 016a 015c 0150 0142 0136 012a 011c 0110 0004 00f8 00ec 00e0 00d4 00c8
00be 00b2 00a8 009e 0094 008a 0080 0076 006e 0064 005c 0054 004c 0044 003e 0036
0030 002a 0024 0020 001a 0016 0012 000e 000c 0008 0006 0004 0002 0002 0002 0000
0000 0002 0002 0002 0004 0006 0008 000c 000e 0012 0016 001a 0020 0024 002a 0030
0036 003e 0044 004c 0054 005c 0064 006e 0076 0080 008a 0094 009e 00a8 00b2 00be
00c8 00d4 00e0 00ec 01f8 0104 0110 011c 012a 0136 0142 0150 015c 016a 0176 0184
019c 01aa 01b6 01c4 01d0 01de 01ea 02f6 0204 0210 021c 0228 0234 0240 024c 0258
0262 026e 0278 0282 028c 0296 02a0 02aa 02b2 02bc 02c4 02cc 02d4 02dc 02e2 02ea
02f0 02f6 03fc 0300 0306 030a 030e 0312 0314 0318 031a 031c 031e 031e 031e 0320
0320 031e 031e 031e 031c 031a 0318 0314 0312 030e 030a 0306 0200 02fc 02f6 02f0
02ea 02e2 02dc 02d4 02cc 02c4 02bc 02b2 02aa 02a0 0296 028c 0282 0278 026e 0062


Жирным то что изменилось. Вроде все выделил.

Явно глюк при доступе к памяти, но почему только при декременте?
Или я где то туплю?

Кто бы наставил на путь истинный - перешел бы на СТМ.
Реклама:

Последний раз редактировалось sat_art; 25.01.2018 в 23:09.
sat_art вне форума  
Непрочитано 25.01.2018, 23:05  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Xmega DMA Decrement.

Сообщение от sat_art Посмотреть сообщение
С помощью ДМА загружаю с определенной частотой 16-битный регистр из области памяти.
А частота не превышена... случаем? Снижать не пробовали?
Сообщение от sat_art Посмотреть сообщение
Кто бы наставил на путь истинный - перешел бы на СТМ.
Благословляю!
STM32F0 вне форума  
Непрочитано 25.01.2018, 23:11  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Xmega DMA Decrement.

Сообщение от STM32F0 Посмотреть сообщение
Благословляю!
Я не благославления прошу.

Сообщение от STM32F0 Посмотреть сообщение
А частота не превышена... случаем? Снижать не пробовали?
Во - надо поглядеть.
sat_art вне форума  
Непрочитано 25.01.2018, 23:19  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Xmega DMA Decrement.

Да вроде с частотой нет проблем.
И при инкременте ошибок нет.
sat_art вне форума  
Непрочитано 26.01.2018, 02:41  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Xmega DMA Decrement.

Сам дурак.
Направление источника менал, а приемника нет. Еще и подумал, как он так может.
Ошибка вылазила там где старший байт брался со следующего слова в таблице. И он был другим. Вернее старший байт всегда брался со следующего слова. Просто заметно это именно там где он изменяется.

Надо было и приемник делать адрес+1 и декримент.
Все заработало как надо.

Всем спасибо за участие.
Нравится мне Хмега. На обычные меги и не тянет.
Дма,
квадратурный декодер - 3 шт.,
от одного таймера 4 полумоста управляются (аппаратный деадтайм если понадобится),
5 таймеров 16 разрядных + RTC
В общем пока сам дурак, дальше будем посмотреть.
Это я с 32А4 играюсь.
U - еще и юсб есть. Запускал, работает. Прада от 8кб памяти, сука, жрет.
sat_art вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32 - Tips 'N Tricks nahimovv ARM 28 14.10.2024 06:42
stm32F030f4 + ADC + DMA miwutka ARM 40 05.11.2016 12:42
Tim19 -> DMA -> значение ADC в memory kvark85 ARM 6 03.06.2014 15:00
STM32 Повторный запуск DMA Nik_UFO Микроконтроллеры, АЦП, память и т.д 2 07.03.2012 17:38
DMA в ATxmega vav618 Микроконтроллеры, АЦП, память и т.д 1 03.04.2010 10:57


Часовой пояс GMT +4, время: 06:01.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot