|
АЦП в xmegaA |
|
|
|
Feb 2 2012, 13:00
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(bob1 @ Feb 2 2012, 13:18)  Через прерывания нерационально!!! Конечно нерационально, потому и спрашиваю. Цитата(bob1 @ Feb 2 2012, 13:18)  1. Счетчик через систему событий запускает Каналы 0-3 Ацп. 2. DMA настраиваем на передачу по 8 бит в ОЗУ(RAM) по команде от 3 или 2 канала АЦП. По аналогии можно думаю сделать и для двух АЦП. Проблема в том как загрузить в MUX другое значение. И возможно ли это.
|
|
|
|
|
Feb 2 2012, 17:47
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(Kovrov @ Feb 2 2012, 19:12)  дма работает на буфер передача 128+ N преобразований по прерыванию с дма обрабатываю массив полученных данных переключаю мукс на другой канал... массив 128*sizeof(unsigned short)? Много занимает, однако. Цитата(Kovrov @ Feb 2 2012, 19:12)  переключаю мукс на другой канал... То есть переключать можно только вручную (периферия не может переключить)? Это и плохо... Цитата(Kovrov @ Feb 2 2012, 19:12)  Феничка в том , что не заморачиваюсь с косячными преобразованиями при переключениями мультиплексора АЦП - просто пропускаю эти N преобразований А они косячные? Незаметил. Что у вас в качестве опоры? И какой разброс в результатах преобразования. Сколько виртуальных каналов используете?
|
|
|
|
|
Feb 3 2012, 14:38
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(V_G @ Feb 3 2012, 04:52)  Читайте мануал. В версии мануала от 12/09 на с 299 (п.25.9.6) - пример работы 4 каналов в free running mode без всяких прерываний, просто достаете измеренные значения из памяти нужных каналов Другой вариант - п. 25.16.4 - настройка регистра EVCTRL на Sweep Channels - изучите и этот вариант ( не пробовал, но вроде должно отвечать вашим потребностям) free running mode недостаточно - нужно ещё MUX перегружать, и тут я не виду средств как это может быть сделано. Цитата(V_G @ Feb 3 2012, 04:52)  Другой вариант - п. 25.16.4 - настройка регистра EVCTRL на Sweep Channels - изучите и этот вариант ( не пробовал, но вроде должно отвечать вашим потребностям) Посмотрю. Спасибо, вдруг - оно.
|
|
|
|
|
Feb 3 2012, 15:53
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(bob1 @ Feb 3 2012, 17:32)  В MUX можете также грузить посредством DMA из оперативки. Как? Буду искать... Цитата(bob1 @ Feb 3 2012, 17:32)  Кто мешает?!!??!! Нужно грузить не просто MUX, а четыре MUX. Цитата(bob1 @ Feb 3 2012, 17:32)  Прога критична по времени?? Критична - много команд получается. Цитата(bob1 @ Feb 3 2012, 17:32)  Может можно обойтись 1 каналом!! Тогда уже некритична, но результат медленный (не удовлетворяет TЗ) Цитата(bob1 @ Feb 3 2012, 17:32)  Может можно обойтись 1 каналом!! Давайте может тогда на бейсике писать будем, получим 1 8-битный отсчёт в секунду и хватит? Зачем тогда 12-бит АЦП с четерьмя параллельными каналами?
|
|
|
|
|
Feb 3 2012, 18:39
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(bob1 @ Feb 3 2012, 20:01)  Было проще общаться было бы тех задание или хотя бы скорость опроса !!??? Вродь в первом посте ТЗ. Скорость оцифровки 16-20 кГц. Ещё можно тут посмотреть (тема по сути таже): АЦП?С++Цитата(bob1 @ Feb 3 2012, 20:01)  Насчет MUx погорячился!! Похоже на то. Цитата(bob1 @ Feb 3 2012, 20:01)  Адреса регистров 4 MUX идут не один за другим и продеться использовать 4 канала DMA. Так ДМА не напасёшься (хотя и не исплользую из, но жалко отдавать сразу все). Цитата(bob1 @ Feb 3 2012, 20:01)  Если использовать 1 канал АЦП, то MUX этого канала можно изменить.( совпадение (переполнение) в счетчике через канал событий инициирует передачу через DMA из ячеек RAM в 1 регистр MUX). Интересно. А запуск следущего кто сделает и результат считает?
|
|
|
|
|
Feb 3 2012, 20:37
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(bob1 @ Feb 3 2012, 21:30)  Скорость небольшая!! Ничего себе небольшая: если программно делать, то загрузка меги 20-30 % на 29,5 МГц. Цитата(bob1 @ Feb 3 2012, 21:30)  1 канал DMa настраиваем на запуск скажем от переполнения счетчика. Он будет передавать по 2 байта из RAM сначала в регистр MUX и потом регистр CTRL и тем самым запустит начало преобразования. В RAM лежат 16 байт. Это 8 значений для MUX и 8 значений для регистра CTRL. Их положить через один. По передачи 16 байт сделать , чтобы адрес принял начальное значение. Счетчик каждый раз переполняясь запустит DMA, а тот по очереди АЦП для 8 разных выводов. 2 канал DMA настраиваем на запуск от АЦП канал СH0. Канал DMA будет передавать значения АЦП( по 2байта) в RAM. Но используется 1 виртуальный канал? 8 отсчётов за раз не получим? Только если все ДМА на это дело израсходовать. И то не уверен что получится...сложно как то...
|
|
|
|
|
Feb 4 2012, 02:29
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
Цитата(_Артём_ @ Feb 4 2012, 00:38)  free running mode недостаточно - нужно ещё MUX перегружать, и тут я не виду средств как это может быть сделано. Еще раз настаиваю на вдумчивом чтении мануала, в частности, п. 25.4 ADC Сhannels. Каждый канал - это сочетание состояния MUX и ячеек результата. Таким образом, переключение каналов - это и переключение MUX. А если вы все 4 канала запускаете во free running mode, они постоянно обновляют свои ячейки результата, переключая за вас MUX. Отказываться от free running mode имеет смысл только в том случае, если вы хотите четкую временную привязку результатов измерений (например, для оцифровки и последующей цифровой фильтрации)
|
|
|
|
|
Feb 4 2012, 07:27
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 17-09-06
Пользователь №: 20 471

