Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 02.03.2020, 13:04   #1
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Внешняя АЦП с параллельным интерфейсом

Приветствую колееги!
Делаю сейчас проект на PIC32MZ2048EFH, для которого понадобилась внешняя АЦП (точнее - две). План у меня был такой: использовать внешнюю 12-ти битную дуальную АЦП с параллельным интерфейсом, подключить их к двум разным портам, клочить АЦП выведенным наружу поделенным системным клоком. И читать порты через ДМА в режиме нонстопа.

План сработал на 100%: при системном клоке 200МГц удалось поднять часоту оцифровки в 50 МС/с !

Но все работает идеально только на частоте клока в 50 МГц (т.е. четверть от системного клока - это часота работы ДМА). При снижении чатсоты начинают появляться дубли в оцифрованных значениях. Естественно, при частоте 25 МГц все значения дублируются (т.е. ДМА успевает прочитать порт два раза, пока сменится значение АЦП).

Собственно вопрос: можно ли как-то притормозить ДМА без снижения чатоты системного клока? Мне бы в идеале иметь частоту оцифровки 25МС/с без необходимости стирать дубли, тратя драгоценные циклы.

Заранее благодарен за все идеи!
DimaK вне форума   Ответить с цитированием
Старый 02.03.2020, 13:12   #2
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,317
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

DimaK
без необходимости стирать дубли, тратя драгоценные циклы. - осуществлять транзакции по таймеру.
besogon вне форума   Ответить с цитированием
Старый 02.03.2020, 16:58   #3
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

О! А это идея!
DimaK вне форума   Ответить с цитированием
Старый 02.03.2020, 17:16   #4
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,317
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

DimaK
если таймер жаль, то можно вывести на ножку частоту соединить с внешним прерыванием - осуществлять транзакции по фронту прерывания.
это все тоже настраивается.

есть еще вариант использовать clc как D-триггер и соорудить делитель частоты, если у Вас используется генератор.
besogon вне форума   Ответить с цитированием
Старый 02.03.2020, 18:43   #5
anatoly22
Junior Member
 
Регистрация: 23.11.2015
Возраст: 51
Сообщений: 14
Вес репутации: 145/18
anatoly22 will become famous soon enoughanatoly22 will become famous soon enough
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Получается, передача из порта в память занимает 4 такта SYSCLK?
anatoly22 вне форума   Ответить с цитированием
Старый 02.03.2020, 19:20   #6
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,317
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

anatoly22
Получается, передача из порта в память занимает 4 такта SYSCLK? - по схеме для того, чтобы dma добралось до pbus4, к которой подключены порты ей надо пройти через системную шину - нет прямого подключения.

Вот и получается - 2 такта системной шины и 1 такт периферийной шины.
besogon вне форума   Ответить с цитированием
Старый 02.03.2020, 21:28   #7
anatoly22
Junior Member
 
Регистрация: 23.11.2015
Возраст: 51
Сообщений: 14
Вес репутации: 145/18
anatoly22 will become famous soon enoughanatoly22 will become famous soon enough
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Цитата:
Сообщение от besogon Посмотреть сообщение
anatoly22
Получается, передача из порта в память занимает 4 такта SYSCLK? - по схеме для того, чтобы dma добралось до pbus4, к которой подключены порты ей надо пройти через системную шину - нет прямого подключения.

Вот и получается - 2 такта системной шины и 1 такт периферийной шины.
И узнать об этом можно только эмпирически? нигде о времянках дма не написано, или я плохо искал...
anatoly22 вне форума   Ответить с цитированием
Старый 02.03.2020, 21:58   #8
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Да, узнать можно только имперически, к сожалению. По крайней мере я такой информации нигде не нашел. У серии МХ 8 циклов занимает ДМА-транзакция.
DimaK вне форума   Ответить с цитированием
Старый 02.03.2020, 21:59   #9
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Цитата:
Сообщение от besogon Посмотреть сообщение
DimaK
если таймер жаль, то можно вывести на ножку частоту соединить с внешним прерыванием - осуществлять транзакции по фронту прерывания.
это все тоже настраивается.

есть еще вариант использовать clc как D-триггер и соорудить делитель частоты, если у Вас используется генератор.
Да нет, таймера не жаль. Я именно так и думал - по фронту прерываний. Но плату пришлось бы переделывать, а не хотелось бы... Вариант с таймером, наверное, идеальный для меня.
DimaK вне форума   Ответить с цитированием
Старый 02.03.2020, 22:11   #10
anatoly22
Junior Member
 
Регистрация: 23.11.2015
Возраст: 51
Сообщений: 14
Вес репутации: 145/18
anatoly22 will become famous soon enoughanatoly22 will become famous soon enough
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Цитата:
Сообщение от DimaK Посмотреть сообщение
Приветствую колееги!
Делаю сейчас проект на PIC32MZ2048EFH, для которого понадобилась внешняя АЦП (точнее - две). План у меня был такой: использовать внешнюю 12-ти битную дуальную АЦП с параллельным интерфейсом, подключить их к двум разным портам, клочить АЦП выведенным наружу поделенным системным клоком. И читать порты через ДМА в режиме нонстопа.
!
Не может ли возникнуть такая ситуация, когда дма читает порт и ацп выводит новые данные? неопределенное состояние порта в момент чтения.
anatoly22 вне форума   Ответить с цитированием
Старый 02.03.2020, 23:02   #11
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Вот я боялся этого, но такого на деле не происходит. Скорее всего, непосредственное чтение порта происходит не сразу. Т.е. по приходу фронта АЦП выставляет значение на выходах, а ДМА проводит сначала какие-то служебные дела (типа проверки шины) и лишь на 2-й или 3-й тик считывает порты. Образуется такая естественная задержка в 10-15 нс.
DimaK вне форума   Ответить с цитированием
Старый 02.03.2020, 23:12   #12
anatoly22
Junior Member
 
