Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Altera ADC core
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
justontime
Пытаюсь запустить ADC на MAX 10, что-то не очень (мягко говоря) получается...

Для начала, кто-нибудь знает, чем отличаются clock и adc_pll_clock ? Типа по clock идет общение с внешним миром, а adc_pll_clock только для преобразования A->D ? Если так, они должны быть как-то синхронизированы и т.д. ?
andk
Гхм. Подробный вопрос - подробный ответ.
Ну конечно кто-нибудь знает.
https://www.intel.com/content/dam/www/progr...10-adc-15.1.pdf
Просмотрите, там совсем немного - 60 страниц с картинками.
justontime
Цитата(andk @ Sep 25 2018, 20:08) *
Гхм. Подробный вопрос - подробный ответ.
Ну конечно кто-нибудь знает.
https://www.intel.com/content/dam/www/progr...10-adc-15.1.pdf
Просмотрите, там совсем немного - 60 страниц с картинками.

Мне кажется, я задал достаточно определенные вопросы, а не просто попросил рассказать вообще... А ADC UG у меня и так последние пару дней любимое чтиво...

Ладно, с clk я уже разобрался (все, как и предполагал), возник другой вопрос. Использую только один аналоговый вход - ANAIN, а выводы ADCx (пара из них) задействованы как обычные GPIOs. При этом в процессе генерации ADC core указал, что используется только channel 0, в sequencer указал, что slot 1, привязан к ch 0.
Тем не менее, при компиляции ругается, что "Can't place multiple pins..." именно на те ADCx, которые у меня задействованы, как GPIOs.

Где ему еще нужно сказать, что эти ноги нафиг для ADC не нужны ???
andk
И всё таки, настоятельно рекомендую вдумчиво покурить сей документ...
К примеру про ваш вопрос враги не скрывают истину:
Стр. 2-5
If you use bank 1A for ADC, you cannot use the bank for GPIO.
sm.gif
justontime
Они озверели !!!

"Bank 1A, 1B, 2, and 8—you cannot use GPIO pins in these banks." если ADC в принципе включен !!! И это в корпусе E144...


Вообще первоначальный восторг по поводу MAX 10 у меня начинает проходить - уже в который раз натыкаюсь на подобные засады... Да, понятно, что UG нужно читать внимательно, но...


Цитата(andk @ Sep 25 2018, 20:48) *
И всё таки, настоятельно рекомендую вдумчиво покурить сей документ...
К примеру про ваш вопрос враги не скрывают истину:
Стр. 2-5
If you use bank 1A for ADC, you cannot use the bank for GPIO.
sm.gif

Да я параллельно уже тоже нашел (только в другом месте), и высказал свое крайнее неудовольствие... Реально у MAX 10 слишком много таких ограничений...

Цитата(andk @ Sep 25 2018, 20:48) *
If you use bank 1A for ADC, you cannot use the bank for GPIO.
sm.gif


Кстати, именно это ко мне не имеет отношения - я же использую ANAIN, а не пин из обычного банка, поэтому и не ожидал такой засады... Ладно если бы использование пина из банка отрубало этот банк, но когда сам факт включения ADC отрубает чуть ли не половину GPIOs, это уже ни в какие ворота не лезет...
andk
biggrin.gif
justontime
Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ?

Имел ввиду - код на С под NIOS...
Stewart Little
Цитата(justontime @ Sep 26 2018, 09:30) *
Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ?
Имел ввиду - код на С под NIOS...

Ловите весь проект целиком.
Кстати, какой версией квартуса пользуетесь? НЯП, в первых версиях, где появилась поддержка MAX 10, bsp для ниоса создавался с ошибкой:
если в проекте использовались прерывания от АЦП, то в bsp все равно соответствующий парамер имел значение -1.
Приходилось врукопашную его править.
Только после этого все работало.
justontime
Цитата(Stewart Little @ Sep 26 2018, 12:54) *
Ловите весь проект целиком.


Спасибо !!!

У меня версия 17.1 lite, там уже нормально ?

И еще вопрос, если можно - судя по коду, который удалось найти в интернете, в какой-то момент названия были изменены, типа вместо MODULAR_AD1C_0_SEQUENCER_CSR_BASE стало ADC_SEQUENCER_CSR_BASE
Это действительно так ?
DmitryR
Цитата(justontime @ Sep 26 2018, 10:30) *
Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ?

Имел ввиду - код на С под NIOS...


CODE
const float adc_vref = 3.0f;
const volatile int* const adc_sample_array = (int*) ADC_SAMPLE_STORE_CSR_BASE;
float adc_voltage;

*(unsigned*)ADC_SEQUENCER_CSR_BASE = 1;

adc_voltage = adc_vref * adc_sample_array[0] / 4095;

Драйвер ADC выкинул, экономия 600 байт.
Stewart Little
Цитата(justontime @ Sep 26 2018, 14:09) *
И еще вопрос, если можно - судя по коду, который удалось найти в интернете, в какой-то момент названия были изменены, типа вместо MODULAR_AD1C_0_SEQUENCER_CSR_BASE стало ADC_SEQUENCER_CSR_BASE
Это действительно так ?

ХЗ. Я всегда по актуальному bsp проверяю, как оно там называется.
justontime
Цитата(DmitryR @ Sep 26 2018, 14:17) *
CODE
const float adc_vref = 3.0f;
const volatile int* const adc_sample_array = (int*) ADC_SAMPLE_STORE_CSR_BASE;
float adc_voltage;

*(unsigned*)ADC_SEQUENCER_CSR_BASE = 1;

adc_voltage = adc_vref * adc_sample_array[0] / 4095;

Драйвер ADC выкинул, экономия 600 байт.

А не поделитесь ещё и инициализацией ?
DmitryR
Цитата(justontime @ Sep 26 2018, 16:10) *
А не поделитесь ещё и инициализацией ?

А это всё, там нет никакой инициализации. Записывается 1 в CSR, и он начинает работать.
justontime
Цитата(DmitryR @ Sep 26 2018, 16:57) *
А это всё, там нет никакой инициализации. Записывается 1 в CSR, и он начинает работать.

Блин, и оно при этом работает ! С ума сойти, это именно то, что мне нужно было, еще раз спасибо !

P.S. А как драйвер нафиг выбросить ?

P.P.S. Ну, и если еще кто столкнется - самым простым решением убрать прерывание ADC (которое просто все подвешивало, хотя специально не разрешал) было просто отключение соответствующей линии IRQ в Platform Designer'е
DmitryR
Драйвер отключается в BSP Edtor убиранием соответствующей галочки в закладке "Drivers".
justontime
Цитата(DmitryR @ Sep 27 2018, 08:12) *
Драйвер отключается в BSP Edtor убиранием соответствующей галочки в закладке "Drivers".

Только что уже сам нашел, но все равно спасибо ! Мне эти байты как раз очень нужны были sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.