|
Цитата(_Артём_ @ Feb 4 2012, 01:37)  Ничего себе небольшая: если программно делать, то загрузка меги 20-30 % на 29,5 МГц. Но используется 1 виртуальный канал? 8 отсчётов за раз не получим? Только если все ДМА на это дело израсходовать. И то не уверен что получится...сложно как то... 8 отчетов за раз не получим. Опрос 8 выводов по кругу. С 4 каналами можно получить скорость оцифровки 500кГц. У Вас на порядок меньше!!! По поводу DMA --второй канал ( результат перекидывающий в RAM)можете не использовать. Программно считывать значения и обрабатывать их. Итого получаем затраты 2 канала DMA на каждый АЦП (А и В) , 1 счетчик. Что за виртуальный канал?? Цитата(V_G @ Feb 4 2012, 07:29)  Еще раз настаиваю на вдумчивом чтении мануала, в частности, п. 25.4 ADC Сhannels. Каждый канал - это сочетание состояния MUX и ячеек результата. Таким образом, переключение каналов - это и переключение MUX. А если вы все 4 канала запускаете во free running mode, они постоянно обновляют свои ячейки результата, переключая за вас MUX. Отказываться от free running mode имеет смысл только в том случае, если вы хотите четкую временную привязку результатов измерений (например, для оцифровки и последующей цифровой фильтрации) Так канала 4 и 4 MUX , а снимать результат нужно с 8 выводов. Переключать 1 раз MUX для каждого канала все равно надо.!!!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|