Регистрация: 23.11.2015
Возраст: 51
Сообщений: 14
Вес репутации: 145/18
anatoly22 will become famous soon enoughanatoly22 will become famous soon enough
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Как вы проверяете валидность данных, может где-то теряются биты? Это все очень неопределенно и может зависеть от разных факторов. А какое ацп у вас?
anatoly22 вне форума   Ответить с цитированием
Старый 03.03.2020, 09:05   #13
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

АЦП я взял серии LTC2291. Валидировал данные я чисто практически - запускал на вход от генератора синусоиду 1МГц, модулированную всякими причудливыми сигналами, снимал в дебагере массив и строил картинку в эксэле Умнее ничего придумать не смог. На сколько удалось установить - данные не теряются, ни единого промаха не было, сигнал восстанавливался один-в-один. Если только совсем уж младшие разряды трепыхались....
DimaK вне форума   Ответить с цитированием
Старый 03.03.2020, 22:31   #14
anatoly22
Junior Member
 
Регистрация: 23.11.2015
Возраст: 51
Сообщений: 14
Вес репутации: 145/18
anatoly22 will become famous soon enoughanatoly22 will become famous soon enough
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Круто. Я давно хотел так сделать, но что то меня терзали смутные сомнения. Вот вы их и развеяли...
anatoly22 вне форума   Ответить с цитированием
Старый 03.03.2020, 23:00   #15
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Рад помочь!
DimaK вне форума   Ответить с цитированием
Старый 17.03.2020, 19:07   #16
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Вообщем попробовал я оба способа активации транзакции ДМА - и по таймеру и по внешнему прерыванию (тупо завел клок АЦП на вход прерывания). Оно работает, конечно, но хоть убейся не могу получить исконные 25 МГц (коими тактирую АЦП) - получается вдвое меньше! Не могу понять почему, скорее всего флаг прерывания криво сбрасывается или тупо по прерываниям ДМА срабатывает медленнее...
DimaK вне форума   Ответить с цитированием
Старый 18.03.2020, 06:02   #17
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,472
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

вопрос... если считываем одно значение за одно измерение, то зачем вообще DMA нужен?
а ежели в прерывании inadc сделать?
или там процу некогда курить?
по сути- надо прочитать и куда то записать слово, а не массив... если вставку на ASM сделать, то ИМХО- быстрее будет, чем с помощью дма по одному слову пересылать.
SergP01 вне форума   Ответить с цитированием
Старый 18.03.2020, 06:29   #18
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,472
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Цитата:
Сообщение от DimaK Посмотреть сообщение
Вообщем попробовал я оба способа активации транзакции ДМА - и по таймеру и по внешнему прерыванию (тупо завел клок АЦП на вход прерывания). Оно работает, конечно, но хоть убейся не могу получить исконные 25 МГц (коими тактирую АЦП) - получается вдвое меньше! Не могу понять почему, скорее всего флаг прерывания криво сбрасывается или тупо по прерываниям ДМА срабатывает медленнее...
тут может быть ещё и приоритеты системной шины.
ИМХО, дма не может отодвинуть проц в сторонку
SergP01 вне форума   Ответить с цитированием
Старый 21.03.2020, 21:34   #19
DimaK
Member
 
Регистрация: 11.04.2016
Адрес: Пфорцхайм, Германия
Возраст: 35
Сообщений: 70
Вес репутации: 165/17
DimaK has a spectacular aura aboutDimaK has a spectacular aura about
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Цитата:
Сообщение от SergP01 Посмотреть сообщение
вопрос... если считываем одно значение за одно измерение, то зачем вообще DMA нужен?
а ежели в прерывании inadc сделать?
или там процу некогда курить?
по сути- надо прочитать и куда то записать слово, а не массив... если вставку на ASM сделать, то ИМХО- быстрее будет, чем с помощью дма по одному слову пересылать.
Тут речь идет о внешней АЦП, а не внутренней. ДМА нужен, т.к. частота оцифровки - 25 МС/с, т.е. каждую микросекунду надо сохранять 25 12-ти битных значения. Да и процу во время дискретизации есть чем занятся...
DimaK вне форума   Ответить с цитированием
Старый 21.03.2020, 22:13   #20
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,472
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

Цитата:
Сообщение от DimaK Посмотреть сообщение
Тут речь идет о внешней АЦП, а не внутренней. ДМА нужен, т.к. частота оцифровки - 25 МС/с, т.е. каждую микросекунду надо сохранять 25 12-ти битных значения. Да и процу во время дискретизации есть чем занятся...
дык, разницы никакой.... ДМА- шина камня нужна... а камень её будет периодически отодвигать.
а вот отдельный камень только для АЦП...
SergP01 вне форума   Ответить с цитированием
Старый 25.03.2020, 17:26   #21
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,317
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Внешняя АЦП с параллельным интерфейсом

DimaK
пробовали частоту периферийной шины повышать?
besogon вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Измерение АЦП PIC24 по каналам RA1,RA2,RA3? Anton_1000 Продукция MICROCHIP 15 08.07.2013 19:30
помогите новичку разобраться с АЦП reg33 Вопросы начинающих 43 10.04.2013 22:05
Помогите запустить АЦП PIC18f26k22 retro55 Продукция MICROCHIP 35 13.02.2013 09:46
АЦП в PIC24H, какое-то смещение уровня, помогите! Максим2008 Продукция MICROCHIP 2 04.06.2010 09:39
АЦП в pic12F675, АЦП начинает работать с 1.8 вольта trubka_u Продукция MICROCHIP 21 02.01.2009 04:23


Часовой пояс GMT +3, время: 22:00.


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